Refactors codebase
[osm/MON.git] / osm_mon / test / OpenStack / integration / test_alarm_integration.py
index 32532e1..fbec56c 100644 (file)
@@ -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")