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