X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwautoscaler%2Ftest%2Futest_autoscaler_dts.py;h=d40c285307a1218c4a8c1e32068f29ca3a4e6f9f;hb=f314b4af9744068a7ed7a6a6314220c3aa857523;hp=c00ca11f7347b934545fc586b2067657580c2606;hpb=6f1a3fe149e4a6b9803382cb299c902f4cf58ec9;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwautoscaler/test/utest_autoscaler_dts.py b/rwlaunchpad/plugins/rwautoscaler/test/utest_autoscaler_dts.py index c00ca11f..d40c2853 100644 --- a/rwlaunchpad/plugins/rwautoscaler/test/utest_autoscaler_dts.py +++ b/rwlaunchpad/plugins/rwautoscaler/test/utest_autoscaler_dts.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 -# + +# # Copyright 2016 RIFT.IO Inc # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,32 +19,35 @@ import argparse import asyncio +import gi +import logging import os +import random import sys import unittest -import random - import xmlrunner + import unittest.mock as mock import rift.test.dts import rift.tasklets.rwautoscaler.engine as engine -import gi gi.require_version('RwDtsYang', '1.0') from gi.repository import ( RwNsrYang, NsrYang, - NsdYang, + ProjectNsdYang as NsdYang, RwLaunchpadYang as launchpadyang, RwVnfrYang, - RwVnfdYang, - RwNsdYang, + RwProjectVnfdYang as RwVnfdYang, + RwProjectNsdYang as RwNsdYang, VnfrYang ) +gi.require_version('RwKeyspec', '1.0') +from gi.repository.RwKeyspec import quoted_key -ScalingCriteria = NsdYang.YangData_Nsd_NsdCatalog_Nsd_ScalingGroupDescriptor_ScalingPolicy_ScalingCriteria -ScalingPolicy = NsdYang.YangData_Nsd_NsdCatalog_Nsd_ScalingGroupDescriptor_ScalingPolicy +ScalingCriteria = NsdYang.YangData_RwProject_Project_NsdCatalog_Nsd_ScalingGroupDescriptor_ScalingPolicy_ScalingCriteria +ScalingPolicy = NsdYang.YangData_RwProject_Project_NsdCatalog_Nsd_ScalingGroupDescriptor_ScalingPolicy class MockDelegate(engine.ScalingCriteria.Delegate): @@ -68,12 +72,12 @@ class MockStore(): def __init__(self, aggregation_type="AVERAGE", legacy=False): self.aggregation_type = aggregation_type self.legacy = legacy - self.threshold_time = 3 + self.threshold_time = 2 def __call__(self): store = mock.MagicMock() - mock_vnfd = RwVnfdYang.YangData_Vnfd_VnfdCatalog_Vnfd.from_dict({ + mock_vnfd = RwVnfdYang.YangData_RwProject_Project_VnfdCatalog_Vnfd.from_dict({ 'id': "1", 'monitoring_param': [ {'description': 'no of ping requests', @@ -98,12 +102,12 @@ class MockStore(): store.get_vnfd = mock.MagicMock(return_value=mock_vnfd) - mock_vnfr = RwVnfrYang.YangData_Vnfr_VnfrCatalog_Vnfr.from_dict({'id': '1'}) - mock_vnfr.vnfd = VnfrYang.YangData_Vnfr_VnfrCatalog_Vnfr_Vnfd.from_dict({'id': '1'}) + mock_vnfr = RwVnfrYang.YangData_RwProject_Project_VnfrCatalog_Vnfr.from_dict({'id': '1'}) + mock_vnfr.vnfd = VnfrYang.YangData_RwProject_Project_VnfrCatalog_Vnfr_Vnfd.from_dict({'id': '1'}) store.get_vnfr = mock.MagicMock(return_value=mock_vnfr) - mock_nsr = RwNsrYang.YangData_Nsr_NsInstanceOpdata_Nsr.from_dict({ + mock_nsr = RwNsrYang.YangData_RwProject_Project_NsInstanceOpdata_Nsr.from_dict({ 'ns_instance_config_ref': "1", 'name_ref': "Foo", 'nsd_ref': '1', @@ -138,8 +142,10 @@ class MockStore(): scale_in_val = 100 scale_out_val = 200 - mock_nsd = RwNsdYang.YangData_Nsd_NsdCatalog_Nsd.from_dict({ + mock_nsd = RwNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd.from_dict({ 'id': '1', + 'name': 'mock', + 'short_name': 'm', 'monitoring_param': (monp_cfg if not self.legacy else []), 'constituent_vnfd': [{'member_vnf_index': 1, 'start_by_default': True, @@ -206,17 +212,17 @@ class AutoscalarDtsTestCase(rift.test.dts.AbstractDTSTest): def _populate_mock_values(self, criterias, nsr_id, floor, ceil): # Mock publish # Verify Scale in AND operator - NsMonParam = NsrYang.YangData_Nsr_NsInstanceOpdata_Nsr_MonitoringParam + NsMonParam = NsrYang.YangData_RwProject_Project_NsInstanceOpdata_Nsr_MonitoringParam publisher = rift.test.dts.DescriptorPublisher(self.log, self.dts, self.loop) for criteria in criterias: monp_id = criteria.ns_monitoring_param_ref - w_xpath = "D,/nsr:ns-instance-opdata/nsr:nsr" - w_xpath = w_xpath + "[nsr:ns-instance-config-ref='{}']/nsr:monitoring-param".format(nsr_id) - xpath = w_xpath + "[nsr:id ='{}']".format(monp_id) + w_xpath = "D,/rw-project:project/nsr:ns-instance-opdata/nsr:nsr" + w_xpath = w_xpath + "[nsr:ns-instance-config-ref={}]/nsr:monitoring-param".format(quoted_key(nsr_id)) + xpath = w_xpath + "[nsr:id={}]".format(quoted_key(monp_id)) - for i in range(self.mock_store.threshold_time + 1): + for i in range(self.mock_store.threshold_time + 2): value = random.randint(floor, ceil) monp = NsMonParam.from_dict({ @@ -259,7 +265,7 @@ class AutoscalarDtsTestCase(rift.test.dts.AbstractDTSTest): yield from self._populate_mock_values(policy.scaling_criteria, nsr_id, floor, ceil) assert mock_delegate.scale_in_called == 0 - # Test 2: AND operation + # Test 2: AND operation yield from scale_out(policy) yield from self._populate_mock_values(policy.scaling_criteria, nsr_id, floor, ceil) assert mock_delegate.scale_in_called == 1 @@ -283,13 +289,13 @@ class AutoscalarDtsTestCase(rift.test.dts.AbstractDTSTest): assert mock_delegate.scale_in_called == 1 @rift.test.dts.async_test - def _test_scale_out(self): + def test_scale_out(self): """ Tests scale out Asserts: 1. Scale out 2. Scale out doesn't happen during cooldown - 3. AND operation + 3. AND operation 4. OR operation. """ store = self.mock_store() @@ -334,6 +340,7 @@ class AutoscalarDtsTestCase(rift.test.dts.AbstractDTSTest): def main(): + logging.basicConfig(format='TEST %(message)s') runner = xmlrunner.XMLTestRunner(output=os.environ["RIFT_MODULE_TEST"]) parser = argparse.ArgumentParser() @@ -343,6 +350,9 @@ def main(): if args.no_runner: runner = None + # Set the global logging level + logging.getLogger().setLevel(logging.DEBUG if args.verbose else logging.ERROR) + unittest.main(testRunner=runner, argv=[sys.argv[0]] + unittest_args)