X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Ftest%2FOpenStack%2Fintegration%2Ftest_alarm_integration.py;h=fbec56c74e9e59db727d88fd3b157d6f4846a2cc;hb=93699898c51364cde193d8d441f4aed45670e7bf;hp=32532e13d423f6e90852805c857937abd9f7bb1d;hpb=ffe5a8e4e35d3fc7860eb9231618dc0e84e448b7;p=osm%2FMON.git diff --git a/osm_mon/test/OpenStack/integration/test_alarm_integration.py b/osm_mon/test/OpenStack/integration/test_alarm_integration.py index 32532e1..fbec56c 100644 --- a/osm_mon/test/OpenStack/integration/test_alarm_integration.py +++ b/osm_mon/test/OpenStack/integration/test_alarm_integration.py @@ -33,9 +33,8 @@ from kafka.errors import KafkaError from osm_mon.core.auth import AuthManager from osm_mon.core.database import DatabaseManager, VimCredentials -from osm_mon.core.message_bus.producer import KafkaProducer as prod from osm_mon.plugins.OpenStack import response -from osm_mon.plugins.OpenStack.Aodh import alarming +from osm_mon.plugins.OpenStack.Aodh import alarm_handler from osm_mon.plugins.OpenStack.common import Common log = logging.getLogger(__name__) @@ -44,6 +43,9 @@ mock_creds = VimCredentials() mock_creds.config = '{}' +@mock.patch.object(DatabaseManager, "save_alarm", mock.Mock()) +@mock.patch.object(Common, "get_auth_token", mock.Mock()) +@mock.patch.object(Common, "get_endpoint", mock.Mock()) class AlarmIntegrationTest(unittest.TestCase): def setUp(self): try: @@ -60,28 +62,27 @@ class AlarmIntegrationTest(unittest.TestCase): except KafkaError: self.skipTest('Kafka server not present.') # Set up common and alarming class instances - self.alarms = alarming.Alarming() + self.alarms = alarm_handler.OpenstackAlarmHandler() self.openstack_auth = Common() def tearDown(self): self.producer.close() self.req_consumer.close() - @mock.patch.object(Common, "get_auth_token", mock.Mock()) - @mock.patch.object(Common, "get_endpoint", mock.Mock()) + @mock.patch.object(Common, "perform_request") @mock.patch.object(AuthManager, 'get_credentials') - @mock.patch.object(prod, "update_alarm_response") - @mock.patch.object(alarming.Alarming, "update_alarm") - @mock.patch.object(response.OpenStack_Response, "generate_response") - def test_update_alarm_req(self, resp, update_alarm, update_resp, get_creds): + @mock.patch.object(alarm_handler.OpenstackAlarmHandler, "update_alarm") + @mock.patch.object(response.OpenStackResponseBuilder, "generate_response") + def test_update_alarm_req(self, resp, update_alarm, get_creds, perf_req): """Test Aodh update alarm request message from KafkaProducer.""" # Set-up message, producer and consumer for tests - payload = {"alarm_update_request": - {"correlation_id": 123, - "alarm_uuid": "alarm_id", - "metric_uuid": "metric_id"}} + payload = {"alarm_update_request": {"correlation_id": 123, + "alarm_uuid": "alarm_id", + "metric_uuid": "metric_id"}} get_creds.return_value = mock_creds + perf_req.return_value = type('obj', (object,), {'text': json.dumps({"metrics": {"cpu_util": "1"}})}) + resp.return_value = '' self.producer.send('alarm_request', key="update_alarm_request", value=json.dumps(payload)) @@ -89,138 +90,121 @@ class AlarmIntegrationTest(unittest.TestCase): for message in self.req_consumer: if message.key == "update_alarm_request": # Mock a valid alarm update - update_alarm.return_value = "alarm_id", True - self.alarms.alarming(message, 'test_id') + update_alarm.return_value = "alarm_id" + self.alarms.handle_message(message, 'test_id') # A response message is generated and sent via MON's producer resp.assert_called_with( 'update_alarm_response', alarm_id="alarm_id", cor_id=123, status=True) - update_resp.assert_called_with( - 'update_alarm_response', resp.return_value) return self.fail("No message received in consumer") - @mock.patch.object(DatabaseManager, "save_alarm", mock.Mock()) - @mock.patch.object(Common, "get_auth_token", mock.Mock()) - @mock.patch.object(Common, "get_endpoint", mock.Mock()) + @mock.patch.object(Common, "perform_request") @mock.patch.object(AuthManager, 'get_credentials') - @mock.patch.object(prod, "create_alarm_response") - @mock.patch.object(alarming.Alarming, "configure_alarm") - @mock.patch.object(response.OpenStack_Response, "generate_response") - def test_create_alarm_req(self, resp, config_alarm, create_resp, get_creds): + @mock.patch.object(alarm_handler.OpenstackAlarmHandler, "configure_alarm") + @mock.patch.object(response.OpenStackResponseBuilder, "generate_response") + def test_create_alarm_req(self, resp, config_alarm, get_creds, perf_req): """Test Aodh create alarm request message from KafkaProducer.""" # Set-up message, producer and consumer for tests - payload = {"alarm_create_request": - {"correlation_id": 123, - "alarm_name": "my_alarm", - "metric_name": "my_metric", - "resource_uuid": "my_resource", - "severity": "WARNING", - "threshold_value": 60, - "operation": "GT", - "vdu_name": "vdu", - "vnf_member_index": "1", - "ns_id": "1"}} + payload = {"alarm_create_request": {"correlation_id": 123, + "alarm_name": "my_alarm", + "metric_name": "cpu_utilization", + "resource_uuid": "my_resource", + "severity": "WARNING", + "threshold_value": 60, + "operation": "GT", + "vdu_name": "vdu", + "vnf_member_index": "1", + "ns_id": "1"}} get_creds.return_value = mock_creds - + perf_req.return_value = type('obj', (object,), {'text': json.dumps({"metrics": {"cpu_util": "1"}})}) + resp.return_value = '' self.producer.send('alarm_request', key="create_alarm_request", value=json.dumps(payload)) for message in self.req_consumer: if message.key == "create_alarm_request": # Mock a valid alarm creation - config_alarm.return_value = "alarm_id", True - self.alarms.alarming(message, 'test_id') + config_alarm.return_value = "alarm_id" + self.alarms.handle_message(message, 'test_id') # A response message is generated and sent via MON's produce resp.assert_called_with( 'create_alarm_response', status=True, alarm_id="alarm_id", cor_id=123) - create_resp.assert_called_with( - 'create_alarm_response', resp.return_value) return self.fail("No message received in consumer") - @mock.patch.object(Common, "get_auth_token", mock.Mock()) - @mock.patch.object(Common, "get_endpoint", mock.Mock()) + @mock.patch.object(Common, "perform_request") @mock.patch.object(AuthManager, 'get_credentials') - @mock.patch.object(prod, "list_alarm_response") - @mock.patch.object(alarming.Alarming, "list_alarms") - @mock.patch.object(response.OpenStack_Response, "generate_response") - def test_list_alarm_req(self, resp, list_alarm, list_resp, get_creds): + @mock.patch.object(alarm_handler.OpenstackAlarmHandler, "list_alarms") + @mock.patch.object(response.OpenStackResponseBuilder, "generate_response") + def test_list_alarm_req(self, resp, list_alarm, get_creds, perf_req): """Test Aodh list alarm request message from KafkaProducer.""" # Set-up message, producer and consumer for tests - payload = {"alarm_list_request": - {"correlation_id": 123, - "resource_uuid": "resource_id", }} + payload = {"alarm_list_request": {"correlation_id": 123, + "resource_uuid": "resource_id", }} self.producer.send('alarm_request', key="list_alarm_request", value=json.dumps(payload)) get_creds.return_value = mock_creds + perf_req.return_value = type('obj', (object,), {'text': json.dumps([])}) + resp.return_value = '' for message in self.req_consumer: if message.key == "list_alarm_request": # Mock an empty list generated by the request list_alarm.return_value = [] - self.alarms.alarming(message, 'test_id') + self.alarms.handle_message(message, 'test_id') # Response message is generated resp.assert_called_with( 'list_alarm_response', alarm_list=[], cor_id=123) - # Producer attempts to send the response message back to the SO - list_resp.assert_called_with( - 'list_alarm_response', resp.return_value) return self.fail("No message received in consumer") - @mock.patch.object(Common, "get_auth_token", mock.Mock()) - @mock.patch.object(Common, "get_endpoint", mock.Mock()) + @mock.patch.object(Common, "perform_request") @mock.patch.object(AuthManager, 'get_credentials') - @mock.patch.object(alarming.Alarming, "delete_alarm") - @mock.patch.object(prod, "delete_alarm_response") - @mock.patch.object(response.OpenStack_Response, "generate_response") - def test_delete_alarm_req(self, resp, del_resp, del_alarm, get_creds): + @mock.patch.object(alarm_handler.OpenstackAlarmHandler, "delete_alarm") + @mock.patch.object(response.OpenStackResponseBuilder, "generate_response") + def test_delete_alarm_req(self, resp, del_alarm, get_creds, perf_req): """Test Aodh delete alarm request message from KafkaProducer.""" # Set-up message, producer and consumer for tests - payload = {"alarm_delete_request": - {"correlation_id": 123, - "alarm_uuid": "alarm_id", }} + payload = {"alarm_delete_request": {"correlation_id": 123, + "alarm_uuid": "alarm_id", }} self.producer.send('alarm_request', key="delete_alarm_request", value=json.dumps(payload)) get_creds.return_value = mock_creds + perf_req.return_value = type('obj', (object,), {'text': json.dumps([])}) + resp.return_value = '' for message in self.req_consumer: if message.key == "delete_alarm_request": - self.alarms.alarming(message, 'test_id') + self.alarms.handle_message(message, 'test_id') # Response message is generated and sent by MON's producer resp.assert_called_with( 'delete_alarm_response', alarm_id="alarm_id", - status=del_alarm.return_value, cor_id=123) - del_resp.assert_called_with( - 'delete_alarm_response', resp.return_value) + status=True, cor_id=123) return self.fail("No message received in consumer") - @mock.patch.object(Common, "get_auth_token", mock.Mock()) - @mock.patch.object(Common, "get_endpoint", mock.Mock()) @mock.patch.object(AuthManager, 'get_credentials') - @mock.patch.object(alarming.Alarming, "update_alarm_state") + @mock.patch.object(alarm_handler.OpenstackAlarmHandler, "update_alarm_state") def test_ack_alarm_req(self, ack_alarm, get_creds): """Test Aodh acknowledge alarm request message from KafkaProducer.""" # Set-up message, producer and consumer for tests - payload = {"ack_details": - {"alarm_uuid": "alarm_id", }} + payload = {"ack_details": {"alarm_uuid": "alarm_id", }} self.producer.send('alarm_request', key="acknowledge_alarm", value=json.dumps(payload)) @@ -230,8 +214,8 @@ class AlarmIntegrationTest(unittest.TestCase): for message in self.req_consumer: if message.key == "acknowledge_alarm": - self.alarms.alarming(message, 'test_id') - ack_alarm.assert_called_with(mock.ANY, mock.ANY, 'alarm_id') + self.alarms.handle_message(message, 'test_id') + ack_alarm.assert_called_with(mock.ANY, mock.ANY, 'alarm_id', True) return self.fail("No message received in consumer")