Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / test / java / org / openecomp / sdc / translator / services / heattotosca / ConsolidationServiceTest.java
1 package org.openecomp.sdc.translator.services.heattotosca;
2
3 /**
4  * Created by TALIO on 3/7/2017.
5  */
6 public class ConsolidationServiceTest {
7
8   /*
9   @Spy
10   private TranslationContext translationContext = new TranslationContext();
11   private static String mainST = "MainServiceTemplate.yaml";
12
13   @Mock
14   private UnifiedCompositionService unifiedCompositionServiceMock;
15
16   @Captor
17   private ArgumentCaptor<List<UnifiedCompositionData>> unifiedModelListArg;
18   @Captor
19   private ArgumentCaptor<UnifiedCompositionMode> unifiedCompositionModeArg;
20
21   @Spy
22   @InjectMocks
23   private ConsolidationService consolidationService;
24
25   @Before
26   public void setUp() throws Exception {
27     MockitoAnnotations.initMocks(this);
28   }
29
30   @Test
31   public void testConsolidationValidPreCondition() throws IOException {
32
33     ConsolidationData consolidationData = new ConsolidationData();
34     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
35     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel(
36         "/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/valid_pre_condition/",
37         null,
38         null);
39
40     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName,
41         consolidationData);
42
43     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
44     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
45     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
46
47     TestUtils.updateComputeTemplateConsolidationData(
48         mainST,
49         computeNodeTypeName, "server_ps01",
50         null, null, null, null, null, null,
51         portTypeToIdList, consolidationData);
52
53     TestUtils.updateComputeTemplateConsolidationData(
54         mainST,
55         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
56         portTypeToIdList, consolidationData);
57
58     TestUtils.initPortConsolidationData(mainST, consolidationData);
59     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
60         null, null, null, null, null,
61         consolidationData);
62     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
63         null, null, null, null, null,
64         consolidationData);
65
66     translationContext.setConsolidationData(consolidationData);
67     List<UnifiedCompositionMode> expectedUnifiedModes =
68         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
69
70     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
71   }
72
73   @Test
74   public void testConsolidationFalsePreConditionOneComputeNode() throws IOException {
75     ConsolidationData consolidationData = new ConsolidationData();
76     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
77     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
78         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/one_compute_node/",
79             null, null);
80
81     TestUtils
82         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
83
84     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
85     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
86     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
87
88     TestUtils.updateComputeTemplateConsolidationData(
89         mainST,
90         computeNodeTypeName, "server_ps01",
91         null, null, null, null, null, null,
92         portTypeToIdList, consolidationData);
93
94     TestUtils.initPortConsolidationData(mainST, consolidationData);
95     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
96         null, null, null, null, null,
97         consolidationData);
98     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
99         null, null, null, null, null,
100         consolidationData);
101
102     translationContext.setConsolidationData(consolidationData);
103     List<UnifiedCompositionMode> expectedUnifiedModes =
104         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
105     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
106   }
107
108   @Test
109   public void testConsolidationFalsePreConditionMoreThanOnePortPerType() throws IOException {
110     ConsolidationData consolidationData = new ConsolidationData();
111     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
112     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
113         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/more_than_one_port/",
114             null, null);
115
116     TestUtils
117         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
118
119     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
120     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
121     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
122
123     TestUtils.updateComputeTemplateConsolidationData(
124         mainST,
125         computeNodeTypeName, "server_ps01",
126         null, null, null, null, null, null,
127         portTypeToIdList, consolidationData);
128
129     TestUtils.updateComputeTemplateConsolidationData(
130         mainST,
131         computeNodeTypeName, "server_ps02",
132         null, null, null, null, null, null,
133         portTypeToIdList, consolidationData);
134
135
136     TestUtils.initPortConsolidationData(mainST, consolidationData);
137
138     translationContext.setConsolidationData(consolidationData);
139     List<UnifiedCompositionMode> expectedUnifiedModes =
140         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
141     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
142   }
143
144   @Test
145   public void testConsolidationFalsePreConditionDifferentPortTypesBetweenComputes()
146       throws IOException {
147     ConsolidationData consolidationData = new ConsolidationData();
148     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
149     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
150         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_port_types",
151             null, null);
152
153     TestUtils
154         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
155
156     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
157     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
158
159     TestUtils.updateComputeTemplateConsolidationData(
160         mainST,
161         computeNodeTypeName, "server_ps01",
162         null, null, null, null, null, null,
163         portTypeToIdList, consolidationData);
164
165     portTypeToIdList = new ArrayList<>();
166     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
167
168     TestUtils.updateComputeTemplateConsolidationData(
169         mainST,
170         computeNodeTypeName, "server_ps02",
171         null, null, null, null, null, null,
172         portTypeToIdList, consolidationData);
173
174     TestUtils.initPortConsolidationData(mainST, consolidationData);
175     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
176         null, null, null, null, null,
177         consolidationData);
178     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
179         null, null, null, null, null,
180         consolidationData);
181
182     translationContext.setConsolidationData(consolidationData);
183     List<UnifiedCompositionMode> expectedUnifiedModes =
184         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
185     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
186
187   }
188
189   @Test
190   public void testConsolidationResultTrueWithMoreThanTwoCompute() throws IOException {
191     ConsolidationData consolidationData = new ConsolidationData();
192     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
193     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
194         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
195             null, null);
196
197     TestUtils
198         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
199
200     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
201     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
202     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
203
204     TestUtils.updateComputeTemplateConsolidationData(
205         mainST,
206         computeNodeTypeName, "server_ps01",
207         null, null, null, null, null, null,
208         portTypeToIdList, consolidationData);
209
210     TestUtils.updateComputeTemplateConsolidationData(
211         mainST,
212         computeNodeTypeName, "server_ps02",
213         null, null, null, null, null, null,
214         portTypeToIdList, consolidationData);
215
216     TestUtils.updateComputeTemplateConsolidationData(
217         mainST,
218         computeNodeTypeName, "server_ps03",
219         null, null, null, null, null, null,
220         portTypeToIdList, consolidationData);
221
222     TestUtils.initPortConsolidationData(mainST, consolidationData);
223     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
224         null, null, null, null, null,
225         consolidationData);
226     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
227         null, null, null, null, null,
228         consolidationData);
229
230     translationContext.setConsolidationData(consolidationData);
231
232     List<UnifiedCompositionMode> expectedUnifiedModes =
233         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
234     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
235   }
236
237   @Test
238   public void testConsolidationResultFalseWithMoreThanTwoComputeOneIsDiff() throws IOException {
239     ConsolidationData consolidationData = new ConsolidationData();
240     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
241     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
242         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
243             null, null);
244
245     TestUtils
246         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
247
248     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
249     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
250     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
251
252     TestUtils.updateComputeTemplateConsolidationData(
253         mainST,
254         computeNodeTypeName, "server_ps01",
255         null, null, null, null, null, null,
256         portTypeToIdList, consolidationData);
257
258     TestUtils.updateComputeTemplateConsolidationData(
259         mainST,
260         computeNodeTypeName, "server_ps02",
261         null, null, null, null, null, null,
262         portTypeToIdList, consolidationData);
263
264     portTypeToIdList = new ArrayList<>();
265     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
266     TestUtils.updateComputeTemplateConsolidationData(
267         mainST,
268         computeNodeTypeName, "server_ps03",
269         null, null, null, null, null, null,
270         portTypeToIdList, consolidationData);
271
272     TestUtils.initPortConsolidationData(mainST, consolidationData);
273     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
274         null, null, null, null, null,
275         consolidationData);
276     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
277         null, null, null, null, null,
278         consolidationData);
279
280     translationContext.setConsolidationData(consolidationData);
281     List<UnifiedCompositionMode> expectedUnifiedModes =
282         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
283     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
284   }
285
286   @Test
287   public void testConsolidationResultFalseForTwoTypesOfComputeWithOneInstanceEach()
288       throws IOException {
289     ConsolidationData consolidationData = new ConsolidationData();
290     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
291     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui";
292     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
293         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
294             null, null);
295
296     TestUtils.initComputeNodeTypeInConsolidationData
297         (mainST, computeNodeTypeName1, consolidationData);
298     TestUtils.initComputeNodeTypeInConsolidationData
299         (mainST, computeNodeTypeName2, consolidationData);
300
301     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
302     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
303     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
304
305     TestUtils.updateComputeTemplateConsolidationData(
306         mainST,
307         computeNodeTypeName1, "server_ps01",
308         null, null, null, null, null, null,
309         portTypeToIdList, consolidationData);
310
311     TestUtils.updateComputeTemplateConsolidationData(
312         mainST,
313         computeNodeTypeName2, "server_ps02",
314         null, null, null, null, null, null,
315         portTypeToIdList, consolidationData);
316
317     TestUtils.initPortConsolidationData(mainST, consolidationData);
318     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
319         null, null, null, null, null,
320         consolidationData);
321     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
322         null, null, null, null, null,
323         consolidationData);
324
325     translationContext.setConsolidationData(consolidationData);
326
327     List<UnifiedCompositionMode> expectedUnifiedModes =
328         Arrays.asList(UnifiedCompositionMode.SingleSubstitution,
329             UnifiedCompositionMode.SingleSubstitution);
330     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
331   }
332
333   @Test
334   public void testConsolidationValidForTwoSimilarComputeAndFalseForSingleCompute()
335       throws IOException {
336     ConsolidationData consolidationData = new ConsolidationData();
337     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
338     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui";
339     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
340         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_two_similar_one_diff",
341             null, null);
342
343     TestUtils
344         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName1, consolidationData);
345     TestUtils
346         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName2, consolidationData);
347
348     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
349     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
350     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
351
352     TestUtils.updateComputeTemplateConsolidationData(
353         mainST,
354         computeNodeTypeName1, "server_ps01",
355         null, null, null, null, null, null,
356         portTypeToIdList, consolidationData);
357
358     TestUtils.updateComputeTemplateConsolidationData(
359         mainST,
360         computeNodeTypeName1, "server_ps02",
361         null, null, null, null, null, null,
362         portTypeToIdList, consolidationData);
363     TestUtils.updateComputeTemplateConsolidationData(
364         mainST,
365         computeNodeTypeName2, "server_ps03",
366         null, null, null, null, null, null,
367         portTypeToIdList, consolidationData);
368
369     TestUtils.initPortConsolidationData(mainST, consolidationData);
370     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
371         null, null, null, null, null,
372         consolidationData);
373     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
374         null, null, null, null, null,
375         consolidationData);
376
377     translationContext.setConsolidationData(consolidationData);
378     List<UnifiedCompositionMode> expectedUnifiedModes =
379         Arrays.asList(
380             UnifiedCompositionMode.ScalingInstances, UnifiedCompositionMode.SingleSubstitution);
381     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
382   }
383
384   @Test
385   public void testValidComputeAndPortConsolidation() throws IOException {
386     ConsolidationData consolidationData = new ConsolidationData();
387     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
388     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
389         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
390             null, null);
391
392     TestUtils
393         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
394
395     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
396     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
397     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
398
399     TestUtils.updateComputeTemplateConsolidationData(
400         mainST,
401         computeNodeTypeName, "server_ps01",
402         null, null, null, null, null, null,
403         portTypeToIdList, consolidationData);
404
405     TestUtils.updateComputeTemplateConsolidationData(
406         mainST,
407         computeNodeTypeName, "server_ps02",
408         null, null, null, null, null, null,
409         portTypeToIdList, consolidationData);
410
411     TestUtils.updateComputeTemplateConsolidationData(
412         mainST,
413         computeNodeTypeName, "server_ps03",
414         null, null, null, null, null, null,
415         portTypeToIdList, consolidationData);
416
417     TestUtils.initPortConsolidationData(mainST, consolidationData);
418     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
419         null, null, null, null, null,
420         consolidationData);
421     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
422         null, null, null, null, null,
423         consolidationData);
424
425     translationContext.setConsolidationData(consolidationData);
426     List<UnifiedCompositionMode> expectedUnifiedModes =
427         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
428     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
429   }
430
431   @Test
432   public void testFalseComputeConsolidationForTwoSimilarImageNamesAndOneDiff() throws IOException {
433     ConsolidationData consolidationData = new ConsolidationData();
434     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
435     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.pd_server";
436     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
437         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_name_diff",
438             null, null);
439
440     TestUtils.initComputeNodeTypeInConsolidationData(
441         mainST, computeNodeTypeName1, consolidationData);
442     TestUtils.initComputeNodeTypeInConsolidationData(
443         mainST, computeNodeTypeName2, consolidationData);
444
445     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
446     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
447     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
448
449     TestUtils.updateComputeTemplateConsolidationData(
450         mainST,
451         computeNodeTypeName1, "server_ps01",
452         null, null, null, null, null, null,
453         portTypeToIdList, consolidationData);
454
455     TestUtils.updateComputeTemplateConsolidationData(
456         mainST,
457         computeNodeTypeName1, "server_ps02",
458         null, null, null, null, null, null,
459         portTypeToIdList, consolidationData);
460
461     TestUtils.updateComputeTemplateConsolidationData(
462         mainST,
463         computeNodeTypeName1, "server_ps03",
464         null, null, null, null, null, null,
465         portTypeToIdList, consolidationData);
466
467     TestUtils.updateComputeTemplateConsolidationData(
468         mainST,
469         computeNodeTypeName2, "server_pd01",
470         null, null, null, null, null, null,
471         portTypeToIdList, consolidationData);
472
473     TestUtils.updateComputeTemplateConsolidationData(
474         mainST,
475         computeNodeTypeName2, "server_pd02",
476         null, null, null, null, null, null,
477         portTypeToIdList, consolidationData);
478
479     TestUtils.updateComputeTemplateConsolidationData(
480         mainST,
481         computeNodeTypeName2, "server_pd03",
482         null, null, null, null, null, null,
483         portTypeToIdList, consolidationData);
484
485     TestUtils.initPortConsolidationData(mainST, consolidationData);
486     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
487         null, null, null, null, null,
488         consolidationData);
489     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
490         null, null, null, null, null,
491         consolidationData);
492
493     translationContext.setConsolidationData(consolidationData);
494     List<UnifiedCompositionMode> expectedUnifiedModes =
495         Arrays
496             .asList(UnifiedCompositionMode.CatalogInstance, UnifiedCompositionMode.CatalogInstance);
497     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
498   }
499
500   @Test
501   public void testFalseComputeConsolidationOneImageNameMissing() throws IOException {
502     ConsolidationData consolidationData = new ConsolidationData();
503     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.pd_server";
504     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
505         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_missing",
506             null, null);
507
508     TestUtils.initComputeNodeTypeInConsolidationData(
509         mainST, computeNodeTypeName, consolidationData);
510
511     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
512     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
513     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
514
515     TestUtils.updateComputeTemplateConsolidationData(
516         mainST,
517         computeNodeTypeName, "server_pd01",
518         null, null, null, null, null, null,
519         portTypeToIdList, consolidationData);
520
521     TestUtils.updateComputeTemplateConsolidationData(
522         mainST,
523         computeNodeTypeName, "server_pd02",
524         null, null, null, null, null, null,
525         portTypeToIdList, consolidationData);
526
527     TestUtils.updateComputeTemplateConsolidationData(
528         mainST,
529         computeNodeTypeName, "server_pd03",
530         null, null, null, null, null, null,
531         portTypeToIdList, consolidationData);
532
533     TestUtils.initPortConsolidationData(mainST, consolidationData);
534     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
535         null, null, null, null, null,
536         consolidationData);
537     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
538         null, null, null, null, null,
539         consolidationData);
540
541     translationContext.setConsolidationData(consolidationData);
542     List<UnifiedCompositionMode> expectedUnifiedModes =
543         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
544     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
545   }
546
547   @Test
548   public void testFalseComputeConsolidationForTwoSimilarFlavorNamesAndOneDiff() throws IOException {
549     ConsolidationData consolidationData = new ConsolidationData();
550     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
551     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
552         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_flavor_name_diff",
553             null, null);
554
555     TestUtils
556         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
557
558     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
559     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
560     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
561
562     TestUtils.updateComputeTemplateConsolidationData(
563         mainST,
564         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
565         portTypeToIdList, consolidationData);
566
567     TestUtils.updateComputeTemplateConsolidationData(
568         mainST,
569         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
570         portTypeToIdList, consolidationData);
571
572     TestUtils.updateComputeTemplateConsolidationData(
573         mainST,
574         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
575         portTypeToIdList, consolidationData);
576
577     TestUtils.initPortConsolidationData(mainST, consolidationData);
578     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
579         null, null, null, null, null,
580         consolidationData);
581     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
582         null, null, null, null, null,
583         consolidationData);
584
585     translationContext.setConsolidationData(consolidationData);
586     List<UnifiedCompositionMode> expectedUnifiedModes =
587         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
588     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
589   }
590
591   @Test
592   public void testFalsePortConsolidationForOneDiffFixedIpsValue() throws IOException {
593     ConsolidationData consolidationData = new ConsolidationData();
594     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
595     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
596         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_exCP_naming_diff",
597             null, null);
598
599     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
600
601     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
602     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
603     TestUtils.updateComputeTemplateConsolidationData(
604         mainST,
605         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
606         portTypeToIdList, consolidationData);
607
608     portTypeToIdList = new ArrayList<>();
609     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
610     TestUtils.updateComputeTemplateConsolidationData(
611         mainST,
612         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
613         portTypeToIdList, consolidationData);
614
615     portTypeToIdList = new ArrayList<>();
616     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
617     TestUtils.updateComputeTemplateConsolidationData(
618         mainST,
619         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
620         portTypeToIdList, consolidationData);
621
622     TestUtils.initPortConsolidationData(mainST, consolidationData);
623     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
624         null, null, null, null, null,
625         consolidationData);
626
627     translationContext.setConsolidationData(consolidationData);
628     List<UnifiedCompositionMode> expectedUnifiedModes =
629         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
630     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
631   }
632
633   @Test
634   public void testFalsePortConsolidationForOneDiffExpcNaming(){
635
636   }
637
638   @Test
639   public void testFalsePortConsolidationForTwoPortsWithFixedIpsAndOneWithout() throws IOException {
640     ConsolidationData consolidationData = new ConsolidationData();
641     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
642     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
643         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_fixed_ips",
644             null, null);
645
646     TestUtils
647         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
648
649     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
650     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
651     TestUtils.updateComputeTemplateConsolidationData(
652         mainST,
653         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
654         portTypeToIdList, consolidationData);
655
656     portTypeToIdList = new ArrayList<>();
657     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
658     TestUtils.updateComputeTemplateConsolidationData(
659         mainST,
660         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
661         portTypeToIdList, consolidationData);
662
663     portTypeToIdList = new ArrayList<>();
664     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
665     TestUtils.updateComputeTemplateConsolidationData(
666         mainST,
667         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
668         portTypeToIdList, consolidationData);
669
670     TestUtils.initPortConsolidationData(mainST, consolidationData);
671     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
672         null, null, null, null, null,
673         consolidationData);
674
675     translationContext.setConsolidationData(consolidationData);
676     List<UnifiedCompositionMode> expectedUnifiedModes =
677         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
678     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
679   }
680
681   @Test
682   public void testFalsePortConsolidationForTwoPortsWithAddressPairsAndOneWithout()
683       throws IOException {
684     ConsolidationData consolidationData = new ConsolidationData();
685     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
686     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
687         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_allowed_address_pairs",
688             null, null);
689
690     TestUtils
691         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
692
693     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
694     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
695     TestUtils.updateComputeTemplateConsolidationData(
696         mainST,
697         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
698         portTypeToIdList, consolidationData);
699     portTypeToIdList = new ArrayList<>();
700     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
701     TestUtils.updateComputeTemplateConsolidationData(
702         mainST,
703         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
704         portTypeToIdList, consolidationData);
705
706     portTypeToIdList = new ArrayList<>();
707     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
708     TestUtils.updateComputeTemplateConsolidationData(
709         mainST,
710         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
711         portTypeToIdList, consolidationData);
712
713     TestUtils.initPortConsolidationData(mainST, consolidationData);
714     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
715         null, null, null, null, null,
716         consolidationData);
717
718     translationContext.setConsolidationData(consolidationData);
719     List<UnifiedCompositionMode> expectedUnifiedModes =
720         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
721     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
722   }
723
724   @Test
725   public void testFalsePortConsolidationForTwoPortsWithMacAddressAndOneWithout()
726       throws IOException {
727     ConsolidationData consolidationData = new ConsolidationData();
728     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
729     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
730         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_mac_address",
731             null, null);
732
733     TestUtils
734         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
735
736     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
737     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
738     TestUtils.updateComputeTemplateConsolidationData(
739         mainST,
740         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
741         portTypeToIdList, consolidationData);
742
743     portTypeToIdList = new ArrayList<>();
744     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
745     TestUtils.updateComputeTemplateConsolidationData(
746         mainST,
747         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
748         portTypeToIdList, consolidationData);
749     portTypeToIdList = new ArrayList<>();
750     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
751     TestUtils.updateComputeTemplateConsolidationData(
752         mainST,
753         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
754         portTypeToIdList, consolidationData);
755
756     TestUtils.initPortConsolidationData(mainST, consolidationData);
757     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
758         null, null, null, null, null,
759         consolidationData);
760
761     translationContext.setConsolidationData(consolidationData);
762     List<UnifiedCompositionMode> expectedUnifiedModes =
763         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
764     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
765   }
766
767   @Test
768   public void testValidPortConsolidationForPortsWithNoneOfTheCheckedProperties()
769       throws IOException {
770     ConsolidationData consolidationData = new ConsolidationData();
771     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
772     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
773         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/ports_with_none_of_the_properties",
774             null, null);
775
776     TestUtils
777         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
778
779     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
780     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
781     TestUtils.updateComputeTemplateConsolidationData(
782         mainST,
783         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
784         portTypeToIdList, consolidationData);
785
786     portTypeToIdList = new ArrayList<>();
787     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
788     TestUtils.updateComputeTemplateConsolidationData(
789         mainST,
790         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
791         portTypeToIdList, consolidationData);
792
793     portTypeToIdList = new ArrayList<>();
794     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
795     TestUtils.updateComputeTemplateConsolidationData(
796         mainST,
797         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
798         portTypeToIdList, consolidationData);
799
800     TestUtils.initPortConsolidationData(mainST, consolidationData);
801     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
802         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
803         null,
804         consolidationData);
805     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
806         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
807         null,
808         consolidationData);
809     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
810         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
811         null,
812         consolidationData);
813
814     translationContext.setConsolidationData(consolidationData);
815     List<UnifiedCompositionMode> expectedUnifiedModes =
816         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
817     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
818   }
819
820   @Test
821   public void testComputeRelationsSimilarBetweenComputeNodes() throws IOException {
822     ConsolidationData consolidationData = new ConsolidationData();
823     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
824     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
825         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_with_same_relations",
826             null, null);
827
828     TestUtils
829         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
830
831     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
832     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
833     TestUtils.updateComputeTemplateConsolidationData(
834         mainST,
835         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"),
836         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
837         null, null,
838         portTypeToIdList,
839         consolidationData);
840
841     portTypeToIdList = new ArrayList<>();
842     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
843     TestUtils.updateComputeTemplateConsolidationData(
844         mainST,
845         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
846         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
847         null, null,
848         portTypeToIdList,
849         consolidationData);
850
851     portTypeToIdList = new ArrayList<>();
852     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
853     TestUtils.updateComputeTemplateConsolidationData(
854         mainST,
855         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
856         Arrays.asList("cmaui_volume"),
857         Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
858         portTypeToIdList,
859         consolidationData);
860
861     TestUtils.initPortConsolidationData(mainST, consolidationData);
862     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
863         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
864         null,
865         consolidationData);
866     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
867         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
868         null,
869         consolidationData);
870     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
871         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
872         null,
873         consolidationData);
874
875
876     translationContext.setConsolidationData(consolidationData);
877     List<UnifiedCompositionMode> expectedUnifiedModes =
878         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
879     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
880   }
881
882   @Test
883   public void testNodesInRelationsDiffBetweenThreeComputes() throws IOException {
884     ConsolidationData consolidationData = new ConsolidationData();
885     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
886     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
887         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
888             null, null);
889
890     TestUtils
891         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
892
893     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
894     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
895     TestUtils.updateComputeTemplateConsolidationData(
896         mainST,
897         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
898             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
899         portTypeToIdList,
900         consolidationData);
901
902     portTypeToIdList = new ArrayList<>();
903     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
904     TestUtils.updateComputeTemplateConsolidationData(
905         mainST,
906         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
907         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
908         null, null,
909         portTypeToIdList,
910         consolidationData);
911
912     portTypeToIdList = new ArrayList<>();
913     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
914     TestUtils.updateComputeTemplateConsolidationData(
915         mainST,
916         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_2"), Arrays.asList
917             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
918         portTypeToIdList,
919         consolidationData);
920
921     TestUtils.initPortConsolidationData(mainST, consolidationData);
922     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
923         consolidationData);
924
925
926     translationContext.setConsolidationData(consolidationData);
927     List<UnifiedCompositionMode> expectedUnifiedModes =
928         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
929     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
930   }
931
932   @Test
933   public void testNodesOutRelationsDiffBetweenThreeComputes() throws IOException {
934     ConsolidationData consolidationData = new ConsolidationData();
935     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
936     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
937         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
938             null, null);
939
940     TestUtils
941         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
942
943     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
944     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
945     TestUtils.updateComputeTemplateConsolidationData(
946         mainST,
947         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
948             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
949         portTypeToIdList,
950         consolidationData);
951
952     portTypeToIdList = new ArrayList<>();
953     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
954     TestUtils.updateComputeTemplateConsolidationData(
955         mainST,
956         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
957         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
958         null, null,
959         portTypeToIdList,
960         consolidationData);
961
962     portTypeToIdList = new ArrayList<>();
963     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
964     TestUtils.updateComputeTemplateConsolidationData(
965         mainST,
966         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
967         Arrays.asList("cmaui_volume_1"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
968         null, null,
969         portTypeToIdList,
970         consolidationData);
971
972     TestUtils.initPortConsolidationData(mainST, consolidationData);
973     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
974         consolidationData);
975
976
977     translationContext.setConsolidationData(consolidationData);
978     List<UnifiedCompositionMode> expectedUnifiedModes =
979         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
980     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
981   }
982
983   @Test
984   public void testVolumeRelationsDiffBetweenThreeComputes() throws IOException {
985     ConsolidationData consolidationData = new ConsolidationData();
986     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
987     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
988         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
989             null, null);
990
991     TestUtils
992         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
993
994     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
995     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
996     TestUtils.updateComputeTemplateConsolidationData(
997         mainST,
998         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
999             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
1000         portTypeToIdList,
1001         consolidationData);
1002
1003     portTypeToIdList = new ArrayList<>();
1004     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1005     TestUtils.updateComputeTemplateConsolidationData(
1006         mainST,
1007         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1008         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
1009         null, null,
1010         portTypeToIdList,
1011         consolidationData);
1012
1013     portTypeToIdList = new ArrayList<>();
1014     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1015     TestUtils.updateComputeTemplateConsolidationData(
1016         mainST,
1017         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1018         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume_1"), Arrays.asList("group_id1"),
1019         null, null,
1020         portTypeToIdList,
1021         consolidationData);
1022
1023     TestUtils.initPortConsolidationData(mainST, consolidationData);
1024     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1025         consolidationData);
1026
1027
1028     translationContext.setConsolidationData(consolidationData);
1029     List<UnifiedCompositionMode> expectedUnifiedModes =
1030         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1031     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1032   }
1033
1034   @Test
1035   public void testGroupRelationsDiffBetweenThreeComputes() throws IOException {
1036     ConsolidationData consolidationData = new ConsolidationData();
1037     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1038     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1039         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
1040             null, null);
1041
1042     TestUtils
1043         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1044
1045     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1046     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1047     TestUtils.updateComputeTemplateConsolidationData(
1048         mainST,
1049         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1050             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1051         null,
1052         portTypeToIdList,
1053         consolidationData);
1054
1055     portTypeToIdList = new ArrayList<>();
1056     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1057     TestUtils.updateComputeTemplateConsolidationData(
1058         mainST,
1059         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1060         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1061         null, null,
1062         portTypeToIdList,
1063         consolidationData);
1064
1065     portTypeToIdList = new ArrayList<>();
1066     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1067     TestUtils.updateComputeTemplateConsolidationData(
1068         mainST,
1069         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1070         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_2"),
1071         null, null,
1072         portTypeToIdList,
1073         consolidationData);
1074
1075     TestUtils.initPortConsolidationData(mainST, consolidationData);
1076     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1077         consolidationData);
1078
1079
1080     translationContext.setConsolidationData(consolidationData);
1081     List<UnifiedCompositionMode> expectedUnifiedModes =
1082         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1083     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1084   }
1085
1086   @Test
1087   public void testPortConsolidationDataRelationsSimilar() throws IOException {
1088     ConsolidationData consolidationData = new ConsolidationData();
1089     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1090     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1091         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1092             null, null);
1093
1094     TestUtils
1095         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1096
1097     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1098     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1099     TestUtils.updateComputeTemplateConsolidationData(
1100         mainST,
1101         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1102             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1103         null,
1104         portTypeToIdList,
1105         consolidationData);
1106
1107     portTypeToIdList = new ArrayList<>();
1108     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1109     TestUtils.updateComputeTemplateConsolidationData(
1110         mainST,
1111         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1112         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1113         null, null,
1114         portTypeToIdList,
1115         consolidationData);
1116
1117     portTypeToIdList = new ArrayList<>();
1118     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1119     TestUtils.updateComputeTemplateConsolidationData(
1120         mainST,
1121         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1122         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1123         null, null,
1124         portTypeToIdList,
1125         consolidationData);
1126
1127     TestUtils.initPortConsolidationData(mainST, consolidationData);
1128     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1129         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1130         null,
1131         consolidationData);
1132     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1133         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1134         null,
1135         consolidationData);
1136     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1137         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1138         null,
1139         consolidationData);
1140
1141     translationContext.setConsolidationData(consolidationData);
1142     List<UnifiedCompositionMode> expectedUnifiedModes =
1143         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1144     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1145   }
1146
1147   @Test
1148   public void testNodesInRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1149     ConsolidationData consolidationData = new ConsolidationData();
1150     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1151     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1152         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1153             null, null);
1154
1155     TestUtils
1156         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1157
1158     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1159     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1160     TestUtils.updateComputeTemplateConsolidationData(
1161         mainST,
1162         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1163             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1164         null,
1165         portTypeToIdList,
1166         consolidationData);
1167
1168     portTypeToIdList = new ArrayList<>();
1169     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1170     TestUtils.updateComputeTemplateConsolidationData(
1171         mainST,
1172         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1173         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1174         null, null,
1175         portTypeToIdList,
1176         consolidationData);
1177
1178     portTypeToIdList = new ArrayList<>();
1179     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1180     TestUtils.updateComputeTemplateConsolidationData(
1181         mainST,
1182         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1183         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1184         null, null,
1185         portTypeToIdList,
1186         consolidationData);
1187
1188     TestUtils.initPortConsolidationData(mainST, consolidationData);
1189     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1190         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1191         null,
1192         consolidationData);
1193     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1194         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1195         null,
1196         consolidationData);
1197     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1198         Arrays.asList("node_in_2"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1199         null,
1200         consolidationData);
1201
1202     translationContext.setConsolidationData(consolidationData);
1203     List<UnifiedCompositionMode> expectedUnifiedModes =
1204         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1205     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1206   }
1207
1208   @Test
1209   public void testNodesOutRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1210     ConsolidationData consolidationData = new ConsolidationData();
1211     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1212     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1213         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1214             null, null);
1215
1216     TestUtils
1217         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1218
1219     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1220     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1221     TestUtils.updateComputeTemplateConsolidationData(
1222         mainST,
1223         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1224             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1225         null,
1226         portTypeToIdList,
1227         consolidationData);
1228
1229     portTypeToIdList = new ArrayList<>();
1230     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1231     TestUtils.updateComputeTemplateConsolidationData(
1232         mainST,
1233         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1234         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1235         null, null,
1236         portTypeToIdList,
1237         consolidationData);
1238
1239     portTypeToIdList = new ArrayList<>();
1240     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1241     TestUtils.updateComputeTemplateConsolidationData(
1242         mainST,
1243         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1244         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1245         null, null,
1246         portTypeToIdList,
1247         consolidationData);
1248
1249     TestUtils.initPortConsolidationData(mainST, consolidationData);
1250     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1251         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1252         null,
1253         consolidationData);
1254     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1255         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null,
1256         null,
1257         consolidationData);
1258     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1259         Arrays.asList("node_in_1"), Arrays.asList("net_id_2"), Arrays.asList("group_id_1"), null,
1260         null,
1261         consolidationData);
1262
1263     translationContext.setConsolidationData(consolidationData);
1264     List<UnifiedCompositionMode> expectedUnifiedModes =
1265         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1266     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1267   }
1268
1269   @Test
1270   public void testGroupIdsRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1271     ConsolidationData consolidationData = new ConsolidationData();
1272     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1273     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1274         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1275             null, null);
1276
1277     TestUtils
1278         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1279
1280     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1281     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1282     TestUtils.updateComputeTemplateConsolidationData(
1283         mainST,
1284         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1285             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1286         null,
1287         portTypeToIdList,
1288         consolidationData);
1289
1290     portTypeToIdList = new ArrayList<>();
1291     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1292     TestUtils.updateComputeTemplateConsolidationData(
1293         mainST,
1294         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1295         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1296         null, null,
1297         portTypeToIdList,
1298         consolidationData);
1299
1300     portTypeToIdList = new ArrayList<>();
1301     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1302     TestUtils.updateComputeTemplateConsolidationData(
1303         mainST,
1304         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1305         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1306         null, null,
1307         portTypeToIdList,
1308         consolidationData);
1309
1310     TestUtils.initPortConsolidationData(mainST, consolidationData);
1311     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1312         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1313         Arrays.asList("group_id_1", "group_id_2"), null, null,
1314         consolidationData);
1315     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1316         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1317         Arrays.asList("group_id_1", "group_id_2"), null, null,
1318         consolidationData);
1319     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1320         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1321         Arrays.asList("group_id_1", "group_id_3"), null, null,
1322         consolidationData);
1323
1324     translationContext.setConsolidationData(consolidationData);
1325     List<UnifiedCompositionMode> expectedUnifiedModes =
1326         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1327     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1328   }
1329
1330   @Test
1331   public void testValidConsolidationForComputesWithValidGetAttr() throws IOException {
1332     ConsolidationData consolidationData = new ConsolidationData();
1333     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1334     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1335         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1336             null, null);
1337
1338     TestUtils
1339         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1340
1341     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1342     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1343
1344     TestUtils.updateComputeTemplateConsolidationData(
1345         mainST,
1346         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1347             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1348         Arrays.asList("node_1"), null,
1349         portTypeToIdList,
1350         consolidationData);
1351
1352     portTypeToIdList = new ArrayList<>();
1353     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1354     TestUtils.updateComputeTemplateConsolidationData(
1355         mainST,
1356         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1357         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1358         Arrays.asList("node_2"), null,
1359         portTypeToIdList,
1360         consolidationData);
1361
1362     portTypeToIdList = new ArrayList<>();
1363     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1364     TestUtils.updateComputeTemplateConsolidationData(
1365         mainST,
1366         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1367         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1368         Arrays.asList("node_3"), null,
1369         portTypeToIdList,
1370         consolidationData);
1371
1372     TestUtils.initPortConsolidationData(mainST, consolidationData);
1373     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1374         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1375         Arrays.asList("group_id_1", "group_id_2"), null, null,
1376         consolidationData);
1377     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1378         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1379         Arrays.asList("group_id_1", "group_id_2"), null, null,
1380         consolidationData);
1381     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1382         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1383         Arrays.asList("group_id_1", "group_id_2"), null, null,
1384         consolidationData);
1385
1386     translationContext.setConsolidationData(consolidationData);
1387     List<UnifiedCompositionMode> expectedUnifiedModes =
1388         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1389     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1390   }
1391
1392   @Test
1393   public void testInvalidConsolidationForComputesWithGetAttrForEachOther() throws IOException {
1394     ConsolidationData consolidationData = new ConsolidationData();
1395     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1396     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1397         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1398             null, null);
1399
1400     TestUtils
1401         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1402
1403     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1404     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1405
1406     TestUtils.updateComputeTemplateConsolidationData(
1407         mainST,
1408         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1409             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1410         Arrays.asList("server_ps02"), null,
1411         portTypeToIdList,
1412         consolidationData);
1413
1414     portTypeToIdList = new ArrayList<>();
1415     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1416     TestUtils.updateComputeTemplateConsolidationData(
1417         mainST,
1418         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1419         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1420         Arrays.asList("node_1"), null,
1421         portTypeToIdList,
1422         consolidationData);
1423
1424     portTypeToIdList = new ArrayList<>();
1425     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1426     TestUtils.updateComputeTemplateConsolidationData(
1427         mainST,
1428         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1429         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1430         Arrays.asList("node_2"), null,
1431         portTypeToIdList,
1432         consolidationData);
1433
1434     TestUtils.initPortConsolidationData(mainST, consolidationData);
1435     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1436         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1437         Arrays.asList("group_id_1", "group_id_2"), null, null,
1438         consolidationData);
1439     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1440         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1441         Arrays.asList("group_id_1", "group_id_2"), null, null,
1442         consolidationData);
1443     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1444         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1445         Arrays.asList("group_id_1", "group_id_2"), null, null,
1446         consolidationData);
1447
1448     translationContext.setConsolidationData(consolidationData);
1449     List<UnifiedCompositionMode> expectedUnifiedModes =
1450         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1451     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1452   }
1453
1454   @Test
1455   public void testValidConsolidationForPortsWithValidGetAttr() throws IOException {
1456     ConsolidationData consolidationData = new ConsolidationData();
1457     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1458     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1459         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1460             null, null);
1461
1462     TestUtils
1463         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1464
1465     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1466     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1467
1468     TestUtils.updateComputeTemplateConsolidationData(
1469         mainST,
1470         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1471             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null,
1472         null,
1473         portTypeToIdList,
1474         consolidationData);
1475
1476     portTypeToIdList = new ArrayList<>();
1477     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1478     TestUtils.updateComputeTemplateConsolidationData(
1479         mainST,
1480         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1481         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1482         null, null,
1483         portTypeToIdList,
1484         consolidationData);
1485
1486     portTypeToIdList = new ArrayList<>();
1487     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1488     TestUtils.updateComputeTemplateConsolidationData(
1489         mainST,
1490         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1491         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1492         null, null,
1493         portTypeToIdList,
1494         consolidationData);
1495
1496     TestUtils.initPortConsolidationData(mainST, consolidationData);
1497     List<String> portNodeTemplateIds =
1498         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1499     List<List<String>> nodesConnectedInIds =
1500         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1501             Arrays.asList("node_in_1"));
1502     List<List<String>> nodesConnectedOutIds =
1503         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1504             Arrays.asList("node_out_1"));
1505     List<List<String>> getAttrInIds =
1506         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"),
1507             Arrays.asList("get_attr_3"));
1508     List<List<String>> groupIds =
1509         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1510             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1511     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1512
1513     TestUtils.updateMultiplePortConsolidationDatas(
1514         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1515         getAttrInIds, getAttrOut, consolidationData);
1516
1517     translationContext.setConsolidationData(consolidationData);
1518     List<UnifiedCompositionMode> expectedUnifiedModes =
1519         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1520     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1521   }
1522
1523   @Test
1524   public void testInvalidConsolidationForPortsWithGetAttrInForEachOther() throws IOException {
1525     ConsolidationData consolidationData = new ConsolidationData();
1526     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1527     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1528         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation" +
1529                 "/three_ports_similar_relations",
1530             null, null);
1531
1532     TestUtils
1533         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1534
1535     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1536     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1537
1538     TestUtils.updateComputeTemplateConsolidationData(
1539         mainST,
1540         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1541             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1542         Arrays.asList("node_1"), null,
1543         portTypeToIdList,
1544         consolidationData);
1545
1546     portTypeToIdList = new ArrayList<>();
1547     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1548     TestUtils.updateComputeTemplateConsolidationData(
1549         mainST,
1550         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1551         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1552         Arrays.asList("node_2"), null,
1553         portTypeToIdList,
1554         consolidationData);
1555
1556     portTypeToIdList = new ArrayList<>();
1557     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1558     TestUtils.updateComputeTemplateConsolidationData(
1559         mainST,
1560         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1561         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1562         Arrays.asList("node_3"), null,
1563         portTypeToIdList,
1564         consolidationData);
1565
1566     TestUtils.initPortConsolidationData(mainST, consolidationData);
1567     List<String> portNodeTemplateIds =
1568         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1569     List<List<String>> nodesConnectedInIds =
1570         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1571             Arrays.asList("node_in_1"));
1572     List<List<String>> nodesConnectedOutIds =
1573         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1574             Arrays.asList("node_out_1"));
1575     List<List<String>> getAttrInIds =
1576         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"),
1577             Arrays.asList("cm01_port_1"));
1578     List<List<String>> groupIds =
1579         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1580             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1581     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1582
1583     TestUtils.updateMultiplePortConsolidationDatas(
1584         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1585         getAttrInIds, getAttrOut, consolidationData);
1586
1587     translationContext.setConsolidationData(consolidationData);
1588     List<UnifiedCompositionMode> expectedUnifiedModes =
1589         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1590     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1591   }
1592
1593   @Test
1594   public void testValidConsolidationForComputesWithSamePortTypesPointingByGetAttrIn() throws
1595       IOException {
1596     ConsolidationData consolidationData = new ConsolidationData();
1597     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1598     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1599         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1600             null, null);
1601
1602     TestUtils
1603         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1604
1605     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1606     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1607
1608     TestUtils.updateComputeTemplateConsolidationData(
1609         mainST,
1610         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1611             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1612         Arrays.asList("cm01_port_1"), null,
1613         portTypeToIdList,
1614         consolidationData);
1615
1616     portTypeToIdList = new ArrayList<>();
1617     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1618     TestUtils.updateComputeTemplateConsolidationData(
1619         mainST,
1620         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1621         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1622         Arrays.asList("cm01_port_2"), null,
1623         portTypeToIdList,
1624         consolidationData);
1625
1626     portTypeToIdList = new ArrayList<>();
1627     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1628     TestUtils.updateComputeTemplateConsolidationData(
1629         mainST,
1630         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1631         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1632         Arrays.asList("cm01_port_3"), null,
1633         portTypeToIdList,
1634         consolidationData);
1635
1636     TestUtils.initPortConsolidationData(mainST, consolidationData);
1637     List<String> portNodeTemplateIds =
1638         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1639     List<List<String>> nodesConnectedInIds =
1640         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1641             Arrays.asList("node_in_1"));
1642     List<List<String>> nodesConnectedOutIds =
1643         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1644             Arrays.asList("node_out_1"));
1645     List<List<String>> getAttrInIds =
1646         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"),
1647             Arrays.asList("get_attr_3"));
1648     List<List<String>> groupIds =
1649         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1650             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1651     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1652
1653     TestUtils.updateMultiplePortConsolidationDatas(
1654         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1655         getAttrInIds, getAttrOut, consolidationData);
1656
1657     translationContext.setConsolidationData(consolidationData);
1658     List<UnifiedCompositionMode> expectedUnifiedModes =
1659         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1660     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1661   }
1662
1663   @Test
1664   public void testValidGetAttrOutFromComputes() throws IOException {
1665     ConsolidationData consolidationData = new ConsolidationData();
1666     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1667     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1668         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1669             null, null);
1670
1671     TestUtils
1672         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1673
1674     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1675     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1676     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1677     TestUtils.updateComputeTemplateConsolidationData(
1678         mainST,
1679         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1680             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1681         Arrays.asList("cm01_port_1"),
1682         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1683         portTypeToIdList,
1684         consolidationData);
1685
1686     portTypeToIdList = new ArrayList<>();
1687     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1688     TestUtils.updateComputeTemplateConsolidationData(
1689         mainST,
1690         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1691         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1692         Arrays.asList("cm01_port_1"),
1693         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1694         portTypeToIdList,
1695         consolidationData);
1696
1697     portTypeToIdList = new ArrayList<>();
1698     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1699     TestUtils.updateComputeTemplateConsolidationData(
1700         mainST,
1701         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1702         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1703         Arrays.asList("cm01_port_1"),
1704         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1705         portTypeToIdList,
1706         consolidationData);
1707
1708     TestUtils.initPortConsolidationData(mainST, consolidationData);
1709     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1710         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1711         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_2"), null,
1712         consolidationData);
1713     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1714         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1715         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_1"), null,
1716         consolidationData);
1717     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1718         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1719         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("rm01_port_1"), null,
1720         consolidationData);
1721
1722     translationContext.setConsolidationData(consolidationData);
1723     List<UnifiedCompositionMode> expectedUnifiedModes =
1724         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1725     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1726   }
1727
1728   @Test
1729   public void testInValidGetAttrOutFromComputesPortTypeDifferent() throws IOException {
1730     ConsolidationData consolidationData = new ConsolidationData();
1731     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1732     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1733         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1734             null, null);
1735
1736     TestUtils
1737         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1738
1739     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1740     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1741     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1742     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1743     TestUtils.updateComputeTemplateConsolidationData(
1744         mainST,
1745         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1746             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1747         Arrays.asList("cm01_port_1"),
1748         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1749         portTypeToIdList,
1750         consolidationData);
1751
1752     portTypeToIdList = new ArrayList<>();
1753     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1754     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1755     TestUtils.updateComputeTemplateConsolidationData(
1756         mainST,
1757         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1758         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1759         Arrays.asList("cm01_port_1"),
1760         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1761         portTypeToIdList,
1762         consolidationData);
1763
1764     portTypeToIdList = new ArrayList<>();
1765     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1766     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1767     TestUtils.updateComputeTemplateConsolidationData(
1768         mainST,
1769         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1770         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1771         Arrays.asList("cm01_port_1"),
1772         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)),
1773         portTypeToIdList,
1774         consolidationData);
1775
1776     TestUtils.initPortConsolidationData(mainST, consolidationData);
1777
1778     List<String> portNodeTemplateIds =
1779         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1780             "sm01_port_3");
1781     List<List<String>> nodesConnectedInIds =
1782         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1783                 ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1784             Arrays.asList("node_in_1"));
1785     List<List<String>> nodesConnectedOutIds =
1786         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1787                 ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1788             Arrays.asList("node_out_1"));
1789     List<List<String>> getAttrInIds =
1790         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList
1791                 ("get_attr_3"), Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"),
1792             Arrays.asList("get_attr_3"));
1793     List<List<String>> groupIds =
1794         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1795             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
1796             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1797                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1798     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null, null,
1799         null, null);
1800
1801     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1802         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
1803         consolidationData);
1804
1805     translationContext.setConsolidationData(consolidationData);
1806     List<UnifiedCompositionMode> expectedUnifiedModes =
1807         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
1808     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1809   }
1810
1811   @Test
1812   public void testValidGetAttrOutFromPorts() throws IOException {
1813     ConsolidationData consolidationData = new ConsolidationData();
1814     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1815     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1816         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1817             null, null);
1818
1819     TestUtils
1820         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1821
1822     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1823     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1824     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1825     TestUtils.updateComputeTemplateConsolidationData(
1826         mainST,
1827         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1828             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1829         Arrays.asList("cm01_port_1"), null,
1830         portTypeToIdList,
1831         consolidationData);
1832
1833     portTypeToIdList = new ArrayList<>();
1834     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1835     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1836     TestUtils.updateComputeTemplateConsolidationData(
1837         mainST,
1838         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1839         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1840         Arrays.asList("cm01_port_1"), null,
1841         portTypeToIdList,
1842         consolidationData);
1843
1844     portTypeToIdList = new ArrayList<>();
1845     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1846     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1847     TestUtils.updateComputeTemplateConsolidationData(
1848         mainST,
1849         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1850         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1851         Arrays.asList("cm01_port_1"), null,
1852         portTypeToIdList,
1853         consolidationData);
1854
1855     TestUtils.initPortConsolidationData(mainST, consolidationData);
1856
1857     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
1858     List<String> portNodeTemplateIds =
1859         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1860             "sm01_port_3");
1861     List<List<String>> nodesConnectedInIds =
1862         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1863                 ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1864             Arrays.asList("node_in_1"));
1865     List<List<String>> nodesConnectedOutIds =
1866         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1867                 ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1868             Arrays.asList("node_out_1"));
1869     List<List<String>> getAttrInIds =
1870         Arrays.asList(null, null, null, null, null, null);
1871     List<List<String>> groupIds =
1872         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1873             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
1874             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1875                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1876     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
1877         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)),
1878         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_2", getAttrFuncData)),
1879         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)),
1880         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1881         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)),
1882         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData)));
1883
1884     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1885         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
1886         consolidationData);
1887
1888     translationContext.setConsolidationData(consolidationData);
1889     List<UnifiedCompositionMode> expectedUnifiedModes =
1890         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1891     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1892   }
1893
1894   @Test
1895   public void testInvalidGetAttrOutFromPorts() throws IOException {
1896     ConsolidationData consolidationData = new ConsolidationData();
1897     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1898     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1899         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1900             null, null);
1901
1902     TestUtils
1903         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1904
1905     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1906     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1907     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1908     TestUtils.updateComputeTemplateConsolidationData(
1909         mainST,
1910         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1911             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1912         Arrays.asList("cm01_port_1"), null,
1913         portTypeToIdList,
1914         consolidationData);
1915
1916     portTypeToIdList = new ArrayList<>();
1917     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1918     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1919     TestUtils.updateComputeTemplateConsolidationData(
1920         mainST,
1921         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1922         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1923         Arrays.asList("cm01_port_1"), null,
1924         portTypeToIdList,
1925         consolidationData);
1926
1927     portTypeToIdList = new ArrayList<>();
1928     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1929     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1930     TestUtils.updateComputeTemplateConsolidationData(
1931         mainST,
1932         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1933         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1934         Arrays.asList("cm01_port_1"), null,
1935         portTypeToIdList,
1936         consolidationData);
1937
1938     TestUtils.initPortConsolidationData(mainST, consolidationData);
1939
1940     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
1941     List<String> portNodeTemplateIds =
1942         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1943             "sm01_port_3");
1944     List<List<String>> nodesConnectedInIds =
1945         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1946                 ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"),
1947             Arrays.asList("node_in_1"));
1948     List<List<String>> nodesConnectedOutIds =
1949         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1950                 ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"),
1951             Arrays.asList("node_out_1"));
1952     List<List<String>> getAttrInIds =
1953         Arrays.asList(null, null, null, null, null, null);
1954     List<List<String>> groupIds =
1955         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1956             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
1957             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1958                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1959     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
1960         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)),
1961         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)),
1962         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)),
1963         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1964         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)),
1965         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData)));
1966
1967     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1968         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
1969         consolidationData);
1970
1971     translationContext.setConsolidationData(consolidationData);
1972     List<UnifiedCompositionMode> expectedUnifiedModes =
1973         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
1974     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1975   }
1976
1977   @Test
1978   public void testSubstitutionConsolidationPreConditionTrue() throws IOException {
1979     translationContext = new TranslationContext();
1980     String mainSTName = "MainServiceTemplate.yaml";
1981     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
1982
1983     ConsolidationData consolidationData = new ConsolidationData();
1984     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
1985         consolidationData);
1986     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
1987         "org.openecomp.resource.vfc.nodes.heat" +
1988             ".pcm_server", consolidationData);
1989     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
1990         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
1991     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
1992         "org.openecomp.resource.vfc.nodes.heat" +
1993             ".pcm_server", consolidationData);
1994     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
1995         "org.openecomp.resource.vfc.nodes" +
1996             ".heat.pcm_server", "pcm_server", consolidationData);
1997
1998     translationContext.setConsolidationData(consolidationData);
1999
2000     addMockServiceTemplateToContext(mainSTName, "Main");
2001     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2002
2003     verifySubstitutionServiceTemplateConsolidation
2004         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2005             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2006             UnifiedCompositionMode.NestedSingleCompute);
2007   }
2008
2009   @Test
2010   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeType()
2011       throws IOException {
2012     translationContext = new TranslationContext();
2013     String mainSTName = "MainServiceTemplate.yaml";
2014     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2015
2016     ConsolidationData consolidationData = new ConsolidationData();
2017     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
2018         consolidationData);
2019     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2020         "org.openecomp.resource.vfc.nodes.heat" +
2021             ".pcm_server", consolidationData);
2022     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2023         "org.openecomp.resource.vfc.nodes" +
2024             ".heat.pcm_server", "server_pcm_001", consolidationData);
2025     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2026         "org.openecomp.resource.vfc.nodes.heat" +
2027             ".pcm_server", consolidationData);
2028
2029     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_oam_001"),
2030         consolidationData);
2031     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2032         "org.openecomp.resource.vfc.nodes.heat" +
2033             ".oam_server", consolidationData);
2034     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2035         "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam_001", consolidationData);
2036     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2037         "org.openecomp.resource.vfc.nodes.heat" +
2038             ".oam_server", consolidationData);
2039
2040     translationContext.setConsolidationData(consolidationData);
2041
2042     addMockServiceTemplateToContext(mainSTName, "Main");
2043     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2044
2045     verifySubstitutionServiceTemplateConsolidation
2046         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2047             translationContext.getTranslatedServiceTemplates().get
2048                 (nestedServiceTemplateName), UnifiedCompositionMode.SingleSubstitution);
2049   }
2050
2051   @Test
2052   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeOfSameType()
2053       throws IOException {
2054     translationContext = new TranslationContext();
2055     String mainSTName = "MainServiceTemplate.yaml";
2056     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2057
2058     ConsolidationData consolidationData = new ConsolidationData();
2059     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
2060         consolidationData);
2061     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2062         "org.openecomp.resource.vfc.nodes.heat" +
2063             ".pcm_server", consolidationData);
2064     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2065         "org.openecomp.resource.vfc.nodes.heat" +
2066             ".pcm_server", consolidationData);
2067     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2068         "org.openecomp.resource.vfc.nodes" +
2069             ".heat.pcm_server", "pcm_server_1", consolidationData);
2070
2071     TestUtils
2072         .updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("server_pcm_002"),
2073             consolidationData);
2074     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2075         "org.openecomp.resource.vfc.nodes" +
2076             ".heat.pcm_server", "pcm_server_2", consolidationData);
2077
2078     translationContext.setConsolidationData(consolidationData);
2079
2080     addMockServiceTemplateToContext(mainSTName, "Main");
2081     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2082
2083     Mockito.doNothing().when(consolidationService).serviceTemplateConsolidation
2084         (translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), translationContext);
2085     verifySubstitutionServiceTemplateConsolidation
2086         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2087             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2088             UnifiedCompositionMode.SingleSubstitution);
2089   }
2090
2091   @Test
2092   public void testSubstitutionConsolidationPreConditionFalseNestedInsideNested() {
2093     translationContext = new TranslationContext();
2094     String mainSTName = "MainServiceTemplate.yaml";
2095     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2096
2097     ConsolidationData consolidationData = new ConsolidationData();
2098     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
2099         consolidationData);
2100     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2101         "org.openecomp.resource.vfc.nodes.heat" +
2102             ".pcm_server", consolidationData);
2103     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2104         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
2105     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2106         "org.openecomp.resource.vfc.nodes.heat" +
2107             ".pcm_server", consolidationData);
2108     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2109         "org.openecomp.resource.vfc.nodes" +
2110             ".heat.pcm_server", "pcm_server", consolidationData);
2111
2112     TestUtils
2113         .updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("nested_resource"),
2114             consolidationData);
2115
2116     translationContext.setConsolidationData(consolidationData);
2117
2118     addMockServiceTemplateToContext(mainSTName, "Main");
2119     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2120
2121     verifySubstitutionServiceTemplateConsolidation
2122         (0, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2123             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2124             UnifiedCompositionMode.SingleSubstitution);
2125   }
2126
2127
2128   private void verifyMainServiceTemplateConsolidation(int times,
2129                                                       List<UnifiedCompositionMode> expectedUnifiedCompositionModes,
2130                                                       ToscaServiceModel toscaServiceModel) {
2131     consolidationService
2132         .serviceTemplateConsolidation(toscaServiceModel.getServiceTemplates().get(mainST),
2133             translationContext);
2134
2135     ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates().get(mainST);
2136     verify(unifiedCompositionServiceMock, times(times))
2137         .createUnifiedComposition(
2138             eq(mainServiceTemplate),
2139             any(),
2140             unifiedModelListArg.capture(),
2141             unifiedCompositionModeArg.capture(),
2142             eq(translationContext));
2143
2144     List<UnifiedCompositionMode> actualUnifiedCompositionModes =
2145         unifiedCompositionModeArg.getAllValues();
2146     Assert.assertEquals(expectedUnifiedCompositionModes, actualUnifiedCompositionModes);
2147   }
2148
2149   private void verifySubstitutionServiceTemplateConsolidation(int times,
2150                                                               ServiceTemplate mainST,
2151                                                               ServiceTemplate nestedST,
2152                                                               UnifiedCompositionMode expectedMode) {
2153     consolidationService.substitutionServiceTemplateConsolidation(null, mainST,
2154         nestedST, translationContext);
2155
2156     if (expectedMode.equals(UnifiedCompositionMode.NestedSingleCompute)) {
2157       verify(unifiedCompositionServiceMock, times(times)).
2158           createUnifiedComposition(
2159               eq(mainST),
2160               eq(nestedST),
2161               unifiedModelListArg.capture(),
2162               unifiedCompositionModeArg.capture(),
2163               eq(translationContext));
2164       Assert.assertEquals(expectedMode, unifiedCompositionModeArg.getValue());
2165
2166     }
2167   }
2168
2169   private void addMockServiceTemplateToContext(String serviceTemplateFileName,
2170                                                String templateName) {
2171     ServiceTemplate serviceTemplate = new ServiceTemplate();
2172     Map<String, String> metadata = new HashMap<>();
2173     metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, templateName);
2174     serviceTemplate.setMetadata(metadata);
2175     translationContext.getTranslatedServiceTemplates()
2176         .put(serviceTemplateFileName, serviceTemplate);
2177   }
2178
2179   */
2180 }