X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Ftests%2Funit%2Falarming%2Ftest_alarming_service.py;h=563768fa00a1403e9b5f129635470d57d529222f;hb=3fbf2fbf60e3aed3ec7ca0134839f19bc0d733d4;hp=e897cd9b6bf9fb5eb084d2d1d4f76641d8c65848;hpb=a50fbeb634449657dedcd008ba4a25272ea6441a;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..563768f 100644 --- a/osm_policy_module/tests/unit/alarming/test_alarming_service.py +++ b/osm_policy_module/tests/unit/alarming/test_alarming_service.py @@ -39,30 +39,72 @@ 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): + 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") + 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')): + 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/", 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) - 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')): + 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") @@ -70,7 +112,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() @@ -81,6 +122,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 +136,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