Feature 10916 Remove VNF Instance from NS - NS Update
[osm/POL.git] / osm_policy_module / tests / unit / core / test_policy_agent.py
index 77c285d..f9f78cc 100644 (file)
@@ -136,6 +136,54 @@ class PolicyAgentTest(unittest.TestCase):
         autoscaling_handle_alarm.assert_called_with("test_alarm_uuid", "alarm")
         alarming_handle_alarm.assert_called_with("test_alarm_uuid", "alarm", content)
 
+    @mock.patch.object(CommonDbClient, "__init__", lambda *args, **kwargs: None)
+    @mock.patch("osm_policy_module.alarming.service.MonClient")
+    @mock.patch("osm_policy_module.alarming.service.LcmClient")
+    @mock.patch("osm_policy_module.autoscaling.service.MonClient")
+    @mock.patch("osm_policy_module.autoscaling.service.LcmClient")
+    @mock.patch.object(AutoscalingService, "delete_scaling_groups")
+    @mock.patch.object(AlarmingService, "delete_vnf_alarms")
+    def test_handle_vnf_terminated(
+        self,
+        delete_vnf_alarms,
+        delete_scaling_groups,
+        autoscaling_lcm_client,
+        autoscaling_mon_client,
+        alarming_lcm_client,
+        alarming_mon_client,
+    ):
+        async def mock_delete_scaling_groups(nsr_id, vnf_member_index):
+            pass
+
+        async def mock_delete_vnf_alarms(nsr_id, vnf_member_index):
+            pass
+
+        config = Config()
+        agent = PolicyModuleAgent(config, self.loop)
+        assert autoscaling_lcm_client.called
+        assert autoscaling_mon_client.called
+        assert alarming_lcm_client.called
+        assert alarming_mon_client.called
+        content = {
+            "nsr_id": "test_nsr_id",
+            "vnf_member_index": "1",
+            "operationState": "COMPLETED"
+        }
+        failed_content = {
+            "nsr_id": "test_nsr_id",
+            "vnf_member_index": "1",
+            "operationState": "FAILED"
+        }
+        delete_scaling_groups.side_effect = mock_delete_scaling_groups
+        delete_vnf_alarms.side_effect = mock_delete_vnf_alarms
+
+        self.loop.run_until_complete(agent._handle_vnf_terminated(content))
+        delete_scaling_groups.assert_called_with("test_nsr_id", "1")
+        delete_scaling_groups.reset_mock()
+
+        self.loop.run_until_complete(agent._handle_vnf_terminated(failed_content))
+        delete_scaling_groups.assert_not_called()
+
 
 if __name__ == "__main__":
     unittest.main()