X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Ftests%2Funit%2Falarming%2Ftest_alarming_service.py;h=af672e6a7413a4869ad502ee63f1d75503a0f31d;hb=c72b9d5f574d51608e4810294004414c7a9c02fe;hp=4edfa862564123291a78af382219106d400981e1;hpb=f7451f8879d188c9fef9c976d82aa39141601938;p=osm%2FPOL.git diff --git a/osm_policy_module/tests/unit/alarming/test_alarming_service.py b/osm_policy_module/tests/unit/alarming/test_alarming_service.py index 4edfa86..af672e6 100644 --- a/osm_policy_module/tests/unit/alarming/test_alarming_service.py +++ b/osm_policy_module/tests/unit/alarming/test_alarming_service.py @@ -36,56 +36,122 @@ from osm_policy_module.core.database import VnfAlarmRepository @mock.patch.object(MonClient, "__init__", lambda *args, **kwargs: None) @mock.patch.object(CommonDbClient, "__init__", lambda *args, **kwargs: None) class TestAlarmingService(TestCase): - def setUp(self): self.config = Config() self.loop = asyncio.new_event_loop() - - @mock.patch.object(VnfAlarmRepository, 'get') - @mock.patch('requests.post') - @mock.patch('osm_policy_module.core.database.db') - def test_handle_alarm(self, database, requests_post, get_alarm): - mock_alarm = self._build_mock_alarm('test_id') + self.payload = {"notify_details": {"alarm_number": 0}} + self.headers = {"content-type": "application/json"} + + @mock.patch.object(VnfAlarmRepository, "get") + @mock.patch("requests.post") + @mock.patch("osm_policy_module.core.database.db") + def test_handle_alarm_suppression(self, database, requests_post, get_alarm): + alert_timeout = int(self.config.get("alert", "timeout")) + mock_alarm = self._build_mock_alarm("test_id", last_action="ok") get_alarm.return_value = mock_alarm - service = AlarmingService(self.config) - self.loop.run_until_complete(service.handle_alarm('test_id', 'alarm', {})) - requests_post.assert_called_once_with(json='{}', url='http://alarm-url/') - - requests_post.reset_mock() - self.loop.run_until_complete(service.handle_alarm('test_id', 'ok', {})) - requests_post.assert_called_once_with(json='{}', url='http://ok-url/') - - requests_post.reset_mock() - self.loop.run_until_complete(service.handle_alarm('test_id', 'insufficient-data', {})) - requests_post.assert_called_once_with(json='{}', url='http://insufficient-data-url/') - - @mock.patch.object(VnfAlarmRepository, 'get') - @mock.patch('requests.post') - @mock.patch('osm_policy_module.core.database.db') + if bool(self.config.get("alert", "enhanced_alarms")): + self.loop.run_until_complete( + service.handle_alarm("test_id", "alarm", self.payload) + ) + requests_post.assert_called_once_with( + url="http://alarm-url/", + data='{"notify_details": {"alarm_number": 1}}', + headers={"content-type": "application/json"}, + verify=False, + timeout=alert_timeout, + ) + else: + self.loop.run_until_complete(service.handle_alarm("test_id", "alarm", {})) + requests_post.assert_called_once_with( + json="{}", url="http://alarm-url/", timeout=alert_timeout + ) + + @mock.patch.object(VnfAlarmRepository, "get") + @mock.patch("requests.post") + @mock.patch("osm_policy_module.core.database.db") + def test_handle_ok_suppression(self, database, requests_post, get_alarm): + alert_timeout = int(self.config.get("alert", "timeout")) + mock_alarm = self._build_mock_alarm("test_id", last_action="alarm") + get_alarm.return_value = mock_alarm + service = AlarmingService(self.config) + if bool(self.config.get("alert", "enhanced_alarms")): + self.loop.run_until_complete( + service.handle_alarm("test_id", "ok", self.payload) + ) + requests_post.assert_called_once_with( + url="http://ok-url/", + data='{"notify_details": {"alarm_number": 0}}', + headers={"content-type": "application/json"}, + verify=False, + timeout=alert_timeout, + ) + else: + self.loop.run_until_complete(service.handle_alarm("test_id", "ok", {})) + requests_post.assert_called_once_with( + json="{}", url="http://ok-url/", timeout=alert_timeout + ) + + @mock.patch.object(VnfAlarmRepository, "get") + @mock.patch("requests.post") + @mock.patch("osm_policy_module.core.database.db") + def test_handle_insufficientalarm(self, database, requests_post, get_alarm): + alert_timeout = int(self.config.get("alert", "timeout")) + mock_alarm = self._build_mock_alarm("test_id") + get_alarm.return_value = mock_alarm + service = AlarmingService(self.config) + if bool(self.config.get("alert", "enhanced_alarms")): + self.loop.run_until_complete( + service.handle_alarm("test_id", "insufficient-data", self.payload) + ) + requests_post.assert_called_once_with( + url="http://insufficient-data-url/", + data='{"notify_details": {"alarm_number": 0}}', + headers={"content-type": "application/json"}, + verify=False, + timeout=alert_timeout, + ) + else: + self.loop.run_until_complete( + service.handle_alarm("test_id", "insufficient-data", {}) + ) + requests_post.assert_called_once_with( + json="{}", url="http://insufficient-data-url/", timeout=alert_timeout + ) + + @mock.patch.object(VnfAlarmRepository, "get") + @mock.patch("requests.post") + @mock.patch("osm_policy_module.core.database.db") def test_handle_alarm_unknown_status(self, database, requests_post, get_alarm): - mock_alarm = self._build_mock_alarm('test_id') + mock_alarm = self._build_mock_alarm("test_id") get_alarm.return_value = mock_alarm - service = AlarmingService(self.config) - self.loop.run_until_complete(service.handle_alarm('test_id', 'unknown', {})) + self.loop.run_until_complete(service.handle_alarm("test_id", "unknown", {})) requests_post.assert_not_called() - def _build_mock_alarm(self, - alarm_id='test_id', - alarm_url='http://alarm-url/', - insufficient_data_url='http://insufficient-data-url/', - ok_url='http://ok-url/'): + def _build_mock_alarm( + self, + alarm_id="test_id", + alarm_url="http://alarm-url/", + insufficient_data_url="http://insufficient-data-url/", + ok_url="http://ok-url/", + id_suffix=0, + last_action="insufficient-data", + ): mock_alarm = mock.Mock() mock_alarm.alarm_id = alarm_id insufficient_data_action = mock.Mock() - insufficient_data_action.type = 'insufficient-data' + insufficient_data_action.type = "insufficient-data" insufficient_data_action.url = insufficient_data_url alarm_action = mock.Mock() - alarm_action.type = 'alarm' + alarm_action.type = "alarm" alarm_action.url = alarm_url ok_action = mock.Mock() - ok_action.type = 'ok' + ok_action.type = "ok" ok_action.url = ok_url + mock_alarm.ok_ack = False + mock_alarm.alarm_ack = False + mock_alarm.id_suffix = id_suffix + mock_alarm.last_action = last_action mock_alarm.actions = [insufficient_data_action, alarm_action, ok_action] return mock_alarm