X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Ftests%2Fintegration%2Ftest_policy_agent.py;h=7ad9944ca5e020dd5358c12f93ded1d09daa64f4;hb=10be7c984475707be716708dfdd2d91a655158dc;hp=f7dc65a75d8cbb430c210f232dab84d91433fb2c;hpb=be75541d2f2306f8992f47bca8179210f858c593;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 f7dc65a..7ad9944 100644 --- a/osm_policy_module/tests/integration/test_policy_agent.py +++ b/osm_policy_module/tests/integration/test_policy_agent.py @@ -21,6 +21,7 @@ # For those usages not covered by the Apache License, Version 2.0 please # contact: bdiaz@whitestack.com or glavado@whitestack.com ## +import asyncio import logging import sys import unittest @@ -29,13 +30,14 @@ 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.db_client import DbClient +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.database import ScalingRecord, ScalingAlarm +from osm_policy_module.core.config import Config +from osm_policy_module.core.database import ScalingGroup, ScalingAlarm, ScalingPolicy, ScalingCriteria log = logging.getLogger() log.level = logging.INFO @@ -325,10 +327,28 @@ vnfd_record_mock = { "id": "cirros_vnf_memory_util", "name": "cirros_vnf_memory_util", "aggregation-type": "AVERAGE", - "vdu-monitoring-param-ref": "cirros_vnfd-VM_memory_util", - "vdu-ref": "cirros_vnfd-VM" + "vdu-monitoring-param": { + "vdu-monitoring-param-ref": "cirros_vnfd-VM_memory_util", + "vdu-ref": "cirros_vnfd-VM" + } + }, + { + "id": "haproxy_users", + "name": "haproxy_users", + "aggregation-type": "AVERAGE", + "vnf-metric": + {"vnf-metric-name-ref": "users"} } ], + "vdu-configuration": { + "juju": { + "charm": "testmetrics", + "proxy": True + }, + "metrics": { + "name": "users" + } + }, "description": "Simple VNF example with a cirros and a scaling group descriptor", "id": "cirros_vdu_scaling_vnf", "logo": "cirros-64.png", @@ -400,19 +420,18 @@ vnfd_record_mock = { } } -test_db = SqliteDatabase(':memory:') - -MODELS = [ScalingRecord, ScalingAlarm] +MODELS = [ScalingGroup, ScalingPolicy, ScalingCriteria, ScalingAlarm] 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://')) + database.db.bind(MODELS) + database.db.connect() + database.db.drop_tables(MODELS) + database.db.create_tables(MODELS) + self.loop = asyncio.new_event_loop() def tearDown(self): super() @@ -420,9 +439,9 @@ class PolicyModuleAgentTest(unittest.TestCase): @patch.object(DbMongo, 'db_connect', Mock()) @patch.object(KafkaProducer, '__init__') @patch.object(MonClient, 'create_alarm') - @patch.object(DbClient, 'get_vnfd') - @patch.object(DbClient, 'get_nsr') - @patch.object(DbClient, 'get_vnfr') + @patch.object(CommonDbClient, 'get_vnfd') + @patch.object(CommonDbClient, 'get_nsr') + @patch.object(CommonDbClient, 'get_vnfr') def test_configure_scaling_groups(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]: @@ -430,7 +449,7 @@ class PolicyModuleAgentTest(unittest.TestCase): if '2' in args[1]: return vnfr_record_mocks[1] - def _test_configure_scaling_groups_create_alarm(*args, **kwargs): + async def _test_configure_scaling_groups_create_alarm(*args, **kwargs): return uuid.uuid4() kafka_producer_init.return_value = None @@ -438,19 +457,40 @@ class PolicyModuleAgentTest(unittest.TestCase): get_nsr.return_value = nsr_record_mock get_vnfd.return_value = vnfd_record_mock create_alarm.side_effect = _test_configure_scaling_groups_create_alarm - agent = PolicyModuleAgent() - agent._configure_scaling_groups("test_nsr_id") - create_alarm.assert_any_call(metric_name='average_memory_utilization', + 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', ns_id='test_nsr_id', operation='GT', statistic='AVERAGE', threshold=80, - vdu_name='cirros_vnfd-VM', + vdu_name='cirros_ns-1-cirros_vnfd-VM-1', vnf_member_index='1') - scaling_record = ScalingRecord.get() + create_alarm.assert_any_call(metric_name='cirros_vnf_memory_util', + 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', + 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', + ns_id='test_nsr_id', + operation='LT', + statistic='AVERAGE', + threshold=20, + vdu_name='cirros_ns-2-cirros_vnfd-VM-1', + vnf_member_index='2') + scaling_record = ScalingGroup.get() self.assertEqual(scaling_record.name, 'scale_cirros_vnfd-VM') self.assertEqual(scaling_record.nsr_id, 'test_nsr_id') - self.assertIsNotNone(scaling_record) if __name__ == '__main__':