X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FPLA.git;a=blobdiff_plain;f=osm_pla%2Ftest%2Ftest_mznModelGenerator.py;fp=osm_pla%2Ftest%2Ftest_mznModelGenerator.py;h=4f0423da75f1ad0a616f8c6da51ebce81ade5fdb;hp=ed571f4a52b4dd17c6272746407cf758147c60f6;hb=20fc3b7f54e37c3c971a8a29ae1a2d883125ac75;hpb=434a53df059664d745034a111d5ca79df681af11 diff --git a/osm_pla/test/test_mznModelGenerator.py b/osm_pla/test/test_mznModelGenerator.py index ed571f4..4f0423d 100644 --- a/osm_pla/test/test_mznModelGenerator.py +++ b/osm_pla/test/test_mznModelGenerator.py @@ -14,8 +14,10 @@ # limitations under the License. import datetime import logging + # import unittest from unittest import TestCase + # import random # from operator import itemgetter import re @@ -25,134 +27,286 @@ from jinja2 import Template from osm_pla.placement.mznplacement import MznModelGenerator test_ns_placement_data_str = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': 'one', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}, - {'vnf_id': 'two', 'vnf_price_per_vim': [20, 21, 22, 23, 24]}, - {'vnf_id': 'three', 'vnf_price_per_vim': [70, 71, 72, 73, 74]}, - {'vnf_id': 'four', 'vnf_price_per_vim': [40, 41, 42, 43, 44]}], - 'vld_desc': [{'cp_refs': ['one', 'two'], 'latency': 150, 'jitter': 30}, - {'cp_refs': ['two', 'three'], 'latency': 140, 'jitter': 30}, - {'cp_refs': ['three', 'four'], 'latency': 130, 'jitter': 30}], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [ + {"vnf_id": "one", "vnf_price_per_vim": [50, 51, 52, 53, 54]}, + {"vnf_id": "two", "vnf_price_per_vim": [20, 21, 22, 23, 24]}, + {"vnf_id": "three", "vnf_price_per_vim": [70, 71, 72, 73, 74]}, + {"vnf_id": "four", "vnf_price_per_vim": [40, 41, 42, 43, 44]}, + ], + "vld_desc": [ + {"cp_refs": ["one", "two"], "latency": 150, "jitter": 30}, + {"cp_refs": ["two", "three"], "latency": 140, "jitter": 30}, + {"cp_refs": ["three", "four"], "latency": 130, "jitter": 30}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } test_ns_placement_data_str_no_vld_constraints = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': 'one', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}, - {'vnf_id': 'two', 'vnf_price_per_vim': [20, 21, 22, 23, 24]}, - {'vnf_id': 'three', 'vnf_price_per_vim': [70, 71, 72, 73, 74]}, - {'vnf_id': 'four', 'vnf_price_per_vim': [40, 41, 42, 43, 44]}], - 'vld_desc': [{'cp_refs': ['one', 'two']}, - {'cp_refs': ['two', 'three']}, - {'cp_refs': ['three', 'four']}], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [ + {"vnf_id": "one", "vnf_price_per_vim": [50, 51, 52, 53, 54]}, + {"vnf_id": "two", "vnf_price_per_vim": [20, 21, 22, 23, 24]}, + {"vnf_id": "three", "vnf_price_per_vim": [70, 71, 72, 73, 74]}, + {"vnf_id": "four", "vnf_price_per_vim": [40, 41, 42, 43, 44]}, + ], + "vld_desc": [ + {"cp_refs": ["one", "two"]}, + {"cp_refs": ["two", "three"]}, + {"cp_refs": ["three", "four"]}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } test_ns_placement_data = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': '1', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}, - {'vnf_id': '2', 'vnf_price_per_vim': [20, 21, 22, 23, 24]}, - {'vnf_id': '3', 'vnf_price_per_vim': [70, 71, 72, 73, 74]}, - {'vnf_id': '4', 'vnf_price_per_vim': [40, 41, 42, 43, 44]}], - 'vld_desc': [{'cp_refs': ['1', '2'], 'latency': 150, 'jitter': 30}, - {'cp_refs': ['2', '3'], 'latency': 140, 'jitter': 30}, - {'cp_refs': ['3', '4'], 'latency': 130, 'jitter': 30}], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [ + {"vnf_id": "1", "vnf_price_per_vim": [50, 51, 52, 53, 54]}, + {"vnf_id": "2", "vnf_price_per_vim": [20, 21, 22, 23, 24]}, + {"vnf_id": "3", "vnf_price_per_vim": [70, 71, 72, 73, 74]}, + {"vnf_id": "4", "vnf_price_per_vim": [40, 41, 42, 43, 44]}, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 150, "jitter": 30}, + {"cp_refs": ["2", "3"], "latency": 140, "jitter": 30}, + {"cp_refs": ["3", "4"], "latency": 130, "jitter": 30}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } test_ns_placement_data_w_pinning = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': '1', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}, - {'vnf_id': '2', 'vnf_price_per_vim': [20, 21, 22, 23, 24], - 'vim_account': 'vimeeeeeeee_38f5_438d_b8ee_3f93b3531f87'}, - {'vnf_id': '3', 'vnf_price_per_vim': [70, 71, 72, 73, 74]}, - {'vnf_id': '4', 'vnf_price_per_vim': [40, 41, 42, 43, 44], - 'vim_account': 'vimcccccccc_ed84_4e49_b5df_a9d117bd731f'}], - 'vld_desc': [{'cp_refs': ['1', '2'], 'latency': 150, 'jitter': 30}, - {'cp_refs': ['2', '3'], 'latency': 140, 'jitter': 30}, - {'cp_refs': ['3', '4'], 'latency': 130, 'jitter': 30}], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [ + {"vnf_id": "1", "vnf_price_per_vim": [50, 51, 52, 53, 54]}, + { + "vnf_id": "2", + "vnf_price_per_vim": [20, 21, 22, 23, 24], + "vim_account": "vimeeeeeeee_38f5_438d_b8ee_3f93b3531f87", + }, + {"vnf_id": "3", "vnf_price_per_vim": [70, 71, 72, 73, 74]}, + { + "vnf_id": "4", + "vnf_price_per_vim": [40, 41, 42, 43, 44], + "vim_account": "vimcccccccc_ed84_4e49_b5df_a9d117bd731f", + }, + ], + "vld_desc": [ + {"cp_refs": ["1", "2"], "latency": 150, "jitter": 30}, + {"cp_refs": ["2", "3"], "latency": 140, "jitter": 30}, + {"cp_refs": ["3", "4"], "latency": 130, "jitter": 30}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } test_ns_placement_data_w_pinning_str = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': 'one', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}, - {'vnf_id': 'two', 'vnf_price_per_vim': [20, 21, 22, 23, 24], - 'vim_account': 'vimeeeeeeee_38f5_438d_b8ee_3f93b3531f87'}, - {'vnf_id': 'three', 'vnf_price_per_vim': [70, 71, 72, 73, 74]}, - {'vnf_id': 'four', 'vnf_price_per_vim': [40, 41, 42, 43, 44], - 'vim_account': 'vimcccccccc_ed84_4e49_b5df_a9d117bd731f'}], - 'vld_desc': [{'cp_refs': ['one', 'two'], 'latency': 150, 'jitter': 30}, - {'cp_refs': ['two', 'three'], 'latency': 140, 'jitter': 30}, - {'cp_refs': ['three', 'four'], 'latency': 130, 'jitter': 30}], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [ + {"vnf_id": "one", "vnf_price_per_vim": [50, 51, 52, 53, 54]}, + { + "vnf_id": "two", + "vnf_price_per_vim": [20, 21, 22, 23, 24], + "vim_account": "vimeeeeeeee_38f5_438d_b8ee_3f93b3531f87", + }, + {"vnf_id": "three", "vnf_price_per_vim": [70, 71, 72, 73, 74]}, + { + "vnf_id": "four", + "vnf_price_per_vim": [40, 41, 42, 43, 44], + "vim_account": "vimcccccccc_ed84_4e49_b5df_a9d117bd731f", + }, + ], + "vld_desc": [ + {"cp_refs": ["one", "two"], "latency": 150, "jitter": 30}, + {"cp_refs": ["two", "three"], "latency": 140, "jitter": 30}, + {"cp_refs": ["three", "four"], "latency": 130, "jitter": 30}, + ], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } test_ns_placement_data_str_no_vld = { - 'vim_accounts': ['vim' + vim_account.replace('-', '_') for vim_account in ['aaaaaaaa-38f5-438d-b8ee-3f93b3531f87', - 'bbbbbbbb-38f5-438d-b8ee-3f93b3531f87', - 'cccccccc-ed84-4e49-b5df-a9d117bd731f', - 'dddddddd-ed84-4e49-b5df-a9d117bd731f', - 'eeeeeeee-38f5-438d-b8ee-3f93b3531f87']], - 'trp_link_latency': [[0, 50, 100, 150, 200], [0, 0, 100, 150, 200], [0, 0, 0, 150, 200], [0, 0, 0, 0, 200], - [0, 0, 0, 0, 0]], - 'trp_link_jitter': [[0, 5, 10, 15, 20], [0, 0, 10, 15, 20], [0, 0, 0, 15, 20], [0, 0, 0, 0, 20], - [0, 0, 0, 0, 0]], - 'trp_link_price_list': [[0, 5, 6, 6, 7], [0, 0, 6, 6, 7], [0, 0, 0, 6, 7], [0, 0, 0, 0, 7], [0, 0, 0, 0, 0]], - 'ns_desc': [ - {'vnf_id': 'one', 'vnf_price_per_vim': [50, 51, 52, 53, 54]}], - 'vld_desc': [], - 'generator_data': {'file': __file__, 'time': datetime.datetime.now()} + "vim_accounts": [ + "vim" + vim_account.replace("-", "_") + for vim_account in [ + "aaaaaaaa-38f5-438d-b8ee-3f93b3531f87", + "bbbbbbbb-38f5-438d-b8ee-3f93b3531f87", + "cccccccc-ed84-4e49-b5df-a9d117bd731f", + "dddddddd-ed84-4e49-b5df-a9d117bd731f", + "eeeeeeee-38f5-438d-b8ee-3f93b3531f87", + ] + ], + "trp_link_latency": [ + [0, 50, 100, 150, 200], + [0, 0, 100, 150, 200], + [0, 0, 0, 150, 200], + [0, 0, 0, 0, 200], + [0, 0, 0, 0, 0], + ], + "trp_link_jitter": [ + [0, 5, 10, 15, 20], + [0, 0, 10, 15, 20], + [0, 0, 0, 15, 20], + [0, 0, 0, 0, 20], + [0, 0, 0, 0, 0], + ], + "trp_link_price_list": [ + [0, 5, 6, 6, 7], + [0, 0, 6, 6, 7], + [0, 0, 0, 6, 7], + [0, 0, 0, 0, 7], + [0, 0, 0, 0, 0], + ], + "ns_desc": [{"vnf_id": "one", "vnf_price_per_vim": [50, 51, 52, 53, 54]}], + "vld_desc": [], + "generator_data": {"file": __file__, "time": datetime.datetime.now()}, } expected_model_fragment = """ @@ -534,8 +688,11 @@ class TestMznModelGenerator(TestCase): mzn_model = mg.create_model(test_ns_placement_data_str) # so asserting exact content is difficult due to the datetime.now(), therefore we ignore the first lines - self.assertTrue(expected_model_fragment_str.replace('\n', '') in - mzn_model.replace('\n', ''), "faulty model generated") + self.assertTrue( + expected_model_fragment_str.replace("\n", "") + in mzn_model.replace("\n", ""), + "faulty model generated", + ) def test_create_model_no_vld_constraints(self): """ @@ -546,24 +703,33 @@ class TestMznModelGenerator(TestCase): mzn_model = mg.create_model(test_ns_placement_data_str_no_vld_constraints) # so asserting exact content is difficult due to the datetime.now(), therefore we ignore the first lines - self.assertTrue(expected_model_fragment_str_no_vld_constraints.replace('\n', '') in - mzn_model.replace('\n', ''), "faulty model generated") + self.assertTrue( + expected_model_fragment_str_no_vld_constraints.replace("\n", "") + in mzn_model.replace("\n", ""), + "faulty model generated", + ) def test_create_model_w_pinning(self): mg = MznModelGenerator(logging.getLogger(__name__)) mzn_model = mg.create_model(test_ns_placement_data_w_pinning_str) # so asserting exact content is difficult due to the datetime.now(), therefore we ignore the first lines - self.assertTrue(expected_model_fragment_w_pinning_str.replace('\n', '') in - mzn_model.replace('\n', ''), "faulty model generated") + self.assertTrue( + expected_model_fragment_w_pinning_str.replace("\n", "") + in mzn_model.replace("\n", ""), + "faulty model generated", + ) def test_create_model_no_vld(self): mg = MznModelGenerator(logging.getLogger(__name__)) mzn_model = mg.create_model(test_ns_placement_data_str_no_vld) # so asserting exact content is difficult due to the datetime.now(), therefore we ignore the first lines - self.assertTrue(expected_model_fragment_str_no_vld.replace('\n', '') in - mzn_model.replace('\n', ''), "faulty model generated") + self.assertTrue( + expected_model_fragment_str_no_vld.replace("\n", "") + in mzn_model.replace("\n", ""), + "faulty model generated", + ) def test__load_jinja_template(self): """ @@ -573,17 +739,21 @@ class TestMznModelGenerator(TestCase): """ mg = MznModelGenerator(logging.getLogger(__name__)) template = mg._load_jinja_template() # Note we use the default template - self.assertTrue(isinstance(template, Template), "failed to load jinja2 template") + self.assertTrue( + isinstance(template, Template), "failed to load jinja2 template" + ) def test_vim_account_replace(self): mg = MznModelGenerator(logging.getLogger(__name__)) nspd = test_ns_placement_data_str mzn_model = mg.create_model(nspd) - expected = '%This is the NETWORK RESOURCE MODEL' + '\n' + 'enum Vims = {' + '\n' - for val in test_ns_placement_data_str['vim_accounts']: - expected = expected + val.replace('-', '_') + ',\n' - expected = expected[:-2] + '}; % The vim-accounts' + expected = ( + "%This is the NETWORK RESOURCE MODEL" + "\n" + "enum Vims = {" + "\n" + ) + for val in test_ns_placement_data_str["vim_accounts"]: + expected = expected + val.replace("-", "_") + ",\n" + expected = expected[:-2] + "}; % The vim-accounts" res = re.findall(expected, mzn_model) self.assertEqual(1, len(res), "vim accounts didnt replace from - to _") @@ -591,10 +761,12 @@ class TestMznModelGenerator(TestCase): mg = MznModelGenerator(logging.getLogger(__name__)) mzn_model = mg.create_model(test_ns_placement_data_str) - expected = 'array\\[Vims, Vims\\] of int: trp_link_price_list = \\[' - for price_list in test_ns_placement_data_str['trp_link_price_list']: - expected = expected + '\\|' + (str(price_list)[1:-1]).replace(" ", "") + ',\n' - expected = expected + '\\|\\]; % Transport link price list' + expected = "array\\[Vims, Vims\\] of int: trp_link_price_list = \\[" + for price_list in test_ns_placement_data_str["trp_link_price_list"]: + expected = ( + expected + "\\|" + (str(price_list)[1:-1]).replace(" ", "") + ",\n" + ) + expected = expected + "\\|\\]; % Transport link price list" res = re.findall(expected, mzn_model) self.assertEqual(1, len(res), "price list is not correct") @@ -602,10 +774,12 @@ class TestMznModelGenerator(TestCase): mg = MznModelGenerator(logging.getLogger(__name__)) mzn_model = mg.create_model(test_ns_placement_data_str) - expected = 'array\\[Vims, Vims\\] of int: trp_link_latency = \\[' - for link_latency in test_ns_placement_data_str['trp_link_latency']: - expected = expected + '\\|' + (str(link_latency)[1:-1]).replace(" ", "") + ',\n' - expected = expected + '\\|\\]; % Transport link latency between data centers' + expected = "array\\[Vims, Vims\\] of int: trp_link_latency = \\[" + for link_latency in test_ns_placement_data_str["trp_link_latency"]: + expected = ( + expected + "\\|" + (str(link_latency)[1:-1]).replace(" ", "") + ",\n" + ) + expected = expected + "\\|\\]; % Transport link latency between data centers" res = re.findall(expected, mzn_model) self.assertEqual(1, len(res), "trp_link_latency values is not correct") @@ -613,10 +787,12 @@ class TestMznModelGenerator(TestCase): mg = MznModelGenerator(logging.getLogger(__name__)) mzn_model = mg.create_model(test_ns_placement_data_str) - expected = 'array\\[Vims, Vims\\] of int: trp_link_jitter = \\[' - for link_jitter in test_ns_placement_data_str['trp_link_jitter']: - expected = expected + '\\|' + (str(link_jitter)[1:-1]).replace(" ", "") + ',\n' - expected = expected + '\\|\\]; % Transport link jitter between data centers' + expected = "array\\[Vims, Vims\\] of int: trp_link_jitter = \\[" + for link_jitter in test_ns_placement_data_str["trp_link_jitter"]: + expected = ( + expected + "\\|" + (str(link_jitter)[1:-1]).replace(" ", "") + ",\n" + ) + expected = expected + "\\|\\]; % Transport link jitter between data centers" res = re.findall(expected, mzn_model) @@ -627,9 +803,13 @@ class TestMznModelGenerator(TestCase): mzn_model = mg.create_model(test_ns_placement_data_w_pinning_str) expected = "" - for price_list in test_ns_placement_data_w_pinning_str['ns_desc']: - expected += 'array\\[Vims\\] of int: vim_price_list_' + price_list.get('vnf_id') + " = " - temp = str(price_list.get('vnf_price_per_vim'))[1:-1].replace(" ", "") + for price_list in test_ns_placement_data_w_pinning_str["ns_desc"]: + expected += ( + "array\\[Vims\\] of int: vim_price_list_" + + price_list.get("vnf_id") + + " = " + ) + temp = str(price_list.get("vnf_price_per_vim"))[1:-1].replace(" ", "") expected += "\\[" + temp + "\\];\n" res = re.findall(expected, mzn_model) @@ -640,11 +820,17 @@ class TestMznModelGenerator(TestCase): mzn_model = mg.create_model(test_ns_placement_data_str) expected = "" - for pin_list in test_ns_placement_data_str['ns_desc']: - if pin_list.get('vim_account'): - expected += 'Vims: VNF' + pin_list.get('vnf_id') + ' = ' + pin_list.get('vim_account') + ';\n' + for pin_list in test_ns_placement_data_str["ns_desc"]: + if pin_list.get("vim_account"): + expected += ( + "Vims: VNF" + + pin_list.get("vnf_id") + + " = " + + pin_list.get("vim_account") + + ";\n" + ) else: - expected += 'var Vims: VNF' + pin_list.get('vnf_id') + ';\n' + expected += "var Vims: VNF" + pin_list.get("vnf_id") + ";\n" res = re.findall(expected, mzn_model) self.assertEqual(1, len(res), "mzn_model has no pinning") @@ -654,11 +840,17 @@ class TestMznModelGenerator(TestCase): mzn_model = mg.create_model(test_ns_placement_data_w_pinning_str) expected = "" - for pin_list in test_ns_placement_data_w_pinning_str['ns_desc']: - if pin_list.get('vim_account'): - expected += 'Vims: VNF' + pin_list.get('vnf_id') + ' = ' + pin_list.get('vim_account') + ';\n' + for pin_list in test_ns_placement_data_w_pinning_str["ns_desc"]: + if pin_list.get("vim_account"): + expected += ( + "Vims: VNF" + + pin_list.get("vnf_id") + + " = " + + pin_list.get("vim_account") + + ";\n" + ) else: - expected += 'var Vims: VNF' + pin_list.get('vnf_id') + ';\n' + expected += "var Vims: VNF" + pin_list.get("vnf_id") + ";\n" res = re.findall(expected, mzn_model) self.assertEqual(1, len(res), "mzn_model contains pinning") @@ -670,15 +862,23 @@ class TestMznModelGenerator(TestCase): expected_latency = "constraint trp_link_latency" expected_jitter = "constraint trp_link_jitter" latency_or_jitter_was_found = 0 - for l_o_j in test_ns_placement_data_str_no_vld_constraints['vld_desc']: - if l_o_j.get('latency') or l_o_j.get('jitter'): + for l_o_j in test_ns_placement_data_str_no_vld_constraints["vld_desc"]: + if l_o_j.get("latency") or l_o_j.get("jitter"): latency_or_jitter_was_found = 1 res_latency = re.findall(expected_latency, mzn_model) res_jitter = re.findall(expected_jitter, mzn_model) - self.assertEqual(0, latency_or_jitter_was_found, "Jitter or latency was found in the test input") - self.assertEqual(0, len(res_latency), "constraint trp_link_latency was found in mzn_model") - self.assertEqual(0, len(res_jitter), "constraint trp_link_latency was found in mzn_model") + self.assertEqual( + 0, + latency_or_jitter_was_found, + "Jitter or latency was found in the test input", + ) + self.assertEqual( + 0, len(res_latency), "constraint trp_link_latency was found in mzn_model" + ) + self.assertEqual( + 0, len(res_jitter), "constraint trp_link_latency was found in mzn_model" + ) def test__constraints_for_jitter_and_latency(self): mg = MznModelGenerator(logging.getLogger(__name__)) @@ -687,15 +887,35 @@ class TestMznModelGenerator(TestCase): expected_latency = "" expected_jitter = "" latency_or_jitter_was_found = 0 - for l_o_j in test_ns_placement_data_str['vld_desc']: - if not (l_o_j.get('latency') or l_o_j.get('jitter')): + for l_o_j in test_ns_placement_data_str["vld_desc"]: + if not (l_o_j.get("latency") or l_o_j.get("jitter")): latency_or_jitter_was_found = 1 - expected_latency += "constraint trp_link_latency" + "\\[VNF" + l_o_j.get('cp_refs')[0] + ", VNF" + \ - l_o_j.get('cp_refs')[1] + "\\] \\<= " + str(l_o_j.get('latency')) + ";\n\n" - - expected_jitter += "constraint trp_link_jitter" + "\\[VNF" + l_o_j.get('cp_refs')[0] + ", VNF" + \ - l_o_j.get('cp_refs')[1] + "\\] \\<= " + str(l_o_j.get('jitter')) + ";\n\n" + expected_latency += ( + "constraint trp_link_latency" + + "\\[VNF" + + l_o_j.get("cp_refs")[0] + + ", VNF" + + l_o_j.get("cp_refs")[1] + + "\\] \\<= " + + str(l_o_j.get("latency")) + + ";\n\n" + ) + + expected_jitter += ( + "constraint trp_link_jitter" + + "\\[VNF" + + l_o_j.get("cp_refs")[0] + + ", VNF" + + l_o_j.get("cp_refs")[1] + + "\\] \\<= " + + str(l_o_j.get("jitter")) + + ";\n\n" + ) res = re.findall(expected_latency + expected_jitter, mzn_model) - self.assertEqual(0, latency_or_jitter_was_found, "Jitter or latency was not found in the test input") + self.assertEqual( + 0, + latency_or_jitter_was_found, + "Jitter or latency was not found in the test input", + ) self.assertEqual(1, len(res), "faulty model generated")