X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_pla%2Ftest%2Ftest_mznmodels.py;fp=osm_pla%2Ftest%2Ftest_mznmodels.py;h=e39dfc692eb714cc8bd620372adacad60af76c78;hb=20fc3b7f54e37c3c971a8a29ae1a2d883125ac75;hp=b32ec9452cbb6dfc8603d42f6f1c6360fc3f2049;hpb=434a53df059664d745034a111d5ca79df681af11;p=osm%2FPLA.git diff --git a/osm_pla/test/test_mznmodels.py b/osm_pla/test/test_mznmodels.py index b32ec94..e39dfc6 100644 --- a/osm_pla/test/test_mznmodels.py +++ b/osm_pla/test/test_mznmodels.py @@ -1,4 +1,3 @@ - # Copyright 2019 ArctosLabs Scandinavia AB # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,7 +14,7 @@ # limitations under the License. # Note: -# This unit test file is generated - +# This unit test file is generated - # from: c:\Users\LG\Desktop\plarepo\documents\Test\pla_algo_test (pr_update_4).xlsx # by code generator: mzntestcasegenerator.py # at: 2019-12-04 09:26:38.412430 @@ -31,165 +30,785 @@ from osm_pla.placement.mznplacement import MznPlacementConductor, MznModelGenera class TestMznModels(TestCase): def test_mznmodel_scenario1_subtestcase1(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase2(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '33333333-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "33333333-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase3(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '22222222-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase4(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '44444444-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '22222222-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase5(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '88888888-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "88888888-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase6(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '99999999-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "99999999-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase7(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim11111111_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim11111111_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -197,149 +816,697 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim11111111_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim11111111_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario1_subtestcase8(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 120, 'jitter': 20}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase1(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase2(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '44444444-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '22222222-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '22222222-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase3(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '66666666-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '66666666-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase4(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase5(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -347,24 +1514,107 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim33333333_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario2_subtestcase6(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim66666666_38f5_438d_b8ee_3f93b3531f87'}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim66666666_38f5_438d_b8ee_3f93b3531f87", + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -372,49 +1622,223 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim66666666_38f5_438d_b8ee_3f93b3531f87'}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim66666666_38f5_438d_b8ee_3f93b3531f87", + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase1(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase2(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -422,74 +1846,343 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase3(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase4(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '88888888-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "88888888-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150']}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase5(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -497,124 +2190,627 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170'], 'vim_account': 'vim88888888_38f5_438d_b8ee_3f93b3531f87'}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87", + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario3_subtestcase6(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 3}, {'cp_refs': ['2', '3'], 'latency': 25, 'jitter': 6}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3}, + {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '99999999-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '77777777-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}] + expected_result = [ + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "99999999-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim77777777_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['10,15,30,30,100,70,40,150,150,150'], 'vim_account': 'vim99999999_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '3', 'vnf_price_per_vim': ['30,30,60,40,100,90,40,150,200,170']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"], + "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario4_subtestcase1(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '4'], 'latency': 50, 'jitter': 10}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 10}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}, {'vimAccountId': '00000000-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '4'}] + expected_result = [ + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + { + "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "4", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario4_subtestcase2(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '4'], 'latency': 50, 'jitter': 10}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 10}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '22222222-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '44444444-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}, {'vimAccountId': '66666666-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '4'}] + expected_result = [ + { + "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + { + "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "4", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim22222222_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario4_subtestcase3(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '4'], 'latency': 50, 'jitter': 10}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 10}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) # run the model - expected_result = [{'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '1'}, {'vimAccountId': '66666666-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '2'}, {'vimAccountId': '66666666-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '3'}, {'vimAccountId': '55555555-38f5-438d-b8ee-3f93b3531f87', 'member-vnf-index': '4'}] + expected_result = [ + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "1", + }, + { + "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "2", + }, + { + "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "3", + }, + { + "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87", + "member-vnf-index": "4", + }, + ] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim55555555_38f5_438d_b8ee_3f93b3531f87'}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87", + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content") + def test_mznmodel_scenario4_subtestcase4(self): # generate the model - ns_placement_data = {'vim_accounts': ['vim00000000_38f5_438d_b8ee_3f93b3531f87', 'vim11111111_38f5_438d_b8ee_3f93b3531f87', 'vim22222222_38f5_438d_b8ee_3f93b3531f87', 'vim33333333_38f5_438d_b8ee_3f93b3531f87', 'vim44444444_38f5_438d_b8ee_3f93b3531f87', 'vim55555555_38f5_438d_b8ee_3f93b3531f87', 'vim66666666_38f5_438d_b8ee_3f93b3531f87', 'vim77777777_38f5_438d_b8ee_3f93b3531f87', 'vim88888888_38f5_438d_b8ee_3f93b3531f87', 'vim99999999_38f5_438d_b8ee_3f93b3531f87'], - 'trp_link_latency' : [[0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0]], - 'trp_link_jitter' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0]], - 'trp_link_price_list' : [[0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0]], - 'ns_desc' : [{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim00000000_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}], - 'vld_desc' : [{'cp_refs': ['1', '2'], 'latency': 120, 'jitter': 20}, {'cp_refs': ['2', '4'], 'latency': 50, 'jitter': 10}, {'cp_refs': ['2', '3'], 'latency': 20, 'jitter': 10}], - 'generator_data': {'file': __file__ ,'time': datetime.datetime.now()} - } - + ns_placement_data = { + "vim_accounts": [ + "vim00000000_38f5_438d_b8ee_3f93b3531f87", + "vim11111111_38f5_438d_b8ee_3f93b3531f87", + "vim22222222_38f5_438d_b8ee_3f93b3531f87", + "vim33333333_38f5_438d_b8ee_3f93b3531f87", + "vim44444444_38f5_438d_b8ee_3f93b3531f87", + "vim55555555_38f5_438d_b8ee_3f93b3531f87", + "vim66666666_38f5_438d_b8ee_3f93b3531f87", + "vim77777777_38f5_438d_b8ee_3f93b3531f87", + "vim88888888_38f5_438d_b8ee_3f93b3531f87", + "vim99999999_38f5_438d_b8ee_3f93b3531f87", + ], + "trp_link_latency": [ + [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767], + [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767], + [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767], + [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0], + ], + "trp_link_jitter": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0], + ], + "trp_link_price_list": [ + [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767], + [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767], + [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767], + [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15], + [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0], + ], + "ns_desc": [ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim00000000_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20}, + {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10}, + {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, + } + mg = MznModelGenerator(logging.getLogger(__name__)) test_mzn_model = mg.create_model(ns_placement_data) @@ -622,10 +2818,32 @@ class TestMznModels(TestCase): expected_result = [{}] mpc = MznPlacementConductor(logging.getLogger(__name__)) - placement = mpc._run_placement_model(mzn_model=test_mzn_model, ns_desc=[{'vnf_id': '1', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim00000000_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '2', 'vnf_price_per_vim': ['15,20,40,40,110,80,50,110,160,210']}, {'vnf_id': '3', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200'], 'vim_account': 'vim44444444_38f5_438d_b8ee_3f93b3531f87'}, {'vnf_id': '4', 'vnf_price_per_vim': ['5,10,30,30,100,70,40,100,150,200']}]) + placement = mpc._run_placement_model( + mzn_model=test_mzn_model, + ns_desc=[ + { + "vnf_id": "1", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim00000000_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "2", + "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"], + }, + { + "vnf_id": "3", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87", + }, + { + "vnf_id": "4", + "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"], + }, + ], + ) # sort the result to ease assert with expected result if not placement[0]: sorted_placement = placement else: - sorted_placement = sorted(placement, key=lambda k: k['member-vnf-index']) - self.assertEqual(expected_result, sorted_placement, 'Faulty syntax or content') \ No newline at end of file + sorted_placement = sorted(placement, key=lambda k: k["member-vnf-index"]) + self.assertEqual(expected_result, sorted_placement, "Faulty syntax or content")