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