X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Ftests%2Funit%2Falarming%2Ftest_alarming_service.py;h=20e98ea22271eaa44f0237f2957361c305f7d237;hb=HEAD;hp=e897cd9b6bf9fb5eb084d2d1d4f76641d8c65848;hpb=10e97a4c9c59e906d04ca1894972da3dcaf027ae;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 e897cd9..20e98ea 100644 --- a/osm_policy_module/tests/unit/alarming/test_alarming_service.py +++ b/osm_policy_module/tests/unit/alarming/test_alarming_service.py @@ -38,31 +38,76 @@ from osm_policy_module.core.database import VnfAlarmRepository 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): - alert_timeout = int(self.config.get('alert', 'timeout')) - 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/", timeout=alert_timeout) + if bool(self.config.get("alert", "enhanced_alarms")): + asyncio.run(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"}, + timeout=alert_timeout, + ) + else: + asyncio.run(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/", 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")): + asyncio.run(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"}, + timeout=alert_timeout, + ) + else: + asyncio.run(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/", 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")): + asyncio.run( + 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"}, + timeout=alert_timeout, + ) + else: + asyncio.run(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") @@ -70,9 +115,8 @@ 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", {})) + asyncio.run(service.handle_alarm("test_id", "unknown", {})) requests_post.assert_not_called() def _build_mock_alarm( @@ -81,6 +125,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 @@ -93,5 +139,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