X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Ftests%2Fintegration%2Ftest_policy_agent.py;h=65a657dc1e66ab8a99199a97f8e53437338f1f34;hb=refs%2Fchanges%2F64%2F7964%2F2;hp=68ab1f482f5c221529e35ba6e5444cb198a88565;hpb=a14cf16181c8b39f12c872c486e0b292c0068944;p=osm%2FPOL.git diff --git a/osm_policy_module/tests/integration/test_policy_agent.py b/osm_policy_module/tests/integration/test_policy_agent.py index 68ab1f4..65a657d 100644 --- a/osm_policy_module/tests/integration/test_policy_agent.py +++ b/osm_policy_module/tests/integration/test_policy_agent.py @@ -23,6 +23,7 @@ ## import asyncio import logging +import os import sys import unittest import uuid @@ -30,14 +31,15 @@ from unittest.mock import patch, Mock from kafka import KafkaProducer from osm_common.dbmongo import DbMongo -from peewee import SqliteDatabase +from playhouse.db_url import connect from osm_policy_module.common.common_db_client import CommonDbClient from osm_policy_module.common.mon_client import MonClient from osm_policy_module.core import database from osm_policy_module.core.agent import PolicyModuleAgent from osm_policy_module.core.config import Config -from osm_policy_module.core.database import ScalingGroup, ScalingAlarm, ScalingPolicy, ScalingCriteria +from osm_policy_module.core.database import ScalingGroup, ScalingAlarm, ScalingPolicy, ScalingCriteria, VnfAlarm, \ + AlarmAction log = logging.getLogger() log.level = logging.INFO @@ -319,7 +321,32 @@ vnfd_record_mock = { } } ], - "image": "cirros034" + "image": "cirros034", + "alarm": [ + { + "value": 20.0000, + "actions": { + "insufficient-data": [ + { + "url": "localhost:9090" + } + ], + "ok": [ + { + "url": "localhost:9090" + } + ], + "alarm": [ + { + "url": "localhost:9090" + } + ] + }, + "alarm-id": "alarm-1", + "operation": "LT", + "vnf-monitoring-param-ref": "cirros_vnf_memory_util" + } + ] } ], "monitoring-param": [ @@ -420,23 +447,23 @@ vnfd_record_mock = { } } -test_db = SqliteDatabase(':memory:') - -MODELS = [ScalingGroup, ScalingPolicy, ScalingCriteria, ScalingAlarm] +MODELS = [ScalingGroup, ScalingPolicy, ScalingCriteria, ScalingAlarm, VnfAlarm, AlarmAction] class PolicyModuleAgentTest(unittest.TestCase): def setUp(self): super() - database.db = test_db - test_db.bind(MODELS) - test_db.connect() - test_db.drop_tables(MODELS) - test_db.create_tables(MODELS) + database.db.initialize(connect('sqlite:///test_db.sqlite')) + database.db.bind(MODELS) + database.db.connect() + database.db.drop_tables(MODELS) + database.db.create_tables(MODELS) + database.db.close() self.loop = asyncio.new_event_loop() def tearDown(self): super() + os.remove('test_db.sqlite') @patch.object(DbMongo, 'db_connect', Mock()) @patch.object(KafkaProducer, '__init__') @@ -461,29 +488,29 @@ class PolicyModuleAgentTest(unittest.TestCase): create_alarm.side_effect = _test_configure_scaling_groups_create_alarm config = Config() agent = PolicyModuleAgent(config, self.loop) - self.loop.run_until_complete(agent._configure_scaling_groups("test_nsr_id")) - create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + self.loop.run_until_complete(agent.autoscaling_service.configure_scaling_groups("test_nsr_id")) + create_alarm.assert_any_call(metric_name='average_memory_utilization', ns_id='test_nsr_id', operation='GT', statistic='AVERAGE', threshold=80, vdu_name='cirros_ns-1-cirros_vnfd-VM-1', vnf_member_index='1') - create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + create_alarm.assert_any_call(metric_name='average_memory_utilization', ns_id='test_nsr_id', operation='LT', statistic='AVERAGE', threshold=20, vdu_name='cirros_ns-1-cirros_vnfd-VM-1', vnf_member_index='1') - create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + create_alarm.assert_any_call(metric_name='average_memory_utilization', ns_id='test_nsr_id', operation='GT', statistic='AVERAGE', threshold=80, vdu_name='cirros_ns-2-cirros_vnfd-VM-1', vnf_member_index='2') - create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + create_alarm.assert_any_call(metric_name='average_memory_utilization', ns_id='test_nsr_id', operation='LT', statistic='AVERAGE', @@ -494,6 +521,45 @@ class PolicyModuleAgentTest(unittest.TestCase): self.assertEqual(scaling_record.name, 'scale_cirros_vnfd-VM') self.assertEqual(scaling_record.nsr_id, 'test_nsr_id') + @patch.object(DbMongo, 'db_connect', Mock()) + @patch.object(KafkaProducer, '__init__') + @patch.object(MonClient, 'create_alarm') + @patch.object(CommonDbClient, 'get_vnfd') + @patch.object(CommonDbClient, 'get_nsr') + @patch.object(CommonDbClient, 'get_vnfr') + def test_configure_vnf_alarms(self, get_vnfr, get_nsr, get_vnfd, create_alarm, kafka_producer_init): + def _test_configure_scaling_groups_get_vnfr(*args, **kwargs): + if '1' in args[1]: + return vnfr_record_mocks[0] + if '2' in args[1]: + return vnfr_record_mocks[1] + + async def _test_configure_vnf_alarms_create_alarm(*args, **kwargs): + return uuid.uuid4() + + kafka_producer_init.return_value = None + get_vnfr.side_effect = _test_configure_scaling_groups_get_vnfr + get_nsr.return_value = nsr_record_mock + get_vnfd.return_value = vnfd_record_mock + create_alarm.side_effect = _test_configure_vnf_alarms_create_alarm + config = Config() + agent = PolicyModuleAgent(config, self.loop) + self.loop.run_until_complete(agent.alarming_service.configure_vnf_alarms("test_nsr_id")) + create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + ns_id='test_nsr_id', + operation='LT', + statistic='AVERAGE', + threshold=20.0, + vdu_name='cirros_ns-1-cirros_vnfd-VM-1', + vnf_member_index='1') + create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + ns_id='test_nsr_id', + operation='LT', + statistic='AVERAGE', + threshold=20.0, + vdu_name='cirros_ns-2-cirros_vnfd-VM-1', + vnf_member_index='2') + if __name__ == '__main__': unittest.main()