|
4 | 4 | from uuid import uuid4
|
5 | 5 |
|
6 | 6 | from alerta.app import create_app, db
|
| 7 | +from tests.helpers.utils import mod_env |
7 | 8 |
|
8 | 9 |
|
9 | 10 | class ManagementTestCase(unittest.TestCase):
|
10 | 11 |
|
11 | 12 | def setUp(self):
|
12 | 13 |
|
| 14 | + self.maxDiff = None |
| 15 | + |
13 | 16 | test_config = {
|
14 | 17 | 'DEBUG': False,
|
15 | 18 | 'TESTING': True,
|
16 | 19 | 'AUTH_REQUIRED': False,
|
17 | 20 | # 'ACK_TIMEOUT': 2,
|
18 | 21 | # 'SHELVE_TIMEOUT': 3
|
19 | 22 | }
|
20 |
| - self.app = create_app(test_config) |
21 |
| - self.client = self.app.test_client() |
| 23 | + |
| 24 | + with mod_env( |
| 25 | + DELETE_EXPIRED_AFTER='2', |
| 26 | + DELETE_INFO_AFTER='3' |
| 27 | + ): |
| 28 | + self.app = create_app(test_config) |
| 29 | + self.client = self.app.test_client() |
22 | 30 |
|
23 | 31 | self.headers = {
|
24 | 32 | 'Content-type': 'application/json'
|
@@ -79,6 +87,16 @@ def random_resource():
|
79 | 87 | 'correlate': ['node_down', 'node_marginal', 'node_up']
|
80 | 88 | }
|
81 | 89 |
|
| 90 | + self.info_alert = { |
| 91 | + 'event': 'node_init', |
| 92 | + 'resource': random_resource(), |
| 93 | + 'environment': 'Production', |
| 94 | + 'service': ['Network'], |
| 95 | + 'severity': 'informational', |
| 96 | + 'correlate': ['node_down', 'node_marginal', 'node_up'], |
| 97 | + 'timeout': 3 |
| 98 | + } |
| 99 | + |
82 | 100 | def tearDown(self):
|
83 | 101 | db.destroy()
|
84 | 102 |
|
@@ -153,8 +171,14 @@ def test_housekeeping(self):
|
153 | 171 | # create an alert that should be unaffected
|
154 | 172 | response = self.client.post('/alert', data=json.dumps(self.ok_alert), headers=self.headers)
|
155 | 173 | self.assertEqual(response.status_code, 201)
|
| 174 | + |
| 175 | + # create an info alert that should be deleted |
| 176 | + response = self.client.post('/alert', data=json.dumps(self.info_alert), headers=self.headers) |
| 177 | + self.assertEqual(response.status_code, 201) |
156 | 178 | data = json.loads(response.data.decode('utf-8'))
|
157 | 179 |
|
| 180 | + info_id = data['id'] |
| 181 | + |
158 | 182 | # create an alert and ack it then shelve it
|
159 | 183 | response = self.client.post('/alert', data=json.dumps(self.acked_and_shelved_alert), headers=self.headers)
|
160 | 184 | self.assertEqual(response.status_code, 201)
|
@@ -184,6 +208,7 @@ def test_housekeeping(self):
|
184 | 208 |
|
185 | 209 | time.sleep(5)
|
186 | 210 |
|
| 211 | + # run housekeeping (1st time) |
187 | 212 | response = self.client.get('/management/housekeeping', headers=self.headers)
|
188 | 213 | self.assertEqual(response.status_code, 200)
|
189 | 214 | data = json.loads(response.data.decode('utf-8'))
|
@@ -232,3 +257,29 @@ def test_housekeeping(self):
|
232 | 257 | self.assertEqual(data['alert']['history'][2]['timeout'], 3)
|
233 | 258 | self.assertEqual(data['alert']['history'][3]['status'], 'ack')
|
234 | 259 | self.assertEqual(data['alert']['history'][3]['timeout'], 4)
|
| 260 | + |
| 261 | + response = self.client.get('/alert/' + info_id) |
| 262 | + self.assertEqual(response.status_code, 404) |
| 263 | + |
| 264 | + time.sleep(5) |
| 265 | + |
| 266 | + # run housekeeping (2nd time) |
| 267 | + response = self.client.get('/management/housekeeping', headers=self.headers) |
| 268 | + self.assertEqual(response.status_code, 200) |
| 269 | + data = json.loads(response.data.decode('utf-8')) |
| 270 | + self.assertEqual(data['count'], 1) |
| 271 | + self.assertListEqual(data['expired'], []) |
| 272 | + self.assertListEqual(data['unshelve'], []) |
| 273 | + self.assertListEqual(data['unack'], [acked_and_shelved_id]) |
| 274 | + |
| 275 | + response = self.client.get('/alert/' + expired_id) |
| 276 | + self.assertEqual(response.status_code, 404) |
| 277 | + |
| 278 | + # run housekeeping (3rd time) |
| 279 | + response = self.client.get('/management/housekeeping', headers=self.headers) |
| 280 | + self.assertEqual(response.status_code, 200) |
| 281 | + data = json.loads(response.data.decode('utf-8')) |
| 282 | + self.assertEqual(data['count'], 0) |
| 283 | + self.assertListEqual(data['expired'], []) |
| 284 | + self.assertListEqual(data['unshelve'], []) |
| 285 | + self.assertListEqual(data['unack'], []) |
0 commit comments