[sdc] update code of sdc
[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 testFalseComputeConsolidationOneImageNameMissing() throws IOException {
512     ConsolidationData consolidationData = new ConsolidationData();
513     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.pd_server";
514     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
515         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_missing",
516             null, null);
517
518     TestUtils.initComputeNodeTypeInConsolidationData(
519         mainST, computeNodeTypeName, consolidationData);
520
521     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
522     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
523     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
524
525     TestUtils.updateComputeTemplateConsolidationData(
526         mainST,
527         computeNodeTypeName, "server_pd01",
528         null, null, null, null, null, null,
529         portTypeToIdList, consolidationData);
530
531     TestUtils.updateComputeTemplateConsolidationData(
532         mainST,
533         computeNodeTypeName, "server_pd02",
534         null, null, null, null, null, null,
535         portTypeToIdList, consolidationData);
536
537     TestUtils.updateComputeTemplateConsolidationData(
538         mainST,
539         computeNodeTypeName, "server_pd03",
540         null, null, null, null, null, null,
541         portTypeToIdList, consolidationData);
542
543     TestUtils.initPortConsolidationData(mainST, consolidationData);
544     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
545         null, null, null, null, null,
546         consolidationData);
547     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
548         null, null, null, null, null,
549         consolidationData);
550
551     translationContext.setConsolidationData(consolidationData);
552     List<UnifiedCompositionMode> expectedUnifiedModes =
553         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
554     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
555   }
556
557   @Test
558   public void testFalseComputeConsolidationForTwoSimilarFlavorNamesAndOneDiff() throws IOException {
559     ConsolidationData consolidationData = new ConsolidationData();
560     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
561     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
562         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_flavor_name_diff",
563             null, null);
564
565     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
566
567     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
568     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
569     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
570
571     TestUtils.updateComputeTemplateConsolidationData(
572         mainST,
573         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
574         portTypeToIdList, consolidationData);
575
576     TestUtils.updateComputeTemplateConsolidationData(
577         mainST,
578         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
579         portTypeToIdList, consolidationData);
580
581     TestUtils.updateComputeTemplateConsolidationData(
582         mainST,
583         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
584         portTypeToIdList, consolidationData);
585
586     TestUtils.initPortConsolidationData(mainST, consolidationData);
587     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
588         null, null, null, null, null,
589         consolidationData);
590     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
591         null, null, null, null, null,
592         consolidationData);
593
594     translationContext.setConsolidationData(consolidationData);
595     List<UnifiedCompositionMode> expectedUnifiedModes =
596         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
597     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
598   }
599
600   @Test
601   public void testFalsePortConsolidationForOneDiffFixedIpsValue() throws IOException {
602     ConsolidationData consolidationData = new ConsolidationData();
603     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
604     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
605         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_exCP_naming_diff",
606             null, null);
607
608     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
609
610     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
611     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
612     TestUtils.updateComputeTemplateConsolidationData(
613         mainST,
614         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
615         portTypeToIdList, consolidationData);
616
617     portTypeToIdList = new ArrayList<>();
618     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
619     TestUtils.updateComputeTemplateConsolidationData(
620         mainST,
621         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
622         portTypeToIdList, consolidationData);
623
624     portTypeToIdList = new ArrayList<>();
625     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
626     TestUtils.updateComputeTemplateConsolidationData(
627         mainST,
628         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
629         portTypeToIdList, consolidationData);
630
631     TestUtils.initPortConsolidationData(mainST, consolidationData);
632     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
633         null, null, null, null, null,
634         consolidationData);
635
636     translationContext.setConsolidationData(consolidationData);
637     List<UnifiedCompositionMode> expectedUnifiedModes =
638         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
639     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
640   }
641
642   @Test
643   public void testFalsePortConsolidationForOneDiffExpcNaming(){
644
645   }
646
647   @Test
648   public void testFalsePortConsolidationForTwoPortsWithFixedIpsAndOneWithout() throws IOException {
649     ConsolidationData consolidationData = new ConsolidationData();
650     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
651     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
652         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_fixed_ips",
653             null, null);
654
655     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
656
657     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
658     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
659     TestUtils.updateComputeTemplateConsolidationData(
660         mainST,
661         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
662         portTypeToIdList, consolidationData);
663
664     portTypeToIdList = new ArrayList<>();
665     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
666     TestUtils.updateComputeTemplateConsolidationData(
667         mainST,
668         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
669         portTypeToIdList, consolidationData);
670
671     portTypeToIdList = new ArrayList<>();
672     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
673     TestUtils.updateComputeTemplateConsolidationData(
674         mainST,
675         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
676         portTypeToIdList, consolidationData);
677
678     TestUtils.initPortConsolidationData(mainST, consolidationData);
679     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
680         null, null, null, null, null,
681         consolidationData);
682
683     translationContext.setConsolidationData(consolidationData);
684     List<UnifiedCompositionMode> expectedUnifiedModes =
685         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
686     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
687   }
688
689   @Test
690   public void testFalsePortConsolidationForTwoPortsWithAddressPairsAndOneWithout()
691       throws IOException {
692     ConsolidationData consolidationData = new ConsolidationData();
693     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
694     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
695         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_allowed_address_pairs",
696             null, null);
697
698     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
699
700     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
701     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
702     TestUtils.updateComputeTemplateConsolidationData(
703         mainST,
704         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
705         portTypeToIdList, consolidationData);
706     portTypeToIdList = new ArrayList<>();
707     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
708     TestUtils.updateComputeTemplateConsolidationData(
709         mainST,
710         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
711         portTypeToIdList, consolidationData);
712
713     portTypeToIdList = new ArrayList<>();
714     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
715     TestUtils.updateComputeTemplateConsolidationData(
716         mainST,
717         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
718         portTypeToIdList, consolidationData);
719
720     TestUtils.initPortConsolidationData(mainST, consolidationData);
721     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
722         null, null, null, null, null,
723         consolidationData);
724
725     translationContext.setConsolidationData(consolidationData);
726     List<UnifiedCompositionMode> expectedUnifiedModes =
727         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
728     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
729   }
730
731   @Test
732   public void testFalsePortConsolidationForTwoPortsWithMacAddressAndOneWithout()
733       throws IOException {
734     ConsolidationData consolidationData = new ConsolidationData();
735     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
736     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
737         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_port_without_mac_address",
738             null, null);
739
740     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
741
742     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
743     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
744     TestUtils.updateComputeTemplateConsolidationData(
745         mainST,
746         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
747         portTypeToIdList, consolidationData);
748
749     portTypeToIdList = new ArrayList<>();
750     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
751     TestUtils.updateComputeTemplateConsolidationData(
752         mainST,
753         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
754         portTypeToIdList, consolidationData);
755     portTypeToIdList = new ArrayList<>();
756     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
757     TestUtils.updateComputeTemplateConsolidationData(
758         mainST,
759         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
760         portTypeToIdList, consolidationData);
761
762     TestUtils.initPortConsolidationData(mainST, consolidationData);
763     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
764         null, null, null, null, null,
765         consolidationData);
766
767     translationContext.setConsolidationData(consolidationData);
768     List<UnifiedCompositionMode> expectedUnifiedModes =
769         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
770     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
771   }
772
773   @Test
774   public void testValidPortConsolidationForPortsWithNoneOfTheCheckedProperties()
775       throws IOException {
776     ConsolidationData consolidationData = new ConsolidationData();
777     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
778     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
779         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/ports_with_none_of_the_properties",
780             null, null);
781
782     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
783
784     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
785     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
786     TestUtils.updateComputeTemplateConsolidationData(
787         mainST,
788         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
789         portTypeToIdList, consolidationData);
790
791     portTypeToIdList = new ArrayList<>();
792     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
793     TestUtils.updateComputeTemplateConsolidationData(
794         mainST,
795         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
796         portTypeToIdList, consolidationData);
797
798     portTypeToIdList = new ArrayList<>();
799     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
800     TestUtils.updateComputeTemplateConsolidationData(
801         mainST,
802         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
803         portTypeToIdList, consolidationData);
804
805     TestUtils.initPortConsolidationData(mainST, consolidationData);
806     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
807         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
808         consolidationData);
809     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
810         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
811         consolidationData);
812     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
813         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
814         consolidationData);
815
816     translationContext.setConsolidationData(consolidationData);
817     List<UnifiedCompositionMode> expectedUnifiedModes =
818         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
819     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
820   }
821
822   @Test
823   public void testComputeRelationsSimilarBetweenComputeNodes() throws IOException {
824     ConsolidationData consolidationData = new ConsolidationData();
825     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
826     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
827         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_with_same_relations",
828             null, null);
829
830     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
831
832     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
833     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
834     TestUtils.updateComputeTemplateConsolidationData(
835         mainST,
836         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"),
837         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
838         null, null,
839         portTypeToIdList,
840         consolidationData);
841
842     portTypeToIdList = new ArrayList<>();
843     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
844     TestUtils.updateComputeTemplateConsolidationData(
845         mainST,
846         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
847         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
848         null, null,
849         portTypeToIdList,
850         consolidationData);
851
852     portTypeToIdList = new ArrayList<>();
853     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
854     TestUtils.updateComputeTemplateConsolidationData(
855         mainST,
856         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"), Arrays.asList("cmaui_volume"),
857         Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
858         portTypeToIdList,
859         consolidationData);
860
861     TestUtils.initPortConsolidationData(mainST, consolidationData);
862     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
863         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
864         consolidationData);
865     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
866         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
867         consolidationData);
868     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
869         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
870         consolidationData);
871
872
873     translationContext.setConsolidationData(consolidationData);
874     List<UnifiedCompositionMode> expectedUnifiedModes =
875         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
876     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
877   }
878
879   @Test
880   public void testNodesInRelationsDiffBetweenThreeComputes() throws IOException {
881     ConsolidationData consolidationData = new ConsolidationData();
882     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
883     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
884         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
885             null, null);
886
887     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
888
889     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
890     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
891     TestUtils.updateComputeTemplateConsolidationData(
892         mainST,
893         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
894             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
895         portTypeToIdList,
896         consolidationData);
897
898     portTypeToIdList = new ArrayList<>();
899     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
900     TestUtils.updateComputeTemplateConsolidationData(
901         mainST,
902         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
903         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
904         null,null ,
905         portTypeToIdList,
906         consolidationData);
907
908     portTypeToIdList = new ArrayList<>();
909     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
910     TestUtils.updateComputeTemplateConsolidationData(
911         mainST,
912         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_2"), Arrays.asList
913             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
914         portTypeToIdList,
915         consolidationData);
916
917     TestUtils.initPortConsolidationData(mainST, consolidationData);
918     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
919         consolidationData);
920
921
922     translationContext.setConsolidationData(consolidationData);
923     List<UnifiedCompositionMode> expectedUnifiedModes =
924         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
925     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
926   }
927
928   @Test
929   public void testNodesOutRelationsDiffBetweenThreeComputes() throws IOException {
930     ConsolidationData consolidationData = new ConsolidationData();
931     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
932     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
933         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
934             null, null);
935
936     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
937
938     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
939     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
940     TestUtils.updateComputeTemplateConsolidationData(
941         mainST,
942         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
943             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
944         portTypeToIdList,
945         consolidationData);
946
947     portTypeToIdList = new ArrayList<>();
948     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
949     TestUtils.updateComputeTemplateConsolidationData(
950         mainST,
951         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
952         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
953         null, null,
954         portTypeToIdList,
955         consolidationData);
956
957     portTypeToIdList = new ArrayList<>();
958     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
959     TestUtils.updateComputeTemplateConsolidationData(
960         mainST,
961         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
962         Arrays.asList("cmaui_volume_1"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
963         null, null,
964         portTypeToIdList,
965         consolidationData);
966
967     TestUtils.initPortConsolidationData(mainST, consolidationData);
968     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
969         consolidationData);
970
971
972     translationContext.setConsolidationData(consolidationData);
973     List<UnifiedCompositionMode> expectedUnifiedModes =
974         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
975     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
976   }
977
978   @Test
979   public void testVolumeRelationsDiffBetweenThreeComputes() throws IOException {
980     ConsolidationData consolidationData = new ConsolidationData();
981     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
982     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
983         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
984             null, null);
985
986     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
987
988     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
989     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
990     TestUtils.updateComputeTemplateConsolidationData(
991         mainST,
992         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
993             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"), null, null,
994         portTypeToIdList,
995         consolidationData);
996
997     portTypeToIdList = new ArrayList<>();
998     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
999     TestUtils.updateComputeTemplateConsolidationData(
1000         mainST,
1001         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1002         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id1"),
1003         null, null,
1004         portTypeToIdList,
1005         consolidationData);
1006
1007     portTypeToIdList = new ArrayList<>();
1008     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1009     TestUtils.updateComputeTemplateConsolidationData(
1010         mainST,
1011         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1012         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume_1"), Arrays.asList("group_id1"),
1013         null, null,
1014         portTypeToIdList,
1015         consolidationData);
1016
1017     TestUtils.initPortConsolidationData(mainST, consolidationData);
1018     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1019         consolidationData);
1020
1021
1022     translationContext.setConsolidationData(consolidationData);
1023     List<UnifiedCompositionMode> expectedUnifiedModes =
1024         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1025     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1026   }
1027
1028   @Test
1029   public void testGroupRelationsDiffBetweenThreeComputes() throws IOException {
1030     ConsolidationData consolidationData = new ConsolidationData();
1031     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1032     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1033         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
1034             null, null);
1035
1036     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1037
1038     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1039     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1040     TestUtils.updateComputeTemplateConsolidationData(
1041         mainST,
1042         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1043             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1044         portTypeToIdList,
1045         consolidationData);
1046
1047     portTypeToIdList = new ArrayList<>();
1048     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1049     TestUtils.updateComputeTemplateConsolidationData(
1050         mainST,
1051         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1052         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1053         null, null,
1054         portTypeToIdList,
1055         consolidationData);
1056
1057     portTypeToIdList = new ArrayList<>();
1058     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1059     TestUtils.updateComputeTemplateConsolidationData(
1060         mainST,
1061         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1062         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_2"),
1063         null, null,
1064         portTypeToIdList,
1065         consolidationData);
1066
1067     TestUtils.initPortConsolidationData(mainST, consolidationData);
1068     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1069         consolidationData);
1070
1071
1072     translationContext.setConsolidationData(consolidationData);
1073     List<UnifiedCompositionMode> expectedUnifiedModes =
1074         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1075     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1076   }
1077
1078   @Test
1079   public void testPortConsolidationDataRelationsSimilar() throws IOException {
1080     ConsolidationData consolidationData = new ConsolidationData();
1081     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1082     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1083         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1084             null, null);
1085
1086     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1087
1088     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1089     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1090     TestUtils.updateComputeTemplateConsolidationData(
1091         mainST,
1092         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1093             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1094         portTypeToIdList,
1095         consolidationData);
1096
1097     portTypeToIdList = new ArrayList<>();
1098     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1099     TestUtils.updateComputeTemplateConsolidationData(
1100         mainST,
1101         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1102         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1103         null, null,
1104         portTypeToIdList,
1105         consolidationData);
1106
1107     portTypeToIdList = new ArrayList<>();
1108     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1109     TestUtils.updateComputeTemplateConsolidationData(
1110         mainST,
1111         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1112         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1113         null, null,
1114         portTypeToIdList,
1115         consolidationData);
1116
1117     TestUtils.initPortConsolidationData(mainST, consolidationData);
1118     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1119         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1120         consolidationData);
1121     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1122         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1123         consolidationData);
1124     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1125         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1126         consolidationData);
1127
1128     translationContext.setConsolidationData(consolidationData);
1129     List<UnifiedCompositionMode> expectedUnifiedModes =
1130         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1131     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1132   }
1133
1134   @Test
1135   public void testNodesInRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1136     ConsolidationData consolidationData = new ConsolidationData();
1137     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1138     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1139         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1140             null, null);
1141
1142     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1143
1144     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1145     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1146     TestUtils.updateComputeTemplateConsolidationData(
1147         mainST,
1148         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1149             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1150         portTypeToIdList,
1151         consolidationData);
1152
1153     portTypeToIdList = new ArrayList<>();
1154     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1155     TestUtils.updateComputeTemplateConsolidationData(
1156         mainST,
1157         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1158         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1159         null, null,
1160         portTypeToIdList,
1161         consolidationData);
1162
1163     portTypeToIdList = new ArrayList<>();
1164     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1165     TestUtils.updateComputeTemplateConsolidationData(
1166         mainST,
1167         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1168         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1169         null, null,
1170         portTypeToIdList,
1171         consolidationData);
1172
1173     TestUtils.initPortConsolidationData(mainST, consolidationData);
1174     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1175         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1176         consolidationData);
1177     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1178         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1179         consolidationData);
1180     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1181         Arrays.asList("node_in_2"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1182         consolidationData);
1183
1184     translationContext.setConsolidationData(consolidationData);
1185     List<UnifiedCompositionMode> expectedUnifiedModes =
1186         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1187     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1188   }
1189
1190   @Test
1191   public void testNodesOutRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1192     ConsolidationData consolidationData = new ConsolidationData();
1193     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1194     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1195         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1196             null, null);
1197
1198     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1199
1200     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1201     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1202     TestUtils.updateComputeTemplateConsolidationData(
1203         mainST,
1204         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1205             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1206         portTypeToIdList,
1207         consolidationData);
1208
1209     portTypeToIdList = new ArrayList<>();
1210     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1211     TestUtils.updateComputeTemplateConsolidationData(
1212         mainST,
1213         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1214         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1215         null, null,
1216         portTypeToIdList,
1217         consolidationData);
1218
1219     portTypeToIdList = new ArrayList<>();
1220     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1221     TestUtils.updateComputeTemplateConsolidationData(
1222         mainST,
1223         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1224         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1225         null, null,
1226         portTypeToIdList,
1227         consolidationData);
1228
1229     TestUtils.initPortConsolidationData(mainST, consolidationData);
1230     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1231         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1232         consolidationData);
1233     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1234         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"), Arrays.asList("group_id_1"), null, null,
1235         consolidationData);
1236     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1237         Arrays.asList("node_in_1"), Arrays.asList("net_id_2"), Arrays.asList("group_id_1"), null, null,
1238         consolidationData);
1239
1240     translationContext.setConsolidationData(consolidationData);
1241     List<UnifiedCompositionMode> expectedUnifiedModes =
1242         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1243     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1244   }
1245
1246   @Test
1247   public void testGroupIdsRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1248     ConsolidationData consolidationData = new ConsolidationData();
1249     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1250     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1251         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1252             null, null);
1253
1254     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1255
1256     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1257     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1258     TestUtils.updateComputeTemplateConsolidationData(
1259         mainST,
1260         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1261             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1262         portTypeToIdList,
1263         consolidationData);
1264
1265     portTypeToIdList = new ArrayList<>();
1266     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1267     TestUtils.updateComputeTemplateConsolidationData(
1268         mainST,
1269         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1270         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1271         null, null,
1272         portTypeToIdList,
1273         consolidationData);
1274
1275     portTypeToIdList = new ArrayList<>();
1276     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1277     TestUtils.updateComputeTemplateConsolidationData(
1278         mainST,
1279         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1280         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1281         null, null,
1282         portTypeToIdList,
1283         consolidationData);
1284
1285     TestUtils.initPortConsolidationData(mainST, consolidationData);
1286     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1287         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1288         Arrays.asList("group_id_1", "group_id_2"), null, null,
1289         consolidationData);
1290     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1291         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1292         Arrays.asList("group_id_1", "group_id_2"), null, null,
1293         consolidationData);
1294     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1295         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1296         Arrays.asList("group_id_1", "group_id_3"), null, null,
1297         consolidationData);
1298
1299     translationContext.setConsolidationData(consolidationData);
1300     List<UnifiedCompositionMode> expectedUnifiedModes =
1301         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1302     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1303   }
1304
1305   @Test
1306   public void testValidConsolidationForComputesWithValidGetAttr() throws IOException {
1307     ConsolidationData consolidationData = new ConsolidationData();
1308     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1309     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1310         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1311             null, null);
1312
1313     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1314
1315     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1316     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1317
1318     TestUtils.updateComputeTemplateConsolidationData(
1319         mainST,
1320         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1321             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("node_1"), null,
1322         portTypeToIdList,
1323         consolidationData);
1324
1325     portTypeToIdList = new ArrayList<>();
1326     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1327     TestUtils.updateComputeTemplateConsolidationData(
1328         mainST,
1329         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1330         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1331         Arrays.asList("node_2"), null,
1332         portTypeToIdList,
1333         consolidationData);
1334
1335     portTypeToIdList = new ArrayList<>();
1336     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1337     TestUtils.updateComputeTemplateConsolidationData(
1338         mainST,
1339         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1340         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1341         Arrays.asList("node_3"), null,
1342         portTypeToIdList,
1343         consolidationData);
1344
1345     TestUtils.initPortConsolidationData(mainST, consolidationData);
1346     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1347         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1348         Arrays.asList("group_id_1", "group_id_2"), null, null,
1349         consolidationData);
1350     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1351         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1352         Arrays.asList("group_id_1", "group_id_2"), null, null,
1353         consolidationData);
1354     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1355         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1356         Arrays.asList("group_id_1", "group_id_2"), null, null,
1357         consolidationData);
1358
1359     translationContext.setConsolidationData(consolidationData);
1360     List<UnifiedCompositionMode> expectedUnifiedModes =
1361         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1362     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1363   }
1364
1365   @Test
1366   public void testInvalidConsolidationForComputesWithGetAttrForEachOther() throws IOException {
1367     ConsolidationData consolidationData = new ConsolidationData();
1368     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1369     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1370         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1371             null, null);
1372
1373     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1374
1375     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1376     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1377
1378     TestUtils.updateComputeTemplateConsolidationData(
1379         mainST,
1380         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1381             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("server_ps02"), null,
1382         portTypeToIdList,
1383         consolidationData);
1384
1385     portTypeToIdList = new ArrayList<>();
1386     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1387     TestUtils.updateComputeTemplateConsolidationData(
1388         mainST,
1389         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1390         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1391         Arrays.asList("node_1"), null,
1392         portTypeToIdList,
1393         consolidationData);
1394
1395     portTypeToIdList = new ArrayList<>();
1396     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1397     TestUtils.updateComputeTemplateConsolidationData(
1398         mainST,
1399         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1400         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1401         Arrays.asList("node_2"), null,
1402         portTypeToIdList,
1403         consolidationData);
1404
1405     TestUtils.initPortConsolidationData(mainST, consolidationData);
1406     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1407         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1408         Arrays.asList("group_id_1", "group_id_2"), null, null,
1409         consolidationData);
1410     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1411         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1412         Arrays.asList("group_id_1", "group_id_2"), null, null,
1413         consolidationData);
1414     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1415         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1416         Arrays.asList("group_id_1", "group_id_2"), null, null,
1417         consolidationData);
1418
1419     translationContext.setConsolidationData(consolidationData);
1420     List<UnifiedCompositionMode> expectedUnifiedModes =
1421         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1422     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1423   }
1424
1425   @Test
1426   public void testValidConsolidationForPortsWithValidGetAttr() throws IOException {
1427     ConsolidationData consolidationData = new ConsolidationData();
1428     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1429     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1430         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1431             null, null);
1432
1433     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1434
1435     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1436     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1437
1438     TestUtils.updateComputeTemplateConsolidationData(
1439         mainST,
1440         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1441             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), null, null,
1442         portTypeToIdList,
1443         consolidationData);
1444
1445     portTypeToIdList = new ArrayList<>();
1446     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1447     TestUtils.updateComputeTemplateConsolidationData(
1448         mainST,
1449         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1450         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1451         null, null,
1452         portTypeToIdList,
1453         consolidationData);
1454
1455     portTypeToIdList = new ArrayList<>();
1456     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1457     TestUtils.updateComputeTemplateConsolidationData(
1458         mainST,
1459         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1460         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1461         null, null,
1462         portTypeToIdList,
1463         consolidationData);
1464
1465     TestUtils.initPortConsolidationData(mainST, consolidationData);
1466     List<String> portNodeTemplateIds =
1467         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1468     List<List<String>> nodesConnectedInIds =
1469         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1470     List<List<String>> nodesConnectedOutIds =
1471         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1472     List<List<String>> getAttrInIds =
1473         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3"));
1474     List<List<String>> groupIds =
1475         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1476             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1477     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1478
1479     TestUtils.updateMultiplePortConsolidationDatas(
1480         mainST, portNodeTemplateIds,nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1481         getAttrInIds, getAttrOut, consolidationData);
1482
1483     translationContext.setConsolidationData(consolidationData);
1484     List<UnifiedCompositionMode> expectedUnifiedModes =
1485         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1486     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1487   }
1488
1489   @Test
1490   public void testInvalidConsolidationForPortsWithGetAttrInForEachOther() throws IOException {
1491     ConsolidationData consolidationData = new ConsolidationData();
1492     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1493     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1494         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation" +
1495             "/three_ports_similar_relations",
1496             null, null);
1497
1498     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1499
1500     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1501     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1502
1503     TestUtils.updateComputeTemplateConsolidationData(
1504         mainST,
1505         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1506             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("node_1"), null,
1507         portTypeToIdList,
1508         consolidationData);
1509
1510     portTypeToIdList = new ArrayList<>();
1511     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1512     TestUtils.updateComputeTemplateConsolidationData(
1513         mainST,
1514         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1515         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1516         Arrays.asList("node_2"), null,
1517         portTypeToIdList,
1518         consolidationData);
1519
1520     portTypeToIdList = new ArrayList<>();
1521     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1522     TestUtils.updateComputeTemplateConsolidationData(
1523         mainST,
1524         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1525         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1526         Arrays.asList("node_3"), null,
1527         portTypeToIdList,
1528         consolidationData);
1529
1530     TestUtils.initPortConsolidationData(mainST, consolidationData);
1531     List<String> portNodeTemplateIds =
1532         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1533     List<List<String>> nodesConnectedInIds =
1534         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1535     List<List<String>> nodesConnectedOutIds =
1536         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1537     List<List<String>> getAttrInIds =
1538         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("cm01_port_1"));
1539     List<List<String>> groupIds =
1540         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1541             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1542     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1543
1544     TestUtils.updateMultiplePortConsolidationDatas(
1545         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1546         getAttrInIds, getAttrOut, consolidationData);
1547
1548     translationContext.setConsolidationData(consolidationData);
1549     List<UnifiedCompositionMode> expectedUnifiedModes =
1550         Arrays.asList(UnifiedCompositionMode.CatalogInstance);
1551     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1552   }
1553
1554   @Test
1555   public void testValidConsolidationForComputesWithSamePortTypesPointingByGetAttrIn() throws
1556       IOException {
1557     ConsolidationData consolidationData = new ConsolidationData();
1558     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1559     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1560         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1561             null, null);
1562
1563     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1564
1565     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1566     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1567
1568     TestUtils.updateComputeTemplateConsolidationData(
1569         mainST,
1570         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1571             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null,
1572         portTypeToIdList,
1573         consolidationData);
1574
1575     portTypeToIdList = new ArrayList<>();
1576     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1577     TestUtils.updateComputeTemplateConsolidationData(
1578         mainST,
1579         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1580         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1581         Arrays.asList("cm01_port_2"), null,
1582         portTypeToIdList,
1583         consolidationData);
1584
1585     portTypeToIdList = new ArrayList<>();
1586     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1587     TestUtils.updateComputeTemplateConsolidationData(
1588         mainST,
1589         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1590         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1591         Arrays.asList("cm01_port_3"), null,
1592         portTypeToIdList,
1593         consolidationData);
1594
1595     TestUtils.initPortConsolidationData(mainST, consolidationData);
1596     List<String> portNodeTemplateIds =
1597         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1598     List<List<String>> nodesConnectedInIds =
1599         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1600     List<List<String>> nodesConnectedOutIds =
1601         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1602     List<List<String>> getAttrInIds =
1603         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3"));
1604     List<List<String>> groupIds =
1605         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1606             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1607     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null);
1608
1609     TestUtils.updateMultiplePortConsolidationDatas(
1610         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1611         getAttrInIds, getAttrOut, consolidationData);
1612
1613     translationContext.setConsolidationData(consolidationData);
1614     List<UnifiedCompositionMode> expectedUnifiedModes =
1615         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1616     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1617   }
1618
1619   @Test
1620   public void testValidGetAttrOutFromComputes() throws IOException {
1621     ConsolidationData consolidationData = new ConsolidationData();
1622     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1623     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1624         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1625             null, null);
1626
1627     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1628
1629     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1630     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1631     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1632     TestUtils.updateComputeTemplateConsolidationData(
1633         mainST,
1634         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1635             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"),
1636         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1637         portTypeToIdList,
1638         consolidationData);
1639
1640     portTypeToIdList = new ArrayList<>();
1641     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1642     TestUtils.updateComputeTemplateConsolidationData(
1643         mainST,
1644         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1645         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1646         Arrays.asList("cm01_port_1"),
1647         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1648         portTypeToIdList,
1649         consolidationData);
1650
1651     portTypeToIdList = new ArrayList<>();
1652     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1653     TestUtils.updateComputeTemplateConsolidationData(
1654         mainST,
1655         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1656         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1657         Arrays.asList("cm01_port_1"),
1658         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1659         portTypeToIdList,
1660         consolidationData);
1661
1662     TestUtils.initPortConsolidationData(mainST, consolidationData);
1663     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1664         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1665         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_2"), null,
1666         consolidationData);
1667     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1668         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1669         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("sm01_port_1"), null,
1670         consolidationData);
1671     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1672         Arrays.asList("node_in_1"), Arrays.asList("net_id_1"),
1673         Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("rm01_port_1"), null,
1674         consolidationData);
1675
1676     translationContext.setConsolidationData(consolidationData);
1677     List<UnifiedCompositionMode> expectedUnifiedModes =
1678         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1679     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1680   }
1681
1682   @Test
1683   public void testInValidGetAttrOutFromComputesPortTypeDifferent() throws IOException {
1684     ConsolidationData consolidationData = new ConsolidationData();
1685     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1686     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1687         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1688             null, null);
1689
1690     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1691
1692     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1693     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1694     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1695     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1696     TestUtils.updateComputeTemplateConsolidationData(
1697         mainST,
1698         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1699             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"),
1700         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1701         portTypeToIdList,
1702         consolidationData);
1703
1704     portTypeToIdList = new ArrayList<>();
1705     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1706     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1707     TestUtils.updateComputeTemplateConsolidationData(
1708         mainST,
1709         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1710         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1711         Arrays.asList("cm01_port_1"),
1712         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1713         portTypeToIdList,
1714         consolidationData);
1715
1716     portTypeToIdList = new ArrayList<>();
1717     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1718     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1719     TestUtils.updateComputeTemplateConsolidationData(
1720         mainST,
1721         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1722         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1723         Arrays.asList("cm01_port_1"),
1724         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)),
1725         portTypeToIdList,
1726         consolidationData);
1727
1728     TestUtils.initPortConsolidationData(mainST, consolidationData);
1729
1730     List<String> portNodeTemplateIds =
1731         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1732             "sm01_port_3");
1733     List<List<String>> nodesConnectedInIds =
1734         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1735             ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1736     List<List<String>> nodesConnectedOutIds =
1737         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1738             ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1739     List<List<String>> getAttrInIds =
1740         Arrays.asList(Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList
1741             ("get_attr_3"), Arrays.asList("get_attr_1"), Arrays.asList("get_attr_2"), Arrays.asList("get_attr_3"));
1742     List<List<String>> groupIds =
1743         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1744             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1745             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1746     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(null, null, null, null,
1747         null, null);
1748
1749     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1750         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData);
1751
1752     translationContext.setConsolidationData(consolidationData);
1753     List<UnifiedCompositionMode> expectedUnifiedModes =
1754         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
1755     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1756   }
1757
1758   @Test
1759   public void testValidGetAttrOutFromPorts() throws IOException {
1760     ConsolidationData consolidationData = new ConsolidationData();
1761     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1762     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1763         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1764             null, null);
1765
1766     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1767
1768     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1769     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1770     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1771     TestUtils.updateComputeTemplateConsolidationData(
1772         mainST,
1773         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1774             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null,
1775         portTypeToIdList,
1776         consolidationData);
1777
1778     portTypeToIdList = new ArrayList<>();
1779     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1780     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1781     TestUtils.updateComputeTemplateConsolidationData(
1782         mainST,
1783         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1784         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1785         Arrays.asList("cm01_port_1"), null,
1786         portTypeToIdList,
1787         consolidationData);
1788
1789     portTypeToIdList = new ArrayList<>();
1790     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1791     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1792     TestUtils.updateComputeTemplateConsolidationData(
1793         mainST,
1794         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1795         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1796         Arrays.asList("cm01_port_1"), null,
1797         portTypeToIdList,
1798         consolidationData);
1799
1800     TestUtils.initPortConsolidationData(mainST, consolidationData);
1801
1802     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
1803     List<String> portNodeTemplateIds =
1804         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1805             "sm01_port_3");
1806     List<List<String>> nodesConnectedInIds =
1807         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1808             ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1809     List<List<String>> nodesConnectedOutIds =
1810         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1811             ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1812     List<List<String>> getAttrInIds =
1813         Arrays.asList(null, null, null, null, null, null);
1814     List<List<String>> groupIds =
1815         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1816             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1817             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1818     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
1819         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_1", getAttrFuncData)),
1820         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_2", getAttrFuncData)),
1821         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)),
1822         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1823         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)),
1824         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData)));
1825
1826     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1827         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData);
1828
1829     translationContext.setConsolidationData(consolidationData);
1830     List<UnifiedCompositionMode> expectedUnifiedModes =
1831         Arrays.asList(UnifiedCompositionMode.ScalingInstances);
1832     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1833   }
1834
1835   @Test
1836   public void testInvalidGetAttrOutFromPorts() throws IOException {
1837     ConsolidationData consolidationData = new ConsolidationData();
1838     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1839     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1840         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1841             null, null);
1842
1843     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1844
1845     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1846     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1847     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1848     TestUtils.updateComputeTemplateConsolidationData(
1849         mainST,
1850         computeNodeTypeName, "server_ps01", Arrays.asList("cm01_port_1"), Arrays.asList
1851             ("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"), Arrays.asList("cm01_port_1"), null,
1852         portTypeToIdList,
1853         consolidationData);
1854
1855     portTypeToIdList = new ArrayList<>();
1856     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1857     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1858     TestUtils.updateComputeTemplateConsolidationData(
1859         mainST,
1860         computeNodeTypeName, "server_ps02", Arrays.asList("cm01_port_1"),
1861         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1862         Arrays.asList("cm01_port_1"), null,
1863         portTypeToIdList,
1864         consolidationData);
1865
1866     portTypeToIdList = new ArrayList<>();
1867     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1868     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1869     TestUtils.updateComputeTemplateConsolidationData(
1870         mainST,
1871         computeNodeTypeName, "server_ps03", Arrays.asList("cm01_port_1"),
1872         Arrays.asList("cmaui_volume"), Arrays.asList("cmaui_volume"), Arrays.asList("group_id_1"),
1873         Arrays.asList("cm01_port_1"), null,
1874         portTypeToIdList,
1875         consolidationData);
1876
1877     TestUtils.initPortConsolidationData(mainST, consolidationData);
1878
1879     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
1880     List<String> portNodeTemplateIds =
1881         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1", "sm01_port_2",
1882             "sm01_port_3");
1883     List<List<String>> nodesConnectedInIds =
1884         Arrays.asList(Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList
1885             ("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"), Arrays.asList("node_in_1"));
1886     List<List<String>> nodesConnectedOutIds =
1887         Arrays.asList(Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList
1888             ("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"), Arrays.asList("node_out_1"));
1889     List<List<String>> getAttrInIds =
1890         Arrays.asList(null, null, null, null, null, null);
1891     List<List<String>> groupIds =
1892         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1893             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1",
1894             "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1895     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
1896         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)),
1897         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("server_ps01", getAttrFuncData)),
1898         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("sm01_port_3", getAttrFuncData)),
1899         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_1", getAttrFuncData)),
1900         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_2", getAttrFuncData)),
1901         Arrays.asList(new ImmutablePair<String, GetAttrFuncData>("cm01_port_3", getAttrFuncData)));
1902
1903     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1904         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut, consolidationData);
1905
1906     translationContext.setConsolidationData(consolidationData);
1907     List<UnifiedCompositionMode> expectedUnifiedModes =
1908         Arrays.asList(UnifiedCompositionMode.SingleSubstitution);
1909     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1910   }
1911
1912   @Test
1913   public void testSubstitutionConsolidationPreConditionTrue() throws IOException {
1914     translationContext = new TranslationContext();
1915     String mainSTName = "MainServiceTemplate.yaml";
1916     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
1917
1918     ConsolidationData consolidationData = new ConsolidationData();
1919     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData);
1920     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" +
1921         ".pcm_server", consolidationData);
1922     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
1923     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" +
1924         ".pcm_server", consolidationData);
1925     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" +
1926         ".heat.pcm_server", "pcm_server", consolidationData);
1927
1928     translationContext.setConsolidationData(consolidationData);
1929
1930     addMockServiceTemplateToContext(mainSTName, "Main");
1931     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
1932
1933     verifySubstitutionServiceTemplateConsolidation
1934             (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
1935                     translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
1936                 UnifiedCompositionMode.NestedSingleCompute);
1937   }
1938
1939   @Test
1940   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeType() throws IOException {
1941     translationContext = new TranslationContext();
1942     String mainSTName = "MainServiceTemplate.yaml";
1943     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
1944
1945     ConsolidationData consolidationData = new ConsolidationData();
1946     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData);
1947     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" +
1948         ".pcm_server", consolidationData);
1949     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes" +
1950         ".heat.pcm_server", "server_pcm_001", consolidationData);
1951     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" +
1952         ".pcm_server", consolidationData);
1953
1954     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_oam_001"), consolidationData);
1955     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" +
1956         ".oam_server", consolidationData);
1957     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam_001", consolidationData);
1958     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" +
1959         ".oam_server", consolidationData);
1960
1961     translationContext.setConsolidationData(consolidationData);
1962
1963     addMockServiceTemplateToContext(mainSTName, "Main");
1964     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
1965
1966     verifySubstitutionServiceTemplateConsolidation
1967             (0, translationContext.getTranslatedServiceTemplates().get(mainSTName),
1968                     translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute);
1969   }
1970
1971   @Test
1972   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeOfSameType() throws IOException {
1973     translationContext = new TranslationContext();
1974     String mainSTName = "MainServiceTemplate.yaml";
1975     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
1976
1977     ConsolidationData consolidationData = new ConsolidationData();
1978     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData);
1979     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" +
1980         ".pcm_server", consolidationData);
1981     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" +
1982         ".pcm_server", consolidationData);
1983     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" +
1984         ".heat.pcm_server", "pcm_server_1", consolidationData);
1985
1986     TestUtils.updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("server_pcm_002"),
1987         consolidationData);
1988     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" +
1989         ".heat.pcm_server", "pcm_server_2", consolidationData);
1990
1991     translationContext.setConsolidationData(consolidationData);
1992
1993     addMockServiceTemplateToContext(mainSTName, "Main");
1994     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
1995
1996     verifySubstitutionServiceTemplateConsolidation
1997             (0, translationContext.getTranslatedServiceTemplates().get(mainSTName),
1998                     translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute);
1999   }
2000
2001   @Test
2002   public void testSubstitutionConsolidationPreConditionFalseNestedInsideNested(){
2003     translationContext = new TranslationContext();
2004     String mainSTName = "MainServiceTemplate.yaml";
2005     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2006
2007     ConsolidationData consolidationData = new ConsolidationData();
2008     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"), consolidationData);
2009     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat" +
2010         ".pcm_server", consolidationData);
2011     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName, "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
2012     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes.heat" +
2013         ".pcm_server", consolidationData);
2014     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName, "org.openecomp.resource.vfc.nodes" +
2015         ".heat.pcm_server", "pcm_server", consolidationData);
2016
2017     TestUtils.updateNestedConsolidationData(nestedServiceTemplateName, Arrays.asList("nested_resource"), consolidationData);
2018
2019     translationContext.setConsolidationData(consolidationData);
2020
2021     addMockServiceTemplateToContext(mainSTName, "Main");
2022     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2023
2024     verifySubstitutionServiceTemplateConsolidation
2025             (0, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2026                     translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName), UnifiedCompositionMode.NestedSingleCompute);
2027   }
2028
2029
2030   private void verifyMainServiceTemplateConsolidation(int times,
2031                                                       List<UnifiedCompositionMode> expectedUnifiedCompositionModes,
2032                                                       ToscaServiceModel toscaServiceModel) {
2033     consolidationService.mainServiceTemplateConsolidation(toscaServiceModel.getServiceTemplates().get(mainST), translationContext);
2034
2035     ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates().get(mainST);
2036     verify(unifiedCompositionServiceMock, times(times))
2037         .createUnifiedComposition(
2038             eq(mainServiceTemplate),
2039             any(),
2040             unifiedModelListArg.capture(),
2041             unifiedCompositionModeArg.capture(),
2042             eq(translationContext));
2043
2044     List<UnifiedCompositionMode> actualUnifiedCompositionModes = unifiedCompositionModeArg.getAllValues();
2045     Assert.assertEquals(expectedUnifiedCompositionModes, actualUnifiedCompositionModes);
2046   }
2047
2048   private void verifySubstitutionServiceTemplateConsolidation(int times,
2049                                                               ServiceTemplate mainST,
2050                                                               ServiceTemplate nestedST, UnifiedCompositionMode expectedMode){
2051     consolidationService.substitutionServiceTemplateConsolidation(null, mainST,
2052         nestedST, translationContext);
2053
2054     if(times == 0){
2055       verify(unifiedCompositionServiceMock, never()).
2056               createUnifiedComposition(
2057                       any(),
2058                       any(),
2059                       any(),
2060                       any(),
2061                       eq(translationContext));
2062     }else {
2063       verify(unifiedCompositionServiceMock, times(times)).
2064               createUnifiedComposition(
2065                       eq(mainST),
2066                       eq(nestedST),
2067                       unifiedModelListArg.capture(),
2068                       unifiedCompositionModeArg.capture(),
2069                       eq(translationContext));
2070
2071       Assert.assertEquals(expectedMode, unifiedCompositionModeArg.getValue());
2072     }
2073
2074   }
2075
2076   private void addMockServiceTemplateToContext(String serviceTemplateFileName, String templateName) {
2077     ServiceTemplate serviceTemplate = new ServiceTemplate();
2078     Map<String, String> metadata = new HashMap<>();
2079     metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, templateName);
2080     serviceTemplate.setMetadata(metadata);
2081     translationContext.getTranslatedServiceTemplates()
2082             .put(serviceTemplateFileName, serviceTemplate);
2083   }
2084 }