e39dfc692eb714cc8bd620372adacad60af76c78
1 # Copyright 2019 ArctosLabs Scandinavia AB
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
17 # This unit test file is generated -
18 # from: c:\Users\LG\Desktop\plarepo\documents\Test\pla_algo_test (pr_update_4).xlsx
19 # by code generator: mzntestcasegenerator.py
20 # at: 2019-12-04 09:26:38.412430
25 from unittest
import TestCase
27 from osm_pla
.placement
.mznplacement
import MznPlacementConductor
, MznModelGenerator
30 class TestMznModels(TestCase
):
31 def test_mznmodel_scenario1_subtestcase1(self
):
35 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
36 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
37 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
38 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
39 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
40 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
41 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
42 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
43 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
44 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
47 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
48 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
49 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
50 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
51 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
52 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
53 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
54 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
55 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
56 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
59 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
60 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
61 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
62 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
63 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
64 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
65 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
66 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
67 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
68 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
70 "trp_link_price_list": [
71 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
72 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
73 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
74 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
75 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
76 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
77 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
78 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
79 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
80 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
85 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
89 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
93 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
97 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
98 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
100 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
103 mg
= MznModelGenerator(logging
.getLogger(__name__
))
104 test_mzn_model
= mg
.create_model(ns_placement_data
)
109 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
110 "member-vnf-index": "1",
113 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
114 "member-vnf-index": "2",
117 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
118 "member-vnf-index": "3",
122 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
123 placement
= mpc
._run
_placement
_model
(
124 mzn_model
=test_mzn_model
,
128 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
132 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
136 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
140 # sort the result to ease assert with expected result
142 sorted_placement
= placement
144 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
145 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
147 def test_mznmodel_scenario1_subtestcase2(self
):
149 ns_placement_data
= {
151 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
152 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
153 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
154 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
155 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
156 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
157 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
158 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
159 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
160 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
162 "trp_link_latency": [
163 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
164 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
165 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
166 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
167 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
168 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
169 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
170 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
171 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
172 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
175 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
176 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
177 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
178 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
179 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
180 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
181 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
182 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
183 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
184 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
186 "trp_link_price_list": [
187 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
188 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
189 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
190 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
191 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
192 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
193 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
194 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
195 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
196 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
201 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
202 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
206 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
210 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
214 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
215 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
217 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
220 mg
= MznModelGenerator(logging
.getLogger(__name__
))
221 test_mzn_model
= mg
.create_model(ns_placement_data
)
226 "vimAccountId": "33333333-38f5-438d-b8ee-3f93b3531f87",
227 "member-vnf-index": "1",
230 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
231 "member-vnf-index": "2",
234 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
235 "member-vnf-index": "3",
239 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
240 placement
= mpc
._run
_placement
_model
(
241 mzn_model
=test_mzn_model
,
245 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
246 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
250 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
254 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
258 # sort the result to ease assert with expected result
260 sorted_placement
= placement
262 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
263 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
265 def test_mznmodel_scenario1_subtestcase3(self
):
267 ns_placement_data
= {
269 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
270 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
271 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
272 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
273 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
274 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
275 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
276 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
277 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
278 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
280 "trp_link_latency": [
281 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
282 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
283 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
284 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
285 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
286 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
287 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
288 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
289 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
290 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
293 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
294 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
295 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
296 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
297 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
298 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
299 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
300 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
301 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
302 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
304 "trp_link_price_list": [
305 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
306 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
307 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
308 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
309 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
310 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
311 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
312 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
313 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
314 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
319 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
320 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
324 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
328 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
332 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
333 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
335 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
338 mg
= MznModelGenerator(logging
.getLogger(__name__
))
339 test_mzn_model
= mg
.create_model(ns_placement_data
)
344 "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87",
345 "member-vnf-index": "1",
348 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
349 "member-vnf-index": "2",
352 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
353 "member-vnf-index": "3",
357 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
358 placement
= mpc
._run
_placement
_model
(
359 mzn_model
=test_mzn_model
,
363 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
364 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
368 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
372 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
376 # sort the result to ease assert with expected result
378 sorted_placement
= placement
380 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
381 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
383 def test_mznmodel_scenario1_subtestcase4(self
):
385 ns_placement_data
= {
387 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
388 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
389 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
390 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
391 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
392 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
393 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
394 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
395 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
396 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
398 "trp_link_latency": [
399 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
400 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
401 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
402 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
403 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
404 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
405 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
406 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
407 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
408 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
411 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
412 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
413 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
414 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
415 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
416 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
417 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
418 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
419 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
420 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
422 "trp_link_price_list": [
423 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
424 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
425 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
426 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
427 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
428 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
429 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
430 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
431 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
432 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
437 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
438 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
442 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
446 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
450 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
451 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
453 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
456 mg
= MznModelGenerator(logging
.getLogger(__name__
))
457 test_mzn_model
= mg
.create_model(ns_placement_data
)
462 "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87",
463 "member-vnf-index": "1",
466 "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87",
467 "member-vnf-index": "2",
470 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
471 "member-vnf-index": "3",
475 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
476 placement
= mpc
._run
_placement
_model
(
477 mzn_model
=test_mzn_model
,
481 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
482 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
486 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
490 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
494 # sort the result to ease assert with expected result
496 sorted_placement
= placement
498 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
499 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
501 def test_mznmodel_scenario1_subtestcase5(self
):
503 ns_placement_data
= {
505 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
506 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
507 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
508 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
509 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
510 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
511 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
512 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
513 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
514 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
516 "trp_link_latency": [
517 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
518 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
519 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
520 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
521 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
522 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
523 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
524 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
525 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
526 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
529 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
530 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
531 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
532 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
533 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
534 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
535 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
536 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
537 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
538 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
540 "trp_link_price_list": [
541 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
542 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
543 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
544 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
545 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
546 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
547 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
548 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
549 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
550 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
555 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
556 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
560 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
564 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
568 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
569 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
571 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
574 mg
= MznModelGenerator(logging
.getLogger(__name__
))
575 test_mzn_model
= mg
.create_model(ns_placement_data
)
580 "vimAccountId": "88888888-38f5-438d-b8ee-3f93b3531f87",
581 "member-vnf-index": "1",
584 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
585 "member-vnf-index": "2",
588 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
589 "member-vnf-index": "3",
593 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
594 placement
= mpc
._run
_placement
_model
(
595 mzn_model
=test_mzn_model
,
599 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
600 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
604 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
608 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
612 # sort the result to ease assert with expected result
614 sorted_placement
= placement
616 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
617 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
619 def test_mznmodel_scenario1_subtestcase6(self
):
621 ns_placement_data
= {
623 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
624 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
625 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
626 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
627 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
628 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
629 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
630 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
631 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
632 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
634 "trp_link_latency": [
635 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
636 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
637 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
638 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
639 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
640 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
641 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
642 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
643 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
644 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
647 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
648 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
649 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
650 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
651 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
652 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
653 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
654 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
655 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
656 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
658 "trp_link_price_list": [
659 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
660 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
661 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
662 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
663 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
664 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
665 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
666 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
667 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
668 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
673 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
674 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
678 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
682 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
686 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
687 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
689 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
692 mg
= MznModelGenerator(logging
.getLogger(__name__
))
693 test_mzn_model
= mg
.create_model(ns_placement_data
)
698 "vimAccountId": "99999999-38f5-438d-b8ee-3f93b3531f87",
699 "member-vnf-index": "1",
702 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
703 "member-vnf-index": "2",
706 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
707 "member-vnf-index": "3",
711 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
712 placement
= mpc
._run
_placement
_model
(
713 mzn_model
=test_mzn_model
,
717 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
718 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
722 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
726 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
730 # sort the result to ease assert with expected result
732 sorted_placement
= placement
734 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
735 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
737 def test_mznmodel_scenario1_subtestcase7(self
):
739 ns_placement_data
= {
741 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
742 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
743 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
744 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
745 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
746 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
747 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
748 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
749 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
750 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
752 "trp_link_latency": [
753 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
754 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
755 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
756 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
757 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
758 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
759 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
760 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
761 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
762 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
765 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
766 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
767 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
768 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
769 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
770 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
771 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
772 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
773 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
774 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
776 "trp_link_price_list": [
777 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
778 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
779 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
780 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
781 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
782 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
783 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
784 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
785 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
786 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
791 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
792 "vim_account": "vim11111111_38f5_438d_b8ee_3f93b3531f87",
796 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
797 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
801 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
802 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
806 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
807 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
809 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
812 mg
= MznModelGenerator(logging
.getLogger(__name__
))
813 test_mzn_model
= mg
.create_model(ns_placement_data
)
816 expected_result
= [{}]
818 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
819 placement
= mpc
._run
_placement
_model
(
820 mzn_model
=test_mzn_model
,
824 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
825 "vim_account": "vim11111111_38f5_438d_b8ee_3f93b3531f87",
829 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
830 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
834 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
835 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
839 # sort the result to ease assert with expected result
841 sorted_placement
= placement
843 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
844 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
846 def test_mznmodel_scenario1_subtestcase8(self
):
848 ns_placement_data
= {
850 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
851 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
852 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
853 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
854 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
855 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
856 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
857 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
858 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
859 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
861 "trp_link_latency": [
862 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
863 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
864 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
865 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
866 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
867 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
868 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
869 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
870 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
871 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
874 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
875 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
876 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
877 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
878 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
879 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
880 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
881 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
882 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
883 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
885 "trp_link_price_list": [
886 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
887 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
888 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
889 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
890 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
891 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
892 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
893 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
894 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
895 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
900 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
901 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
905 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
909 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
913 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
914 {"cp_refs": ["2", "3"], "latency": 120, "jitter": 20},
916 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
919 mg
= MznModelGenerator(logging
.getLogger(__name__
))
920 test_mzn_model
= mg
.create_model(ns_placement_data
)
925 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
926 "member-vnf-index": "1",
929 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
930 "member-vnf-index": "2",
933 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
934 "member-vnf-index": "3",
938 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
939 placement
= mpc
._run
_placement
_model
(
940 mzn_model
=test_mzn_model
,
944 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
945 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
949 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
953 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
957 # sort the result to ease assert with expected result
959 sorted_placement
= placement
961 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
962 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
964 def test_mznmodel_scenario2_subtestcase1(self
):
966 ns_placement_data
= {
968 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
969 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
970 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
971 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
972 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
973 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
974 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
975 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
976 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
977 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
979 "trp_link_latency": [
980 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
981 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
982 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
983 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
984 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
985 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
986 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
987 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
988 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
989 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
992 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
993 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
994 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
995 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
996 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
997 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
998 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
999 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1000 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1001 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1003 "trp_link_price_list": [
1004 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1005 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1006 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1007 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1008 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1009 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1010 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1011 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1012 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1013 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1018 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1022 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1026 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1030 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1031 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1033 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1036 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1037 test_mzn_model
= mg
.create_model(ns_placement_data
)
1042 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1043 "member-vnf-index": "1",
1046 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1047 "member-vnf-index": "2",
1050 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1051 "member-vnf-index": "3",
1055 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1056 placement
= mpc
._run
_placement
_model
(
1057 mzn_model
=test_mzn_model
,
1061 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1065 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1069 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1073 # sort the result to ease assert with expected result
1074 if not placement
[0]:
1075 sorted_placement
= placement
1077 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1078 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1080 def test_mznmodel_scenario2_subtestcase2(self
):
1081 # generate the model
1082 ns_placement_data
= {
1084 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1085 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1086 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1087 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1088 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1089 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1090 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1091 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1092 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1093 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1095 "trp_link_latency": [
1096 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1097 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1098 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1099 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1100 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1101 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1102 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1103 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1104 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1105 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1107 "trp_link_jitter": [
1108 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1109 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1110 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1111 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1112 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1113 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1114 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1115 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1116 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1117 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1119 "trp_link_price_list": [
1120 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1121 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1122 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1123 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1124 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1125 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1126 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1127 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1128 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1129 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1134 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1135 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1139 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1143 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1147 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1148 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1150 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1153 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1154 test_mzn_model
= mg
.create_model(ns_placement_data
)
1159 "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87",
1160 "member-vnf-index": "1",
1163 "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87",
1164 "member-vnf-index": "2",
1167 "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87",
1168 "member-vnf-index": "3",
1172 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1173 placement
= mpc
._run
_placement
_model
(
1174 mzn_model
=test_mzn_model
,
1178 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1179 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1183 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1187 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1191 # sort the result to ease assert with expected result
1192 if not placement
[0]:
1193 sorted_placement
= placement
1195 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1196 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1198 def test_mznmodel_scenario2_subtestcase3(self
):
1199 # generate the model
1200 ns_placement_data
= {
1202 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1203 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1204 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1205 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1206 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1207 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1208 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1209 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1210 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1211 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1213 "trp_link_latency": [
1214 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1215 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1216 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1217 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1218 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1219 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1220 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1221 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1222 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1223 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1225 "trp_link_jitter": [
1226 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1227 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1228 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1229 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1230 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1231 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1232 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1233 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1234 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1235 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1237 "trp_link_price_list": [
1238 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1239 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1240 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1241 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1242 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1243 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1244 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1245 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1246 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1247 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1252 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1253 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1257 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1261 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1265 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1266 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1268 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1271 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1272 test_mzn_model
= mg
.create_model(ns_placement_data
)
1277 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
1278 "member-vnf-index": "1",
1281 "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87",
1282 "member-vnf-index": "2",
1285 "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87",
1286 "member-vnf-index": "3",
1290 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1291 placement
= mpc
._run
_placement
_model
(
1292 mzn_model
=test_mzn_model
,
1296 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1297 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1301 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1305 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1309 # sort the result to ease assert with expected result
1310 if not placement
[0]:
1311 sorted_placement
= placement
1313 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1314 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1316 def test_mznmodel_scenario2_subtestcase4(self
):
1317 # generate the model
1318 ns_placement_data
= {
1320 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1321 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1322 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1323 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1324 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1325 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1326 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1327 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1328 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1329 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1331 "trp_link_latency": [
1332 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1333 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1334 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1335 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1336 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1337 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1338 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1339 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1340 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1341 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1343 "trp_link_jitter": [
1344 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1345 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1346 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1347 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1348 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1349 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1350 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1351 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1352 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1353 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1355 "trp_link_price_list": [
1356 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1357 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1358 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1359 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1360 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1361 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1362 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1363 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1364 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1365 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1370 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1371 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1375 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1376 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1380 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1384 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1385 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1387 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1390 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1391 test_mzn_model
= mg
.create_model(ns_placement_data
)
1396 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
1397 "member-vnf-index": "1",
1400 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
1401 "member-vnf-index": "2",
1404 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
1405 "member-vnf-index": "3",
1409 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1410 placement
= mpc
._run
_placement
_model
(
1411 mzn_model
=test_mzn_model
,
1415 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1416 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1420 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1421 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1425 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1429 # sort the result to ease assert with expected result
1430 if not placement
[0]:
1431 sorted_placement
= placement
1433 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1434 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1436 def test_mznmodel_scenario2_subtestcase5(self
):
1437 # generate the model
1438 ns_placement_data
= {
1440 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1441 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1442 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1443 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1444 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1445 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1446 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1447 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1448 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1449 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1451 "trp_link_latency": [
1452 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1453 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1454 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1455 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1456 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1457 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1458 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1459 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1460 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1461 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1463 "trp_link_jitter": [
1464 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1465 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1466 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1467 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1468 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1469 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1470 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1471 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1472 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1473 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1475 "trp_link_price_list": [
1476 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1477 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1478 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1479 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1480 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1481 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1482 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1483 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1484 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1485 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1490 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1491 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1495 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1496 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1500 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1504 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1505 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1507 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1510 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1511 test_mzn_model
= mg
.create_model(ns_placement_data
)
1514 expected_result
= [{}]
1516 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1517 placement
= mpc
._run
_placement
_model
(
1518 mzn_model
=test_mzn_model
,
1522 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1523 "vim_account": "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1527 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1528 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1532 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1536 # sort the result to ease assert with expected result
1537 if not placement
[0]:
1538 sorted_placement
= placement
1540 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1541 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1543 def test_mznmodel_scenario2_subtestcase6(self
):
1544 # generate the model
1545 ns_placement_data
= {
1547 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1548 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1549 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1550 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1551 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1552 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1553 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1554 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1555 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1556 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1558 "trp_link_latency": [
1559 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1560 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1561 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1562 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1563 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1564 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1565 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1566 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1567 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1568 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1570 "trp_link_jitter": [
1571 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1572 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1573 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1574 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1575 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1576 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1577 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1578 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1579 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1580 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1582 "trp_link_price_list": [
1583 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1584 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1585 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1586 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1587 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1588 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1589 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1590 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1591 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1592 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1597 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1598 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1602 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1603 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1607 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1608 "vim_account": "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1612 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
1613 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 6},
1615 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1618 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1619 test_mzn_model
= mg
.create_model(ns_placement_data
)
1622 expected_result
= [{}]
1624 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1625 placement
= mpc
._run
_placement
_model
(
1626 mzn_model
=test_mzn_model
,
1630 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1631 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1635 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1636 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1640 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1641 "vim_account": "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1645 # sort the result to ease assert with expected result
1646 if not placement
[0]:
1647 sorted_placement
= placement
1649 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1650 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1652 def test_mznmodel_scenario3_subtestcase1(self
):
1653 # generate the model
1654 ns_placement_data
= {
1656 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1657 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1658 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1659 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1660 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1661 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1662 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1663 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1664 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1665 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1667 "trp_link_latency": [
1668 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1669 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1670 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1671 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1672 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1673 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1674 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1675 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1676 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1677 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1679 "trp_link_jitter": [
1680 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1681 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1682 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1683 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1684 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1685 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1686 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1687 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1688 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1689 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1691 "trp_link_price_list": [
1692 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1693 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1694 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1695 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1696 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1697 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1698 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1699 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1700 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1701 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1706 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1710 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1714 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1718 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
1719 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
1721 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1724 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1725 test_mzn_model
= mg
.create_model(ns_placement_data
)
1730 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1731 "member-vnf-index": "1",
1734 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1735 "member-vnf-index": "2",
1738 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
1739 "member-vnf-index": "3",
1743 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1744 placement
= mpc
._run
_placement
_model
(
1745 mzn_model
=test_mzn_model
,
1749 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1753 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1757 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1761 # sort the result to ease assert with expected result
1762 if not placement
[0]:
1763 sorted_placement
= placement
1765 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1766 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1768 def test_mznmodel_scenario3_subtestcase2(self
):
1769 # generate the model
1770 ns_placement_data
= {
1772 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1773 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1774 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1775 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1776 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1777 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1778 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1779 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1780 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1781 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1783 "trp_link_latency": [
1784 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1785 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1786 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1787 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1788 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1789 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1790 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1791 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1792 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1793 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1795 "trp_link_jitter": [
1796 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1797 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1798 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1799 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1800 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1801 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1802 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1803 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1804 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1805 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1807 "trp_link_price_list": [
1808 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1809 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1810 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1811 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1812 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1813 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1814 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1815 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1816 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1817 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1822 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1823 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1827 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1828 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1832 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1836 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
1837 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
1839 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1842 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1843 test_mzn_model
= mg
.create_model(ns_placement_data
)
1846 expected_result
= [{}]
1848 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1849 placement
= mpc
._run
_placement
_model
(
1850 mzn_model
=test_mzn_model
,
1854 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1855 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1859 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1860 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1864 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1868 # sort the result to ease assert with expected result
1869 if not placement
[0]:
1870 sorted_placement
= placement
1872 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1873 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1875 def test_mznmodel_scenario3_subtestcase3(self
):
1876 # generate the model
1877 ns_placement_data
= {
1879 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1880 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1881 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
1882 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
1883 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
1884 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
1885 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
1886 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1887 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
1888 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
1890 "trp_link_latency": [
1891 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
1892 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
1893 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
1894 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1895 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
1896 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
1897 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
1898 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
1899 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
1900 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
1902 "trp_link_jitter": [
1903 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1904 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1905 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
1906 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1907 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
1908 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
1909 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
1910 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
1911 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
1912 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
1914 "trp_link_price_list": [
1915 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1916 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
1917 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
1918 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
1919 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
1920 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
1921 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
1922 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
1923 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
1924 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
1929 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1930 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1934 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1938 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1942 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
1943 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
1945 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
1948 mg
= MznModelGenerator(logging
.getLogger(__name__
))
1949 test_mzn_model
= mg
.create_model(ns_placement_data
)
1954 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
1955 "member-vnf-index": "1",
1958 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
1959 "member-vnf-index": "2",
1962 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
1963 "member-vnf-index": "3",
1967 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
1968 placement
= mpc
._run
_placement
_model
(
1969 mzn_model
=test_mzn_model
,
1973 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
1974 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
1978 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
1982 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
1986 # sort the result to ease assert with expected result
1987 if not placement
[0]:
1988 sorted_placement
= placement
1990 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
1991 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
1993 def test_mznmodel_scenario3_subtestcase4(self
):
1994 # generate the model
1995 ns_placement_data
= {
1997 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
1998 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
1999 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2000 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2001 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2002 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2003 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2004 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2005 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2006 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2008 "trp_link_latency": [
2009 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2010 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2011 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2012 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2013 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2014 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2015 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2016 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2017 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2018 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2020 "trp_link_jitter": [
2021 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2022 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2023 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2024 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2025 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2026 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2027 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2028 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2029 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2030 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2032 "trp_link_price_list": [
2033 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2034 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2035 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2036 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2037 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2038 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2039 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2040 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2041 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2042 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2047 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2048 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2052 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2056 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2060 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
2061 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
2063 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2066 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2067 test_mzn_model
= mg
.create_model(ns_placement_data
)
2072 "vimAccountId": "88888888-38f5-438d-b8ee-3f93b3531f87",
2073 "member-vnf-index": "1",
2076 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
2077 "member-vnf-index": "2",
2080 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
2081 "member-vnf-index": "3",
2085 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2086 placement
= mpc
._run
_placement
_model
(
2087 mzn_model
=test_mzn_model
,
2091 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2092 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2096 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2100 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2104 # sort the result to ease assert with expected result
2105 if not placement
[0]:
2106 sorted_placement
= placement
2108 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2109 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2111 def test_mznmodel_scenario3_subtestcase5(self
):
2112 # generate the model
2113 ns_placement_data
= {
2115 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2116 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2117 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2118 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2119 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2120 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2121 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2122 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2123 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2124 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2126 "trp_link_latency": [
2127 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2128 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2129 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2130 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2131 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2132 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2133 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2134 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2135 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2136 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2138 "trp_link_jitter": [
2139 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2140 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2141 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2142 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2143 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2144 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2145 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2146 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2147 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2148 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2150 "trp_link_price_list": [
2151 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2152 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2153 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2154 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2155 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2156 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2157 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2158 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2159 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2160 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2165 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2166 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2170 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2171 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2175 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2176 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2180 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
2181 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
2183 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2186 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2187 test_mzn_model
= mg
.create_model(ns_placement_data
)
2190 expected_result
= [{}]
2192 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2193 placement
= mpc
._run
_placement
_model
(
2194 mzn_model
=test_mzn_model
,
2198 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2199 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2203 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2204 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2208 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2209 "vim_account": "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2213 # sort the result to ease assert with expected result
2214 if not placement
[0]:
2215 sorted_placement
= placement
2217 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2218 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2220 def test_mznmodel_scenario3_subtestcase6(self
):
2221 # generate the model
2222 ns_placement_data
= {
2224 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2225 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2226 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2227 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2228 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2229 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2230 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2231 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2232 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2233 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2235 "trp_link_latency": [
2236 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2237 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2238 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2239 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2240 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2241 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2242 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2243 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2244 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2245 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2247 "trp_link_jitter": [
2248 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2249 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2250 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2251 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2252 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2253 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2254 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2255 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2256 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2257 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2259 "trp_link_price_list": [
2260 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2261 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2262 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2263 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2264 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2265 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2266 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2267 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2268 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2269 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2274 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2275 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2279 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2280 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2284 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2288 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 3},
2289 {"cp_refs": ["2", "3"], "latency": 25, "jitter": 6},
2291 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2294 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2295 test_mzn_model
= mg
.create_model(ns_placement_data
)
2300 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
2301 "member-vnf-index": "1",
2304 "vimAccountId": "99999999-38f5-438d-b8ee-3f93b3531f87",
2305 "member-vnf-index": "2",
2308 "vimAccountId": "77777777-38f5-438d-b8ee-3f93b3531f87",
2309 "member-vnf-index": "3",
2313 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2314 placement
= mpc
._run
_placement
_model
(
2315 mzn_model
=test_mzn_model
,
2319 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2320 "vim_account": "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2324 "vnf_price_per_vim": ["10,15,30,30,100,70,40,150,150,150"],
2325 "vim_account": "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2329 "vnf_price_per_vim": ["30,30,60,40,100,90,40,150,200,170"],
2333 # sort the result to ease assert with expected result
2334 if not placement
[0]:
2335 sorted_placement
= placement
2337 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2338 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2340 def test_mznmodel_scenario4_subtestcase1(self
):
2341 # generate the model
2342 ns_placement_data
= {
2344 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2345 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2346 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2347 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2348 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2349 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2350 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2351 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2352 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2353 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2355 "trp_link_latency": [
2356 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2357 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2358 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2359 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2360 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2361 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2362 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2363 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2364 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2365 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2367 "trp_link_jitter": [
2368 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2369 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2370 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2371 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2372 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2373 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2374 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2375 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2376 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2377 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2379 "trp_link_price_list": [
2380 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2381 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2382 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2383 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2384 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2385 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2386 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2387 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2388 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2389 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2394 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2398 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2402 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2406 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2410 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
2411 {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10},
2412 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10},
2414 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2417 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2418 test_mzn_model
= mg
.create_model(ns_placement_data
)
2423 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
2424 "member-vnf-index": "1",
2427 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
2428 "member-vnf-index": "2",
2431 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
2432 "member-vnf-index": "3",
2435 "vimAccountId": "00000000-38f5-438d-b8ee-3f93b3531f87",
2436 "member-vnf-index": "4",
2440 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2441 placement
= mpc
._run
_placement
_model
(
2442 mzn_model
=test_mzn_model
,
2446 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2450 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2454 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2458 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2462 # sort the result to ease assert with expected result
2463 if not placement
[0]:
2464 sorted_placement
= placement
2466 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2467 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2469 def test_mznmodel_scenario4_subtestcase2(self
):
2470 # generate the model
2471 ns_placement_data
= {
2473 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2474 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2475 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2476 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2477 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2478 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2479 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2480 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2481 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2482 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2484 "trp_link_latency": [
2485 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2486 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2487 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2488 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2489 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2490 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2491 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2492 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2493 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2494 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2496 "trp_link_jitter": [
2497 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2498 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2499 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2500 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2501 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2502 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2503 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2504 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2505 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2506 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2508 "trp_link_price_list": [
2509 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2510 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2511 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2512 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2513 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2514 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2515 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2516 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2517 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2518 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2523 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2524 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2528 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2532 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2533 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2537 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2541 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
2542 {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10},
2543 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10},
2545 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2548 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2549 test_mzn_model
= mg
.create_model(ns_placement_data
)
2554 "vimAccountId": "22222222-38f5-438d-b8ee-3f93b3531f87",
2555 "member-vnf-index": "1",
2558 "vimAccountId": "44444444-38f5-438d-b8ee-3f93b3531f87",
2559 "member-vnf-index": "2",
2562 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
2563 "member-vnf-index": "3",
2566 "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87",
2567 "member-vnf-index": "4",
2571 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2572 placement
= mpc
._run
_placement
_model
(
2573 mzn_model
=test_mzn_model
,
2577 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2578 "vim_account": "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2582 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2586 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2587 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2591 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2595 # sort the result to ease assert with expected result
2596 if not placement
[0]:
2597 sorted_placement
= placement
2599 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2600 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2602 def test_mznmodel_scenario4_subtestcase3(self
):
2603 # generate the model
2604 ns_placement_data
= {
2606 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2607 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2608 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2609 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2610 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2611 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2612 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2613 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2614 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2615 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2617 "trp_link_latency": [
2618 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2619 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2620 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2621 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2622 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2623 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2624 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2625 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2626 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2627 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2629 "trp_link_jitter": [
2630 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2631 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2632 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2633 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2634 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2635 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2636 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2637 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2638 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2639 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2641 "trp_link_price_list": [
2642 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2643 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2644 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2645 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2646 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2647 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2648 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2649 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2650 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2651 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2656 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2657 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2661 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2665 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2669 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2670 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2674 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
2675 {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10},
2676 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10},
2678 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2681 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2682 test_mzn_model
= mg
.create_model(ns_placement_data
)
2687 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
2688 "member-vnf-index": "1",
2691 "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87",
2692 "member-vnf-index": "2",
2695 "vimAccountId": "66666666-38f5-438d-b8ee-3f93b3531f87",
2696 "member-vnf-index": "3",
2699 "vimAccountId": "55555555-38f5-438d-b8ee-3f93b3531f87",
2700 "member-vnf-index": "4",
2704 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2705 placement
= mpc
._run
_placement
_model
(
2706 mzn_model
=test_mzn_model
,
2710 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2711 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2715 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2719 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2723 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2724 "vim_account": "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2728 # sort the result to ease assert with expected result
2729 if not placement
[0]:
2730 sorted_placement
= placement
2732 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2733 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")
2735 def test_mznmodel_scenario4_subtestcase4(self
):
2736 # generate the model
2737 ns_placement_data
= {
2739 "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2740 "vim11111111_38f5_438d_b8ee_3f93b3531f87",
2741 "vim22222222_38f5_438d_b8ee_3f93b3531f87",
2742 "vim33333333_38f5_438d_b8ee_3f93b3531f87",
2743 "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2744 "vim55555555_38f5_438d_b8ee_3f93b3531f87",
2745 "vim66666666_38f5_438d_b8ee_3f93b3531f87",
2746 "vim77777777_38f5_438d_b8ee_3f93b3531f87",
2747 "vim88888888_38f5_438d_b8ee_3f93b3531f87",
2748 "vim99999999_38f5_438d_b8ee_3f93b3531f87",
2750 "trp_link_latency": [
2751 [0, 30, 70, 80, 32767, 32767, 32767, 32767, 32767, 32767],
2752 [30, 0, 75, 60, 32767, 32767, 32767, 32767, 32767, 32767],
2753 [70, 75, 0, 40, 100, 32767, 32767, 32767, 32767, 32767],
2754 [80, 60, 40, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2755 [32767, 32767, 100, 32767, 0, 5, 5, 32767, 32767, 32767],
2756 [32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767],
2757 [32767, 32767, 32767, 32767, 5, 5, 0, 32767, 32767, 32767],
2758 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 30, 20],
2759 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 30, 0, 20],
2760 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 20, 20, 0],
2762 "trp_link_jitter": [
2763 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2764 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2765 [5, 5, 0, 10, 5, 32767, 32767, 32767, 32767, 32767],
2766 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2767 [32767, 32767, 5, 32767, 0, 4, 4, 32767, 32767, 32767],
2768 [32767, 32767, 32767, 32767, 4, 0, 10, 32767, 32767, 32767],
2769 [32767, 32767, 32767, 32767, 4, 10, 0, 32767, 32767, 32767],
2770 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 1, 1],
2771 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1],
2772 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 1, 0],
2774 "trp_link_price_list": [
2775 [0, 5, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2776 [5, 0, 5, 10, 32767, 32767, 32767, 32767, 32767, 32767],
2777 [5, 5, 0, 10, 10, 32767, 32767, 32767, 32767, 32767],
2778 [10, 10, 10, 0, 32767, 32767, 32767, 32767, 32767, 32767],
2779 [32767, 32767, 10, 32767, 0, 20, 20, 32767, 32767, 32767],
2780 [32767, 32767, 32767, 32767, 20, 0, 20, 32767, 32767, 32767],
2781 [32767, 32767, 32767, 32767, 20, 20, 0, 32767, 32767, 32767],
2782 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 15, 15],
2783 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 0, 15],
2784 [32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 15, 0],
2789 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2790 "vim_account": "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2794 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2798 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2799 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2803 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2807 {"cp_refs": ["1", "2"], "latency": 120, "jitter": 20},
2808 {"cp_refs": ["2", "4"], "latency": 50, "jitter": 10},
2809 {"cp_refs": ["2", "3"], "latency": 20, "jitter": 10},
2811 "generator_data": {"file": __file__
, "time": datetime
.datetime
.now()},
2814 mg
= MznModelGenerator(logging
.getLogger(__name__
))
2815 test_mzn_model
= mg
.create_model(ns_placement_data
)
2818 expected_result
= [{}]
2820 mpc
= MznPlacementConductor(logging
.getLogger(__name__
))
2821 placement
= mpc
._run
_placement
_model
(
2822 mzn_model
=test_mzn_model
,
2826 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2827 "vim_account": "vim00000000_38f5_438d_b8ee_3f93b3531f87",
2831 "vnf_price_per_vim": ["15,20,40,40,110,80,50,110,160,210"],
2835 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2836 "vim_account": "vim44444444_38f5_438d_b8ee_3f93b3531f87",
2840 "vnf_price_per_vim": ["5,10,30,30,100,70,40,100,150,200"],
2844 # sort the result to ease assert with expected result
2845 if not placement
[0]:
2846 sorted_placement
= placement
2848 sorted_placement
= sorted(placement
, key
=lambda k
: k
["member-vnf-index"])
2849 self
.assertEqual(expected_result
, sorted_placement
, "Faulty syntax or content")