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