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=be42d54170ca40d8d52e2c9fc8d888621585d6cf;hp=67956ebd32f67af7a013906e97f2ccae7570556f;hpb=4584f8e86a492d67d120bfea1195eff1475c0a65;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 67956eb..af672e6 100644 --- a/osm_policy_module/tests/unit/alarming/test_alarming_service.py +++ b/osm_policy_module/tests/unit/alarming/test_alarming_service.py @@ -39,29 +39,85 @@ class TestAlarmingService(TestCase): def setUp(self): self.config = Config() self.loop = asyncio.new_event_loop() + 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(self, database, requests_post, get_alarm): - mock_alarm = self._build_mock_alarm("test_id") + 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/") + 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 + ) - 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/") + @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 + ) - 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") + 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") @@ -69,7 +125,6 @@ class TestAlarmingService(TestCase): def test_handle_alarm_unknown_status(self, database, requests_post, get_alarm): 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", {})) requests_post.assert_not_called() @@ -80,6 +135,8 @@ class TestAlarmingService(TestCase): 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 @@ -92,5 +149,9 @@ class TestAlarmingService(TestCase): ok_action = mock.Mock() 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