63ce6b56821e468de73ce687f004205c95e7a25d
[sdc.git] /
1 package org.openecomp.sdc.translator.services.heattotosca;
2
3 import static org.mockito.Matchers.any;
4 import static org.mockito.Matchers.eq;
5 import static org.mockito.Mockito.times;
6 import static org.mockito.Mockito.verify;
7
8 import org.apache.commons.lang3.tuple.ImmutablePair;
9 import org.apache.commons.lang3.tuple.Pair;
10 import org.junit.Assert;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.mockito.ArgumentCaptor;
14 import org.mockito.Captor;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.mockito.Mockito;
18 import org.mockito.MockitoAnnotations;
19 import org.mockito.Spy;
20 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
21 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
22 import org.openecomp.sdc.tosca.services.ToscaConstants;
23 import org.openecomp.sdc.translator.SubInterfaceConsolidationDataTestInfo;
24 import org.openecomp.sdc.translator.TestUtils;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionMode;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
30
31 import java.io.IOException;
32 import java.util.ArrayList;
33 import java.util.Arrays;
34 import java.util.Collections;
35 import java.util.HashMap;
36 import java.util.List;
37 import java.util.Map;
38
39 public class ConsolidationServiceTest {
40
41
42   @Spy
43   private TranslationContext translationContext = new TranslationContext();
44   private static String mainST = "MainServiceTemplate.yaml";
45
46   @Mock
47   private UnifiedCompositionService unifiedCompositionServiceMock;
48
49   @Captor
50   private ArgumentCaptor<List<UnifiedCompositionData>> unifiedModelListArg;
51   @Captor
52   private ArgumentCaptor<UnifiedCompositionMode> unifiedCompositionModeArg;
53
54   @Spy
55   @InjectMocks
56   private ConsolidationService consolidationService;
57
58   @Before
59   public void setUp() throws Exception {
60     MockitoAnnotations.initMocks(this);
61   }
62
63   @Test
64   public void testConsolidationValidPreCondition() throws IOException {
65
66     ConsolidationData consolidationData = new ConsolidationData();
67     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
68     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel(
69         "/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/valid_pre_condition/",
70         null,
71         null);
72
73     TestUtils.initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName,
74         consolidationData);
75
76     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
77     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
78     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
79
80     TestUtils.updateComputeTemplateConsolidationData(
81         mainST,
82         computeNodeTypeName, "server_ps01",
83         null, null, null, null, null, null,
84         portTypeToIdList, consolidationData);
85
86     TestUtils.updateComputeTemplateConsolidationData(
87         mainST,
88         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
89         portTypeToIdList, consolidationData);
90
91     TestUtils.initPortConsolidationData(mainST, consolidationData);
92     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
93         null, null, null, null, null,
94         consolidationData);
95     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
96         null, null, null, null, null,
97         consolidationData);
98
99     translationContext.setConsolidationData(consolidationData);
100     List<UnifiedCompositionMode> expectedUnifiedModes =
101         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
102
103     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
104   }
105
106   @Test
107   public void testConsolidationFalsePreConditionOneComputeNode() throws IOException {
108     ConsolidationData consolidationData = new ConsolidationData();
109     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
110     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
111         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/one_compute_node/",
112             null, null);
113
114     TestUtils
115         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
116
117     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
118     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
119     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
120
121     TestUtils.updateComputeTemplateConsolidationData(
122         mainST,
123         computeNodeTypeName, "server_ps01",
124         null, null, null, null, null, null,
125         portTypeToIdList, consolidationData);
126
127     TestUtils.initPortConsolidationData(mainST, consolidationData);
128     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
129         null, null, null, null, null,
130         consolidationData);
131     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
132         null, null, null, null, null,
133         consolidationData);
134
135     translationContext.setConsolidationData(consolidationData);
136     List<UnifiedCompositionMode> expectedUnifiedModes =
137         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
138     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
139   }
140
141   @Test
142   public void testConsolidationFalsePreConditionMoreThanOnePortPerType() throws IOException {
143     ConsolidationData consolidationData = new ConsolidationData();
144     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
145     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
146         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/more_than_one_port/",
147             null, null);
148
149     TestUtils
150         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
151
152     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
153     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
154     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
155
156     TestUtils.updateComputeTemplateConsolidationData(
157         mainST,
158         computeNodeTypeName, "server_ps01",
159         null, null, null, null, null, null,
160         portTypeToIdList, consolidationData);
161
162     TestUtils.updateComputeTemplateConsolidationData(
163         mainST,
164         computeNodeTypeName, "server_ps02",
165         null, null, null, null, null, null,
166         portTypeToIdList, consolidationData);
167
168
169     TestUtils.initPortConsolidationData(mainST, consolidationData);
170
171     translationContext.setConsolidationData(consolidationData);
172     List<UnifiedCompositionMode> expectedUnifiedModes =
173         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
174     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
175   }
176
177   @Test
178   public void testConsolidationFalsePreConditionDifferentPortTypesBetweenComputes()
179       throws IOException {
180     ConsolidationData consolidationData = new ConsolidationData();
181     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
182     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
183         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_port_types",
184             null, null);
185
186     TestUtils
187         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
188
189     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
190     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
191
192     TestUtils.updateComputeTemplateConsolidationData(
193         mainST,
194         computeNodeTypeName, "server_ps01",
195         null, null, null, null, null, null,
196         portTypeToIdList, consolidationData);
197
198     portTypeToIdList = new ArrayList<>();
199     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
200
201     TestUtils.updateComputeTemplateConsolidationData(
202         mainST,
203         computeNodeTypeName, "server_ps02",
204         null, null, null, null, null, null,
205         portTypeToIdList, consolidationData);
206
207     TestUtils.initPortConsolidationData(mainST, consolidationData);
208     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
209         null, null, null, null, null,
210         consolidationData);
211     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
212         null, null, null, null, null,
213         consolidationData);
214
215     translationContext.setConsolidationData(consolidationData);
216     List<UnifiedCompositionMode> expectedUnifiedModes =
217         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
218     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
219
220   }
221
222   @Test
223   public void testConsolidationResultTrueWithMoreThanTwoCompute() throws IOException {
224     ConsolidationData consolidationData = new ConsolidationData();
225     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
226     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
227         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
228             null, null);
229
230     TestUtils
231         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
232
233     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
234     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
235     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
236
237     TestUtils.updateComputeTemplateConsolidationData(
238         mainST,
239         computeNodeTypeName, "server_ps01",
240         null, null, null, null, null, null,
241         portTypeToIdList, consolidationData);
242
243     TestUtils.updateComputeTemplateConsolidationData(
244         mainST,
245         computeNodeTypeName, "server_ps02",
246         null, null, null, null, null, null,
247         portTypeToIdList, consolidationData);
248
249     TestUtils.updateComputeTemplateConsolidationData(
250         mainST,
251         computeNodeTypeName, "server_ps03",
252         null, null, null, null, null, null,
253         portTypeToIdList, consolidationData);
254
255     TestUtils.initPortConsolidationData(mainST, consolidationData);
256     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
257         null, null, null, null, null,
258         consolidationData);
259     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
260         null, null, null, null, null,
261         consolidationData);
262
263     translationContext.setConsolidationData(consolidationData);
264
265     List<UnifiedCompositionMode> expectedUnifiedModes =
266         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
267     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
268   }
269
270   @Test
271   public void testConsolidationResultFalseWithMoreThanTwoComputeOneIsDiff() throws IOException {
272     ConsolidationData consolidationData = new ConsolidationData();
273     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
274     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
275         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
276             null, null);
277
278     TestUtils
279         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
280
281     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
282     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
283     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
284
285     TestUtils.updateComputeTemplateConsolidationData(
286         mainST,
287         computeNodeTypeName, "server_ps01",
288         null, null, null, null, null, null,
289         portTypeToIdList, consolidationData);
290
291     TestUtils.updateComputeTemplateConsolidationData(
292         mainST,
293         computeNodeTypeName, "server_ps02",
294         null, null, null, null, null, null,
295         portTypeToIdList, consolidationData);
296
297     portTypeToIdList = new ArrayList<>();
298     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
299     TestUtils.updateComputeTemplateConsolidationData(
300         mainST,
301         computeNodeTypeName, "server_ps03",
302         null, null, null, null, null, null,
303         portTypeToIdList, consolidationData);
304
305     TestUtils.initPortConsolidationData(mainST, consolidationData);
306     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
307         null, null, null, null, null,
308         consolidationData);
309     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
310         null, null, null, null, null,
311         consolidationData);
312
313     translationContext.setConsolidationData(consolidationData);
314     List<UnifiedCompositionMode> expectedUnifiedModes =
315         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
316     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
317   }
318
319   @Test
320   public void testConsolidationResultFalseForTwoTypesOfComputeWithOneInstanceEach()
321       throws IOException {
322     ConsolidationData consolidationData = new ConsolidationData();
323     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
324     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui";
325     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
326         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_valid",
327             null, null);
328
329     TestUtils.initComputeNodeTypeInConsolidationData
330         (mainST, computeNodeTypeName1, consolidationData);
331     TestUtils.initComputeNodeTypeInConsolidationData
332         (mainST, computeNodeTypeName2, consolidationData);
333
334     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
335     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
336     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
337
338     TestUtils.updateComputeTemplateConsolidationData(
339         mainST,
340         computeNodeTypeName1, "server_ps01",
341         null, null, null, null, null, null,
342         portTypeToIdList, consolidationData);
343
344     TestUtils.updateComputeTemplateConsolidationData(
345         mainST,
346         computeNodeTypeName2, "server_ps02",
347         null, null, null, null, null, null,
348         portTypeToIdList, consolidationData);
349
350     TestUtils.initPortConsolidationData(mainST, consolidationData);
351     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
352         null, null, null, null, null,
353         consolidationData);
354     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
355         null, null, null, null, null,
356         consolidationData);
357
358     translationContext.setConsolidationData(consolidationData);
359
360     List<UnifiedCompositionMode> expectedUnifiedModes =
361         Arrays.asList(UnifiedCompositionMode.SingleSubstitution,
362             UnifiedCompositionMode.SingleSubstitution);
363     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
364   }
365
366   @Test
367   public void testConsolidationValidForTwoSimilarComputeAndFalseForSingleCompute()
368       throws IOException {
369     ConsolidationData consolidationData = new ConsolidationData();
370     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
371     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.cmaui";
372     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
373         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/three_compute_two_similar_one_diff",
374             null, null);
375
376     TestUtils
377         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName1, consolidationData);
378     TestUtils
379         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName2, consolidationData);
380
381     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
382     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
383     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
384
385     TestUtils.updateComputeTemplateConsolidationData(
386         mainST,
387         computeNodeTypeName1, "server_ps01",
388         null, null, null, null, null, null,
389         portTypeToIdList, consolidationData);
390
391     TestUtils.updateComputeTemplateConsolidationData(
392         mainST,
393         computeNodeTypeName1, "server_ps02",
394         null, null, null, null, null, null,
395         portTypeToIdList, consolidationData);
396     TestUtils.updateComputeTemplateConsolidationData(
397         mainST,
398         computeNodeTypeName2, "server_ps03",
399         null, null, null, null, null, null,
400         portTypeToIdList, consolidationData);
401
402     TestUtils.initPortConsolidationData(mainST, consolidationData);
403     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
404         null, null, null, null, null,
405         consolidationData);
406     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
407         null, null, null, null, null,
408         consolidationData);
409
410     translationContext.setConsolidationData(consolidationData);
411     List<UnifiedCompositionMode> expectedUnifiedModes =
412         Arrays.asList(UnifiedCompositionMode.ScalingInstances,
413             UnifiedCompositionMode.SingleSubstitution);
414     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
415   }
416
417   @Test
418   public void testValidComputeAndPortConsolidation() throws IOException {
419     ConsolidationData consolidationData = new ConsolidationData();
420     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
421     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
422         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
423             null, null);
424
425     TestUtils
426         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
427
428     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
429     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
430     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
431
432     TestUtils.updateComputeTemplateConsolidationData(
433         mainST,
434         computeNodeTypeName, "server_ps01",
435         null, null, null, null, null, null,
436         portTypeToIdList, consolidationData);
437
438     TestUtils.updateComputeTemplateConsolidationData(
439         mainST,
440         computeNodeTypeName, "server_ps02",
441         null, null, null, null, null, null,
442         portTypeToIdList, consolidationData);
443
444     TestUtils.updateComputeTemplateConsolidationData(
445         mainST,
446         computeNodeTypeName, "server_ps03",
447         null, null, null, null, null, null,
448         portTypeToIdList, consolidationData);
449
450     TestUtils.initPortConsolidationData(mainST, consolidationData);
451     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
452         null, null, null, null, null,
453         consolidationData);
454     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
455         null, null, null, null, null,
456         consolidationData);
457
458     translationContext.setConsolidationData(consolidationData);
459     List<UnifiedCompositionMode> expectedUnifiedModes =
460         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
461     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
462   }
463
464   @Test
465   public void testFalseComputeConsolidationForTwoSimilarImageNamesAndOneDiff() throws IOException {
466     ConsolidationData consolidationData = new ConsolidationData();
467     String computeNodeTypeName1 = "org.openecomp.resource.vfc.nodes.heat.ps_server";
468     String computeNodeTypeName2 = "org.openecomp.resource.vfc.nodes.heat.pd_server";
469     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
470         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_name_diff",
471             null, null);
472
473     TestUtils.initComputeNodeTypeInConsolidationData(
474         mainST, computeNodeTypeName1, consolidationData);
475     TestUtils.initComputeNodeTypeInConsolidationData(
476         mainST, computeNodeTypeName2, consolidationData);
477
478     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
479     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
480     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
481
482     TestUtils.updateComputeTemplateConsolidationData(
483         mainST,
484         computeNodeTypeName1, "server_ps01",
485         null, null, null, null, null, null,
486         portTypeToIdList, consolidationData);
487
488     TestUtils.updateComputeTemplateConsolidationData(
489         mainST,
490         computeNodeTypeName1, "server_ps02",
491         null, null, null, null, null, null,
492         portTypeToIdList, consolidationData);
493
494     TestUtils.updateComputeTemplateConsolidationData(
495         mainST,
496         computeNodeTypeName1, "server_ps03",
497         null, null, null, null, null, null,
498         portTypeToIdList, consolidationData);
499
500     TestUtils.updateComputeTemplateConsolidationData(
501         mainST,
502         computeNodeTypeName2, "server_pd01",
503         null, null, null, null, null, null,
504         portTypeToIdList, consolidationData);
505
506     TestUtils.updateComputeTemplateConsolidationData(
507         mainST,
508         computeNodeTypeName2, "server_pd02",
509         null, null, null, null, null, null,
510         portTypeToIdList, consolidationData);
511
512     TestUtils.updateComputeTemplateConsolidationData(
513         mainST,
514         computeNodeTypeName2, "server_pd03",
515         null, null, null, null, null, null,
516         portTypeToIdList, consolidationData);
517
518     TestUtils.initPortConsolidationData(mainST, consolidationData);
519     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
520         null, null, null, null, null,
521         consolidationData);
522     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
523         null, null, null, null, null,
524         consolidationData);
525
526     translationContext.setConsolidationData(consolidationData);
527     List<UnifiedCompositionMode> expectedUnifiedModes =
528         Arrays
529             .asList(UnifiedCompositionMode.CatalogInstance, UnifiedCompositionMode.CatalogInstance);
530     verifyMainServiceTemplateConsolidation(2, expectedUnifiedModes, toscaServiceModel);
531   }
532
533   @Test
534   public void testFalseComputeConsolidationOneImageNameMissing() throws IOException {
535     ConsolidationData consolidationData = new ConsolidationData();
536     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.pd_server";
537     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
538         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_image_missing",
539             null, null);
540
541     TestUtils.initComputeNodeTypeInConsolidationData(
542         mainST, computeNodeTypeName, consolidationData);
543
544     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
545     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
546     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
547
548     TestUtils.updateComputeTemplateConsolidationData(
549         mainST,
550         computeNodeTypeName, "server_pd01",
551         null, null, null, null, null, null,
552         portTypeToIdList, consolidationData);
553
554     TestUtils.updateComputeTemplateConsolidationData(
555         mainST,
556         computeNodeTypeName, "server_pd02",
557         null, null, null, null, null, null,
558         portTypeToIdList, consolidationData);
559
560     TestUtils.updateComputeTemplateConsolidationData(
561         mainST,
562         computeNodeTypeName, "server_pd03",
563         null, null, null, null, null, null,
564         portTypeToIdList, consolidationData);
565
566     TestUtils.initPortConsolidationData(mainST, consolidationData);
567     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
568         null, null, null, null, null,
569         consolidationData);
570     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
571         null, null, null, null, null,
572         consolidationData);
573
574     translationContext.setConsolidationData(consolidationData);
575     List<UnifiedCompositionMode> expectedUnifiedModes =
576         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
577     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
578   }
579
580   @Test
581   public void testFalseComputeConsolidationForTwoSimilarFlavorNamesAndOneDiff() throws IOException {
582     ConsolidationData consolidationData = new ConsolidationData();
583     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
584     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
585         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_flavor_name_diff",
586             null, null);
587
588     TestUtils
589         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
590
591     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
592     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
593     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
594
595     TestUtils.updateComputeTemplateConsolidationData(
596         mainST,
597         computeNodeTypeName, "server_ps01", null, null, null, null, null, null,
598         portTypeToIdList, consolidationData);
599
600     TestUtils.updateComputeTemplateConsolidationData(
601         mainST,
602         computeNodeTypeName, "server_ps02", null, null, null, null, null, null,
603         portTypeToIdList, consolidationData);
604
605     TestUtils.updateComputeTemplateConsolidationData(
606         mainST,
607         computeNodeTypeName, "server_ps03", null, null, null, null, null, null,
608         portTypeToIdList, consolidationData);
609
610     TestUtils.initPortConsolidationData(mainST, consolidationData);
611     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
612         null, null, null, null, null,
613         consolidationData);
614     TestUtils.updatePortConsolidationData(mainST, "sm01_port_1",
615         null, null, null, null, null,
616         consolidationData);
617
618     translationContext.setConsolidationData(consolidationData);
619     List<UnifiedCompositionMode> expectedUnifiedModes =
620         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
621     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
622   }
623
624   @Test
625   public void testFalsePortConsolidationForOneDiffFixedIpsValue() throws IOException {
626     ConsolidationData consolidationData = new ConsolidationData();
627     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
628     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
629         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/one_exCP_naming_diff",
630             null, null);
631
632     TestUtils
633         .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         Collections.singletonList(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         Collections.singletonList(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         Collections.singletonList(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         Collections.singletonList(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         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
837         Collections.singletonList("group_id_1"), null,
838         null,
839         consolidationData);
840     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
841         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
842         Collections.singletonList("group_id_1"), null,
843         null,
844         consolidationData);
845     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
846         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
847         Collections.singletonList("group_id_1"), null,
848         null,
849         consolidationData);
850
851     translationContext.setConsolidationData(consolidationData);
852     List<UnifiedCompositionMode> expectedUnifiedModes =
853         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
854     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
855   }
856
857   @Test
858   public void testComputeRelationsSimilarBetweenComputeNodes() throws IOException {
859     ConsolidationData consolidationData = new ConsolidationData();
860     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
861     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
862         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_with_same_relations",
863             null, null);
864
865     TestUtils
866         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
867
868     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
869     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
870     TestUtils.updateComputeTemplateConsolidationData(
871         mainST,
872         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
873         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
874         Collections.singletonList("group_id1"),
875         null, null,
876         portTypeToIdList,
877         consolidationData);
878
879     portTypeToIdList = new ArrayList<>();
880     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
881     TestUtils.updateComputeTemplateConsolidationData(
882         mainST,
883         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
884         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
885         Collections.singletonList("group_id1"),
886         null, null,
887         portTypeToIdList,
888         consolidationData);
889
890     portTypeToIdList = new ArrayList<>();
891     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
892     TestUtils.updateComputeTemplateConsolidationData(
893         mainST,
894         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
895         Collections.singletonList("cmaui_volume"),
896         Collections.singletonList("cmaui_volume"), Collections.singletonList("group_id1"), null,
897         null,
898         portTypeToIdList,
899         consolidationData);
900
901     TestUtils.initPortConsolidationData(mainST, consolidationData);
902     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
903         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
904         Collections.singletonList("group_id_1"), null,
905         null,
906         consolidationData);
907     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
908         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
909         Collections.singletonList("group_id_1"), null,
910         null,
911         consolidationData);
912     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
913         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
914         Collections.singletonList("group_id_1"), null,
915         null,
916         consolidationData);
917
918
919     translationContext.setConsolidationData(consolidationData);
920     List<UnifiedCompositionMode> expectedUnifiedModes =
921         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
922     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
923   }
924
925   @Test
926   public void testNodesInRelationsDiffBetweenThreeComputes() throws IOException {
927     ConsolidationData consolidationData = new ConsolidationData();
928     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
929     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
930         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
931             null, null);
932
933     TestUtils
934         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
935
936     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
937     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
938     TestUtils.updateComputeTemplateConsolidationData(
939         mainST,
940         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
941         Collections.singletonList
942             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
943         Collections.singletonList("group_id1"), null, null,
944         portTypeToIdList,
945         consolidationData);
946
947     portTypeToIdList = new ArrayList<>();
948     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
949     TestUtils.updateComputeTemplateConsolidationData(
950         mainST,
951         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
952         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
953         Collections.singletonList("group_id1"),
954         null, null,
955         portTypeToIdList,
956         consolidationData);
957
958     portTypeToIdList = new ArrayList<>();
959     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
960     TestUtils.updateComputeTemplateConsolidationData(
961         mainST,
962         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_2"),
963         Collections.singletonList
964             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
965         Collections.singletonList("group_id1"), null, null,
966         portTypeToIdList,
967         consolidationData);
968
969     TestUtils.initPortConsolidationData(mainST, consolidationData);
970     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
971         consolidationData);
972
973
974     translationContext.setConsolidationData(consolidationData);
975     List<UnifiedCompositionMode> expectedUnifiedModes =
976         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
977     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
978   }
979
980   @Test
981   public void testNodesOutRelationsDiffBetweenThreeComputes() throws IOException {
982     ConsolidationData consolidationData = new ConsolidationData();
983     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
984     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
985         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
986             null, null);
987
988     TestUtils
989         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
990
991     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
992     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
993     TestUtils.updateComputeTemplateConsolidationData(
994         mainST,
995         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
996         Collections.singletonList
997             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
998         Collections.singletonList("group_id1"), null, null,
999         portTypeToIdList,
1000         consolidationData);
1001
1002     portTypeToIdList = new ArrayList<>();
1003     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1004     TestUtils.updateComputeTemplateConsolidationData(
1005         mainST,
1006         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1007         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1008         Collections.singletonList("group_id1"),
1009         null, null,
1010         portTypeToIdList,
1011         consolidationData);
1012
1013     portTypeToIdList = new ArrayList<>();
1014     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1015     TestUtils.updateComputeTemplateConsolidationData(
1016         mainST,
1017         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1018         Collections.singletonList("cmaui_volume_1"), Collections.singletonList("cmaui_volume"),
1019         Collections.singletonList("group_id1"),
1020         null, null,
1021         portTypeToIdList,
1022         consolidationData);
1023
1024     TestUtils.initPortConsolidationData(mainST, consolidationData);
1025     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1026         consolidationData);
1027
1028
1029     translationContext.setConsolidationData(consolidationData);
1030     List<UnifiedCompositionMode> expectedUnifiedModes =
1031         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1032     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1033   }
1034
1035   @Test
1036   public void testVolumeRelationsDiffBetweenThreeComputes() throws IOException {
1037     ConsolidationData consolidationData = new ConsolidationData();
1038     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1039     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1040         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
1041             null, null);
1042
1043     TestUtils
1044         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1045
1046     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1047     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1048     TestUtils.updateComputeTemplateConsolidationData(
1049         mainST,
1050         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1051         Collections.singletonList
1052             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1053         Collections.singletonList("group_id1"), null, null,
1054         portTypeToIdList,
1055         consolidationData);
1056
1057     portTypeToIdList = new ArrayList<>();
1058     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1059     TestUtils.updateComputeTemplateConsolidationData(
1060         mainST,
1061         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1062         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1063         Collections.singletonList("group_id1"),
1064         null, null,
1065         portTypeToIdList,
1066         consolidationData);
1067
1068     portTypeToIdList = new ArrayList<>();
1069     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1070     TestUtils.updateComputeTemplateConsolidationData(
1071         mainST,
1072         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1073         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume_1"),
1074         Collections.singletonList("group_id1"),
1075         null, null,
1076         portTypeToIdList,
1077         consolidationData);
1078
1079     TestUtils.initPortConsolidationData(mainST, consolidationData);
1080     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1081         consolidationData);
1082
1083
1084     translationContext.setConsolidationData(consolidationData);
1085     List<UnifiedCompositionMode> expectedUnifiedModes =
1086         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1087     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1088   }
1089
1090   @Test
1091   public void testGroupRelationsDiffBetweenThreeComputes() throws IOException {
1092     ConsolidationData consolidationData = new ConsolidationData();
1093     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1094     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1095         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_compute_valid",
1096             null, null);
1097
1098     TestUtils
1099         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1100
1101     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1102     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1103     TestUtils.updateComputeTemplateConsolidationData(
1104         mainST,
1105         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1106         Collections.singletonList
1107             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1108         Collections.singletonList("group_id_1"), null,
1109         null,
1110         portTypeToIdList,
1111         consolidationData);
1112
1113     portTypeToIdList = new ArrayList<>();
1114     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1115     TestUtils.updateComputeTemplateConsolidationData(
1116         mainST,
1117         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1118         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1119         Collections.singletonList("group_id_1"),
1120         null, null,
1121         portTypeToIdList,
1122         consolidationData);
1123
1124     portTypeToIdList = new ArrayList<>();
1125     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1126     TestUtils.updateComputeTemplateConsolidationData(
1127         mainST,
1128         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1129         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1130         Collections.singletonList("group_id_2"),
1131         null, null,
1132         portTypeToIdList,
1133         consolidationData);
1134
1135     TestUtils.initPortConsolidationData(mainST, consolidationData);
1136     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1", null, null, null, null, null,
1137         consolidationData);
1138
1139
1140     translationContext.setConsolidationData(consolidationData);
1141     List<UnifiedCompositionMode> expectedUnifiedModes =
1142         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1143     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1144   }
1145
1146   @Test
1147   public void testPortConsolidationDataRelationsSimilar() throws IOException {
1148     ConsolidationData consolidationData = new ConsolidationData();
1149     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1150     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1151         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1152             null, null);
1153
1154     TestUtils
1155         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1156
1157     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1158     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1159     TestUtils.updateComputeTemplateConsolidationData(
1160         mainST,
1161         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1162         Collections.singletonList
1163             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1164         Collections.singletonList("group_id_1"), null,
1165         null,
1166         portTypeToIdList,
1167         consolidationData);
1168
1169     portTypeToIdList = new ArrayList<>();
1170     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1171     TestUtils.updateComputeTemplateConsolidationData(
1172         mainST,
1173         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1174         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1175         Collections.singletonList("group_id_1"),
1176         null, null,
1177         portTypeToIdList,
1178         consolidationData);
1179
1180     portTypeToIdList = new ArrayList<>();
1181     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1182     TestUtils.updateComputeTemplateConsolidationData(
1183         mainST,
1184         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1185         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1186         Collections.singletonList("group_id_1"),
1187         null, null,
1188         portTypeToIdList,
1189         consolidationData);
1190
1191     TestUtils.initPortConsolidationData(mainST, consolidationData);
1192     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1193         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1194         Collections.singletonList("group_id_1"), null,
1195         null,
1196         consolidationData);
1197     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1198         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1199         Collections.singletonList("group_id_1"), null,
1200         null,
1201         consolidationData);
1202     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1203         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1204         Collections.singletonList("group_id_1"), null,
1205         null,
1206         consolidationData);
1207
1208     translationContext.setConsolidationData(consolidationData);
1209     List<UnifiedCompositionMode> expectedUnifiedModes =
1210         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
1211     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1212   }
1213
1214   @Test
1215   public void testNodesInRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1216     ConsolidationData consolidationData = new ConsolidationData();
1217     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1218     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1219         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1220             null, null);
1221
1222     TestUtils
1223         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1224
1225     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1226     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1227     TestUtils.updateComputeTemplateConsolidationData(
1228         mainST,
1229         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1230         Collections.singletonList
1231             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1232         Collections.singletonList("group_id_1"), null,
1233         null,
1234         portTypeToIdList,
1235         consolidationData);
1236
1237     portTypeToIdList = new ArrayList<>();
1238     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1239     TestUtils.updateComputeTemplateConsolidationData(
1240         mainST,
1241         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1242         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1243         Collections.singletonList("group_id_1"),
1244         null, null,
1245         portTypeToIdList,
1246         consolidationData);
1247
1248     portTypeToIdList = new ArrayList<>();
1249     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1250     TestUtils.updateComputeTemplateConsolidationData(
1251         mainST,
1252         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1253         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1254         Collections.singletonList("group_id_1"),
1255         null, null,
1256         portTypeToIdList,
1257         consolidationData);
1258
1259     TestUtils.initPortConsolidationData(mainST, consolidationData);
1260     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1261         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1262         Collections.singletonList("group_id_1"), null,
1263         null,
1264         consolidationData);
1265     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1266         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1267         Collections.singletonList("group_id_1"), null,
1268         null,
1269         consolidationData);
1270     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1271         Collections.singletonList("node_in_2"), Collections.singletonList("net_id_1"),
1272         Collections.singletonList("group_id_1"), null,
1273         null,
1274         consolidationData);
1275
1276     translationContext.setConsolidationData(consolidationData);
1277     List<UnifiedCompositionMode> expectedUnifiedModes =
1278         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1279     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1280   }
1281
1282   @Test
1283   public void testNodesOutRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1284     ConsolidationData consolidationData = new ConsolidationData();
1285     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1286     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1287         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1288             null, null);
1289
1290     TestUtils
1291         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1292
1293     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1294     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1295     TestUtils.updateComputeTemplateConsolidationData(
1296         mainST,
1297         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1298         Collections.singletonList
1299             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1300         Collections.singletonList("group_id_1"), null,
1301         null,
1302         portTypeToIdList,
1303         consolidationData);
1304
1305     portTypeToIdList = new ArrayList<>();
1306     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1307     TestUtils.updateComputeTemplateConsolidationData(
1308         mainST,
1309         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1310         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1311         Collections.singletonList("group_id_1"),
1312         null, null,
1313         portTypeToIdList,
1314         consolidationData);
1315
1316     portTypeToIdList = new ArrayList<>();
1317     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1318     TestUtils.updateComputeTemplateConsolidationData(
1319         mainST,
1320         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1321         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1322         Collections.singletonList("group_id_1"),
1323         null, null,
1324         portTypeToIdList,
1325         consolidationData);
1326
1327     TestUtils.initPortConsolidationData(mainST, consolidationData);
1328     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1329         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1330         Collections.singletonList("group_id_1"), null,
1331         null,
1332         consolidationData);
1333     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1334         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1335         Collections.singletonList("group_id_1"), null,
1336         null,
1337         consolidationData);
1338     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1339         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_2"),
1340         Collections.singletonList("group_id_1"), null,
1341         null,
1342         consolidationData);
1343
1344     translationContext.setConsolidationData(consolidationData);
1345     List<UnifiedCompositionMode> expectedUnifiedModes =
1346         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1347     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1348   }
1349
1350   @Test
1351   public void testGroupIdsRelationsDiffBetweenThreePortConsolidationDatas() throws IOException {
1352     ConsolidationData consolidationData = new ConsolidationData();
1353     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1354     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1355         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1356             null, null);
1357
1358     TestUtils
1359         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1360
1361     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1362     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1363     TestUtils.updateComputeTemplateConsolidationData(
1364         mainST,
1365         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1366         Collections.singletonList
1367             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1368         Collections.singletonList("group_id_1"), null,
1369         null,
1370         portTypeToIdList,
1371         consolidationData);
1372
1373     portTypeToIdList = new ArrayList<>();
1374     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1375     TestUtils.updateComputeTemplateConsolidationData(
1376         mainST,
1377         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1378         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1379         Collections.singletonList("group_id_1"),
1380         null, null,
1381         portTypeToIdList,
1382         consolidationData);
1383
1384     portTypeToIdList = new ArrayList<>();
1385     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1386     TestUtils.updateComputeTemplateConsolidationData(
1387         mainST,
1388         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1389         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1390         Collections.singletonList("group_id_1"),
1391         null, null,
1392         portTypeToIdList,
1393         consolidationData);
1394
1395     TestUtils.initPortConsolidationData(mainST, consolidationData);
1396     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1397         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1398         Arrays.asList("group_id_1", "group_id_2"), null, null,
1399         consolidationData);
1400     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1401         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1402         Arrays.asList("group_id_1", "group_id_2"), null, null,
1403         consolidationData);
1404     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1405         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1406         Arrays.asList("group_id_1", "group_id_3"), null, null,
1407         consolidationData);
1408
1409     translationContext.setConsolidationData(consolidationData);
1410     List<UnifiedCompositionMode> expectedUnifiedModes =
1411         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1412     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1413   }
1414
1415   @Test
1416   public void testValidConsolidationForComputesWithValidGetAttr() throws IOException {
1417     ConsolidationData consolidationData = new ConsolidationData();
1418     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1419     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1420         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1421             null, null);
1422
1423     TestUtils
1424         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1425
1426     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1427     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1428
1429     TestUtils.updateComputeTemplateConsolidationData(
1430         mainST,
1431         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1432         Collections.singletonList
1433             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1434         Collections.singletonList("group_id_1"),
1435         Collections.singletonList("node_1"), null,
1436         portTypeToIdList,
1437         consolidationData);
1438
1439     portTypeToIdList = new ArrayList<>();
1440     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1441     TestUtils.updateComputeTemplateConsolidationData(
1442         mainST,
1443         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1444         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1445         Collections.singletonList("group_id_1"),
1446         Collections.singletonList("node_2"), null,
1447         portTypeToIdList,
1448         consolidationData);
1449
1450     portTypeToIdList = new ArrayList<>();
1451     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1452     TestUtils.updateComputeTemplateConsolidationData(
1453         mainST,
1454         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1455         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1456         Collections.singletonList("group_id_1"),
1457         Collections.singletonList("node_3"), null,
1458         portTypeToIdList,
1459         consolidationData);
1460
1461     TestUtils.initPortConsolidationData(mainST, consolidationData);
1462     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1463         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1464         Arrays.asList("group_id_1", "group_id_2"), null, null,
1465         consolidationData);
1466     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1467         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1468         Arrays.asList("group_id_1", "group_id_2"), null, null,
1469         consolidationData);
1470     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1471         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1472         Arrays.asList("group_id_1", "group_id_2"), null, null,
1473         consolidationData);
1474
1475     translationContext.setConsolidationData(consolidationData);
1476     List<UnifiedCompositionMode> expectedUnifiedModes =
1477         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
1478     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1479   }
1480
1481   @Test
1482   public void testInvalidConsolidationForComputesWithGetAttrForEachOther() throws IOException {
1483     ConsolidationData consolidationData = new ConsolidationData();
1484     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1485     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1486         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1487             null, null);
1488
1489     TestUtils
1490         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1491
1492     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1493     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1494
1495     TestUtils.updateComputeTemplateConsolidationData(
1496         mainST,
1497         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1498         Collections.singletonList
1499             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1500         Collections.singletonList("group_id_1"),
1501         Collections.singletonList("server_ps02"), null,
1502         portTypeToIdList,
1503         consolidationData);
1504
1505     portTypeToIdList = new ArrayList<>();
1506     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1507     TestUtils.updateComputeTemplateConsolidationData(
1508         mainST,
1509         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1510         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1511         Collections.singletonList("group_id_1"),
1512         Collections.singletonList("node_1"), null,
1513         portTypeToIdList,
1514         consolidationData);
1515
1516     portTypeToIdList = new ArrayList<>();
1517     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1518     TestUtils.updateComputeTemplateConsolidationData(
1519         mainST,
1520         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1521         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1522         Collections.singletonList("group_id_1"),
1523         Collections.singletonList("node_2"), null,
1524         portTypeToIdList,
1525         consolidationData);
1526
1527     TestUtils.initPortConsolidationData(mainST, consolidationData);
1528     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1529         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1530         Arrays.asList("group_id_1", "group_id_2"), null, null,
1531         consolidationData);
1532     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1533         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1534         Arrays.asList("group_id_1", "group_id_2"), null, null,
1535         consolidationData);
1536     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1537         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1538         Arrays.asList("group_id_1", "group_id_2"), null, null,
1539         consolidationData);
1540
1541     translationContext.setConsolidationData(consolidationData);
1542     List<UnifiedCompositionMode> expectedUnifiedModes =
1543         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1544     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1545   }
1546
1547   @Test
1548   public void testValidConsolidationForPortsWithValidGetAttr() throws IOException {
1549     ConsolidationData consolidationData = new ConsolidationData();
1550     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1551     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1552         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1553             null, null);
1554
1555     TestUtils
1556         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1557
1558     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1559     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1560
1561     TestUtils.updateComputeTemplateConsolidationData(
1562         mainST,
1563         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1564         Collections.singletonList
1565             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1566         Collections.singletonList("group_id_1"), null,
1567         null,
1568         portTypeToIdList,
1569         consolidationData);
1570
1571     portTypeToIdList = new ArrayList<>();
1572     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1573     TestUtils.updateComputeTemplateConsolidationData(
1574         mainST,
1575         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1576         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1577         Collections.singletonList("group_id_1"),
1578         null, null,
1579         portTypeToIdList,
1580         consolidationData);
1581
1582     portTypeToIdList = new ArrayList<>();
1583     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1584     TestUtils.updateComputeTemplateConsolidationData(
1585         mainST,
1586         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1587         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1588         Collections.singletonList("group_id_1"),
1589         null, null,
1590         portTypeToIdList,
1591         consolidationData);
1592
1593     TestUtils.initPortConsolidationData(mainST, consolidationData);
1594     List<String> portNodeTemplateIds =
1595         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1596     List<List<String>> nodesConnectedInIds =
1597         Arrays.asList(Collections.singletonList("node_in_1"),
1598             Collections.singletonList("node_in_1"),
1599             Collections.singletonList("node_in_1"));
1600     List<List<String>> nodesConnectedOutIds =
1601         Arrays.asList(Collections.singletonList("node_out_1"),
1602             Collections.singletonList("node_out_1"),
1603             Collections.singletonList("node_out_1"));
1604     List<List<String>> getAttrInIds =
1605         Arrays.asList(Collections.singletonList("get_attr_1"),
1606             Collections.singletonList("get_attr_2"),
1607             Collections.singletonList("get_attr_3"));
1608     List<List<String>> groupIds =
1609         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
1610             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1611     List<List<Pair<String, GetAttrFuncData>>> getAttrOut =
1612         Arrays.asList(null, null, null);
1613
1614     TestUtils.updateMultiplePortConsolidationDatas(
1615         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1616         getAttrInIds, getAttrOut, consolidationData);
1617
1618     translationContext.setConsolidationData(consolidationData);
1619     List<UnifiedCompositionMode> expectedUnifiedModes =
1620         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
1621     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1622   }
1623
1624   @Test
1625   public void testInvalidConsolidationForPortsWithGetAttrInForEachOther() throws IOException {
1626     ConsolidationData consolidationData = new ConsolidationData();
1627     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1628     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1629         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation" +
1630                 "/three_ports_similar_relations",
1631             null, null);
1632
1633     TestUtils
1634         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1635
1636     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1637     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1638
1639     TestUtils.updateComputeTemplateConsolidationData(
1640         mainST,
1641         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1642         Collections.singletonList
1643             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1644         Collections.singletonList("group_id_1"),
1645         Collections.singletonList("node_1"), null,
1646         portTypeToIdList,
1647         consolidationData);
1648
1649     portTypeToIdList = new ArrayList<>();
1650     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1651     TestUtils.updateComputeTemplateConsolidationData(
1652         mainST,
1653         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1654         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1655         Collections.singletonList("group_id_1"),
1656         Collections.singletonList("node_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", Collections.singletonList("cm01_port_1"),
1665         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1666         Collections.singletonList("group_id_1"),
1667         Collections.singletonList("node_3"), null,
1668         portTypeToIdList,
1669         consolidationData);
1670
1671     TestUtils.initPortConsolidationData(mainST, consolidationData);
1672     List<String> portNodeTemplateIds =
1673         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1674     List<List<String>> nodesConnectedInIds =
1675         Arrays.asList(Collections.singletonList("node_in_1"),
1676             Collections.singletonList("node_in_1"),
1677             Collections.singletonList("node_in_1"));
1678     List<List<String>> nodesConnectedOutIds =
1679         Arrays.asList(Collections.singletonList("node_out_1"),
1680             Collections.singletonList("node_out_1"),
1681             Collections.singletonList("node_out_1"));
1682     List<List<String>> getAttrInIds =
1683         Arrays.asList(Collections.singletonList("get_attr_1"),
1684             Collections.singletonList("get_attr_2"),
1685             Collections.singletonList("cm01_port_1"));
1686     List<List<String>> groupIds =
1687         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
1688             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1689     List<List<Pair<String, GetAttrFuncData>>> getAttrOut =
1690         Arrays.asList(null, null, null);
1691
1692     TestUtils.updateMultiplePortConsolidationDatas(
1693         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1694         getAttrInIds, getAttrOut, consolidationData);
1695
1696     translationContext.setConsolidationData(consolidationData);
1697     List<UnifiedCompositionMode> expectedUnifiedModes =
1698         Collections.singletonList(UnifiedCompositionMode.CatalogInstance);
1699     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1700   }
1701
1702   @Test
1703   public void testValidConsolidationForComputesWithSamePortTypesPointingByGetAttrIn() throws
1704       IOException {
1705     ConsolidationData consolidationData = new ConsolidationData();
1706     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1707     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1708         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1709             null, null);
1710
1711     TestUtils
1712         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1713
1714     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1715     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1716
1717     TestUtils.updateComputeTemplateConsolidationData(
1718         mainST,
1719         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1720         Collections.singletonList
1721             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1722         Collections.singletonList("group_id_1"),
1723         Collections.singletonList("cm01_port_1"), null,
1724         portTypeToIdList,
1725         consolidationData);
1726
1727     portTypeToIdList = new ArrayList<>();
1728     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1729     TestUtils.updateComputeTemplateConsolidationData(
1730         mainST,
1731         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1732         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1733         Collections.singletonList("group_id_1"),
1734         Collections.singletonList("cm01_port_2"), null,
1735         portTypeToIdList,
1736         consolidationData);
1737
1738     portTypeToIdList = new ArrayList<>();
1739     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1740     TestUtils.updateComputeTemplateConsolidationData(
1741         mainST,
1742         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1743         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1744         Collections.singletonList("group_id_1"),
1745         Collections.singletonList("cm01_port_3"), null,
1746         portTypeToIdList,
1747         consolidationData);
1748
1749     TestUtils.initPortConsolidationData(mainST, consolidationData);
1750     List<String> portNodeTemplateIds =
1751         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3");
1752     List<List<String>> nodesConnectedInIds =
1753         Arrays.asList(Collections.singletonList("node_in_1"),
1754             Collections.singletonList("node_in_1"),
1755             Collections.singletonList("node_in_1"));
1756     List<List<String>> nodesConnectedOutIds =
1757         Arrays.asList(Collections.singletonList("node_out_1"),
1758             Collections.singletonList("node_out_1"),
1759             Collections.singletonList("node_out_1"));
1760     List<List<String>> getAttrInIds =
1761         Arrays.asList(Collections.singletonList("get_attr_1"),
1762             Collections.singletonList("get_attr_2"),
1763             Collections.singletonList("get_attr_3"));
1764     List<List<String>> groupIds =
1765         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
1766             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1767     List<List<Pair<String, GetAttrFuncData>>> getAttrOut =
1768         Arrays.asList(null, null, null);
1769
1770     TestUtils.updateMultiplePortConsolidationDatas(
1771         mainST, portNodeTemplateIds, nodesConnectedInIds, nodesConnectedOutIds, groupIds,
1772         getAttrInIds, getAttrOut, consolidationData);
1773
1774     translationContext.setConsolidationData(consolidationData);
1775     List<UnifiedCompositionMode> expectedUnifiedModes =
1776         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
1777     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1778   }
1779
1780   @Test
1781   public void testValidGetAttrOutFromComputes() throws IOException {
1782     ConsolidationData consolidationData = new ConsolidationData();
1783     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1784     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1785         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1786             null, null);
1787
1788     TestUtils
1789         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1790
1791     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1792     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1793     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1794     TestUtils.updateComputeTemplateConsolidationData(
1795         mainST,
1796         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1797         Collections.singletonList
1798             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1799         Collections.singletonList("group_id_1"),
1800         Collections.singletonList("cm01_port_1"),
1801         Collections.singletonList(
1802             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
1803         portTypeToIdList,
1804         consolidationData);
1805
1806     portTypeToIdList = new ArrayList<>();
1807     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1808     TestUtils.updateComputeTemplateConsolidationData(
1809         mainST,
1810         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1811         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1812         Collections.singletonList("group_id_1"),
1813         Collections.singletonList("cm01_port_1"),
1814         Collections.singletonList(
1815             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
1816         portTypeToIdList,
1817         consolidationData);
1818
1819     portTypeToIdList = new ArrayList<>();
1820     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1821     TestUtils.updateComputeTemplateConsolidationData(
1822         mainST,
1823         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1824         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1825         Collections.singletonList("group_id_1"),
1826         Collections.singletonList("cm01_port_1"),
1827         Collections.singletonList(
1828             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
1829         portTypeToIdList,
1830         consolidationData);
1831
1832     TestUtils.initPortConsolidationData(mainST, consolidationData);
1833     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
1834         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1835         Arrays.asList("group_id_1", "group_id_2"),
1836         Collections.singletonList("sm01_port_2"), null,
1837         consolidationData);
1838     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
1839         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1840         Arrays.asList("group_id_1", "group_id_2"),
1841         Collections.singletonList("sm01_port_1"), null,
1842         consolidationData);
1843     TestUtils.updatePortConsolidationData(mainST, "cm01_port_3",
1844         Collections.singletonList("node_in_1"), Collections.singletonList("net_id_1"),
1845         Arrays.asList("group_id_1", "group_id_2"),
1846         Collections.singletonList("rm01_port_1"), null,
1847         consolidationData);
1848
1849     translationContext.setConsolidationData(consolidationData);
1850     List<UnifiedCompositionMode> expectedUnifiedModes =
1851         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
1852     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1853   }
1854
1855   @Test
1856   public void testInValidGetAttrOutFromComputesPortTypeDifferent() throws IOException {
1857     ConsolidationData consolidationData = new ConsolidationData();
1858     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1859     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1860         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1861             null, null);
1862
1863     TestUtils
1864         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1865
1866     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
1867     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1868     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1869     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1870     TestUtils.updateComputeTemplateConsolidationData(
1871         mainST,
1872         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1873         Collections.singletonList
1874             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1875         Collections.singletonList("group_id_1"),
1876         Collections.singletonList("cm01_port_1"),
1877         Collections.singletonList(
1878             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
1879         portTypeToIdList,
1880         consolidationData);
1881
1882     portTypeToIdList = new ArrayList<>();
1883     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1884     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1885     TestUtils.updateComputeTemplateConsolidationData(
1886         mainST,
1887         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1888         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1889         Collections.singletonList("group_id_1"),
1890         Collections.singletonList("cm01_port_1"),
1891         Collections.singletonList(
1892             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
1893         portTypeToIdList,
1894         consolidationData);
1895
1896     portTypeToIdList = new ArrayList<>();
1897     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1898     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1899     TestUtils.updateComputeTemplateConsolidationData(
1900         mainST,
1901         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1902         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1903         Collections.singletonList("group_id_1"),
1904         Collections.singletonList("cm01_port_1"),
1905         Collections.singletonList(
1906             new ImmutablePair<>("sm01_port_1", getAttrFuncData)),
1907         portTypeToIdList,
1908         consolidationData);
1909
1910     TestUtils.initPortConsolidationData(mainST, consolidationData);
1911
1912     List<String> portNodeTemplateIds =
1913         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1",
1914             "sm01_port_2",
1915             "sm01_port_3");
1916     List<List<String>> nodesConnectedInIds =
1917         Arrays.asList(Collections.singletonList("node_in_1"),
1918             Collections.singletonList("node_in_1"), Collections.singletonList
1919                 ("node_in_1"), Collections.singletonList("node_in_1"),
1920             Collections.singletonList("node_in_1"),
1921             Collections.singletonList("node_in_1"));
1922     List<List<String>> nodesConnectedOutIds =
1923         Arrays.asList(Collections.singletonList("node_out_1"),
1924             Collections.singletonList("node_out_1"), Collections.singletonList
1925                 ("node_out_1"), Collections.singletonList("node_out_1"),
1926             Collections.singletonList("node_out_1"),
1927             Collections.singletonList("node_out_1"));
1928     List<List<String>> getAttrInIds =
1929         Arrays.asList(Collections.singletonList("get_attr_1"),
1930             Collections.singletonList("get_attr_2"), Collections.singletonList
1931                 ("get_attr_3"), Collections.singletonList("get_attr_1"),
1932             Collections.singletonList("get_attr_2"),
1933             Collections.singletonList("get_attr_3"));
1934     List<List<String>> groupIds =
1935         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
1936             Arrays.asList("group_id_1",
1937                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
1938             Arrays.asList("group_id_1", "group_id_2"),
1939             Arrays.asList("group_id_1",
1940                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
1941     List<List<Pair<String, GetAttrFuncData>>> getAttrOut =
1942         Arrays.asList(null, null, null, null,
1943             null, null);
1944
1945     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
1946         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
1947         consolidationData);
1948
1949     translationContext.setConsolidationData(consolidationData);
1950     List<UnifiedCompositionMode> expectedUnifiedModes =
1951         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
1952     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
1953   }
1954
1955   @Test
1956   public void testValidGetAttrOutFromPorts() throws IOException {
1957     ConsolidationData consolidationData = new ConsolidationData();
1958     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
1959     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
1960         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
1961             null, null);
1962
1963     TestUtils
1964         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
1965
1966     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1967     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
1968     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
1969     TestUtils.updateComputeTemplateConsolidationData(
1970         mainST,
1971         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
1972         Collections.singletonList
1973             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1974         Collections.singletonList("group_id_1"),
1975         Collections.singletonList("cm01_port_1"), null,
1976         portTypeToIdList,
1977         consolidationData);
1978
1979     portTypeToIdList = new ArrayList<>();
1980     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
1981     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
1982     TestUtils.updateComputeTemplateConsolidationData(
1983         mainST,
1984         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
1985         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1986         Collections.singletonList("group_id_1"),
1987         Collections.singletonList("cm01_port_1"), null,
1988         portTypeToIdList,
1989         consolidationData);
1990
1991     portTypeToIdList = new ArrayList<>();
1992     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
1993     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
1994     TestUtils.updateComputeTemplateConsolidationData(
1995         mainST,
1996         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
1997         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
1998         Collections.singletonList("group_id_1"),
1999         Collections.singletonList("cm01_port_1"), null,
2000         portTypeToIdList,
2001         consolidationData);
2002
2003     TestUtils.initPortConsolidationData(mainST, consolidationData);
2004
2005     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
2006     List<String> portNodeTemplateIds =
2007         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1",
2008             "sm01_port_2",
2009             "sm01_port_3");
2010     List<List<String>> nodesConnectedInIds =
2011         Arrays.asList(Collections.singletonList("node_in_1"),
2012             Collections.singletonList("node_in_1"), Collections.singletonList
2013                 ("node_in_1"), Collections.singletonList("node_in_1"),
2014             Collections.singletonList("node_in_1"),
2015             Collections.singletonList("node_in_1"));
2016     List<List<String>> nodesConnectedOutIds =
2017         Arrays.asList(Collections.singletonList("node_out_1"),
2018             Collections.singletonList("node_out_1"), Collections.singletonList
2019                 ("node_out_1"), Collections.singletonList("node_out_1"),
2020             Collections.singletonList("node_out_1"),
2021             Collections.singletonList("node_out_1"));
2022     List<List<String>> getAttrInIds =
2023         Arrays.asList(null, null, null, null, null, null);
2024     List<List<String>> groupIds =
2025         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
2026             Arrays.asList("group_id_1",
2027                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
2028             Arrays.asList("group_id_1", "group_id_2"),
2029             Arrays.asList("group_id_1",
2030                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
2031     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
2032         Collections.singletonList(
2033             new ImmutablePair<>("sm01_port_1", getAttrFuncData)),
2034         Collections.singletonList(
2035             new ImmutablePair<>("sm01_port_2", getAttrFuncData)),
2036         Collections.singletonList(
2037             new ImmutablePair<>("sm01_port_3", getAttrFuncData)),
2038         Collections.singletonList(
2039             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
2040         Collections.singletonList(
2041             new ImmutablePair<>("cm01_port_2", getAttrFuncData)),
2042         Collections.singletonList(
2043             new ImmutablePair<>("cm01_port_3", getAttrFuncData)));
2044
2045     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
2046         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
2047         consolidationData);
2048
2049     translationContext.setConsolidationData(consolidationData);
2050     List<UnifiedCompositionMode> expectedUnifiedModes =
2051         Collections.singletonList(UnifiedCompositionMode.ScalingInstances);
2052     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
2053   }
2054
2055   @Test
2056   public void testInvalidGetAttrOutFromPorts() throws IOException {
2057     ConsolidationData consolidationData = new ConsolidationData();
2058     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2059     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2060         ("/mock/services/heattotosca/consolidation/translatedfiles/computeportconsolidation/three_ports_similar_relations",
2061             null, null);
2062
2063     TestUtils
2064         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
2065
2066     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
2067     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_1"));
2068     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_1"));
2069     TestUtils.updateComputeTemplateConsolidationData(
2070         mainST,
2071         computeNodeTypeName, "server_ps01", Collections.singletonList("cm01_port_1"),
2072         Collections.singletonList
2073             ("cmaui_volume"), Collections.singletonList("cmaui_volume"),
2074         Collections.singletonList("group_id_1"),
2075         Collections.singletonList("cm01_port_1"), null,
2076         portTypeToIdList,
2077         consolidationData);
2078
2079     portTypeToIdList = new ArrayList<>();
2080     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_2"));
2081     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_2"));
2082     TestUtils.updateComputeTemplateConsolidationData(
2083         mainST,
2084         computeNodeTypeName, "server_ps02", Collections.singletonList("cm01_port_1"),
2085         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
2086         Collections.singletonList("group_id_1"),
2087         Collections.singletonList("cm01_port_1"), null,
2088         portTypeToIdList,
2089         consolidationData);
2090
2091     portTypeToIdList = new ArrayList<>();
2092     portTypeToIdList.add(new ImmutablePair<>("cm01_port", "cm01_port_3"));
2093     portTypeToIdList.add(new ImmutablePair<>("sm01_port", "sm01_port_3"));
2094     TestUtils.updateComputeTemplateConsolidationData(
2095         mainST,
2096         computeNodeTypeName, "server_ps03", Collections.singletonList("cm01_port_1"),
2097         Collections.singletonList("cmaui_volume"), Collections.singletonList("cmaui_volume"),
2098         Collections.singletonList("group_id_1"),
2099         Collections.singletonList("cm01_port_1"), null,
2100         portTypeToIdList,
2101         consolidationData);
2102
2103     TestUtils.initPortConsolidationData(mainST, consolidationData);
2104
2105     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "s1_name");
2106     List<String> portNodeTemplateIds =
2107         Arrays.asList("cm01_port_1", "cm01_port_2", "cm01_port_3", "sm01_port_1",
2108             "sm01_port_2",
2109             "sm01_port_3");
2110     List<List<String>> nodesConnectedInIds =
2111         Arrays.asList(Collections.singletonList("node_in_1"),
2112             Collections.singletonList("node_in_1"), Collections.singletonList
2113                 ("node_in_1"), Collections.singletonList("node_in_1"),
2114             Collections.singletonList("node_in_1"),
2115             Collections.singletonList("node_in_1"));
2116     List<List<String>> nodesConnectedOutIds =
2117         Arrays.asList(Collections.singletonList("node_out_1"),
2118             Collections.singletonList("node_out_1"), Collections.singletonList
2119                 ("node_out_1"), Collections.singletonList("node_out_1"),
2120             Collections.singletonList("node_out_1"),
2121             Collections.singletonList("node_out_1"));
2122     List<List<String>> getAttrInIds =
2123         Arrays.asList(null, null, null, null, null, null);
2124     List<List<String>> groupIds =
2125         Arrays.asList(Arrays.asList("group_id_1", "group_id_2"),
2126             Arrays.asList("group_id_1", "group_id_2"), Arrays.asList("group_id_1", "group_id_2"),
2127             Arrays.asList("group_id_1", "group_id_2"),
2128             Arrays.asList("group_id_1",
2129                 "group_id_2"), Arrays.asList("group_id_1", "group_id_2"));
2130     List<List<Pair<String, GetAttrFuncData>>> getAttrOut = Arrays.asList(
2131         Collections.singletonList(
2132             new ImmutablePair<>("server_ps01", getAttrFuncData)),
2133         Collections.singletonList(
2134             new ImmutablePair<>("server_ps01", getAttrFuncData)),
2135         Collections.singletonList(
2136             new ImmutablePair<>("sm01_port_3", getAttrFuncData)),
2137         Collections.singletonList(
2138             new ImmutablePair<>("cm01_port_1", getAttrFuncData)),
2139         Collections.singletonList(
2140             new ImmutablePair<>("cm01_port_2", getAttrFuncData)),
2141         Collections.singletonList(
2142             new ImmutablePair<>("cm01_port_3", getAttrFuncData)));
2143
2144     TestUtils.updateMultiplePortConsolidationDatas(mainST, portNodeTemplateIds,
2145         nodesConnectedInIds, nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOut,
2146         consolidationData);
2147
2148     translationContext.setConsolidationData(consolidationData);
2149     List<UnifiedCompositionMode> expectedUnifiedModes =
2150         Collections.singletonList(UnifiedCompositionMode.SingleSubstitution);
2151     verifyMainServiceTemplateConsolidation(1, expectedUnifiedModes, toscaServiceModel);
2152   }
2153
2154   @Test
2155   public void testSubstitutionConsolidationPreConditionTrue() throws IOException {
2156     translationContext = new TranslationContext();
2157     String mainSTName = "MainServiceTemplate.yaml";
2158     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2159
2160     ConsolidationData consolidationData = new ConsolidationData();
2161     TestUtils.updateNestedConsolidationData(mainSTName, Collections.singletonList("server_pcm_001"),
2162         consolidationData);
2163     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2164         "org.openecomp.resource.vfc.nodes.heat" +
2165             ".pcm_server", consolidationData);
2166     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2167         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
2168     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2169         "org.openecomp.resource.vfc.nodes.heat" +
2170             ".pcm_server", consolidationData);
2171     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2172         "org.openecomp.resource.vfc.nodes" +
2173             ".heat.pcm_server", "pcm_server", consolidationData);
2174
2175     translationContext.setConsolidationData(consolidationData);
2176
2177     addMockServiceTemplateToContext(mainSTName, "Main");
2178     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2179
2180     verifySubstitutionServiceTemplateConsolidation
2181         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2182             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2183             UnifiedCompositionMode.NestedSingleCompute);
2184   }
2185
2186   @Test
2187   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeType()
2188       throws IOException {
2189     translationContext = new TranslationContext();
2190     String mainSTName = "MainServiceTemplate.yaml";
2191     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2192
2193     ConsolidationData consolidationData = new ConsolidationData();
2194     TestUtils.updateNestedConsolidationData(mainSTName, Collections.singletonList("server_pcm_001"),
2195         consolidationData);
2196     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2197         "org.openecomp.resource.vfc.nodes.heat" +
2198             ".pcm_server", consolidationData);
2199     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2200         "org.openecomp.resource.vfc.nodes" +
2201             ".heat.pcm_server", "server_pcm_001", consolidationData);
2202     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2203         "org.openecomp.resource.vfc.nodes.heat" +
2204             ".pcm_server", consolidationData);
2205
2206     TestUtils.updateNestedConsolidationData(mainSTName, Collections.singletonList("server_oam_001"),
2207         consolidationData);
2208     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2209         "org.openecomp.resource.vfc.nodes.heat" +
2210             ".oam_server", consolidationData);
2211     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2212         "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam_001", consolidationData);
2213     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2214         "org.openecomp.resource.vfc.nodes.heat" +
2215             ".oam_server", consolidationData);
2216
2217     translationContext.setConsolidationData(consolidationData);
2218
2219     addMockServiceTemplateToContext(mainSTName, "Main");
2220     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2221
2222     verifySubstitutionServiceTemplateConsolidation
2223         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2224             translationContext.getTranslatedServiceTemplates().get
2225                 (nestedServiceTemplateName), UnifiedCompositionMode.SingleSubstitution);
2226   }
2227
2228   @Test
2229   public void testSubstitutionConsolidationPreConditionFalseMoreThanOneComputeOfSameType()
2230       throws IOException {
2231     translationContext = new TranslationContext();
2232     String mainSTName = "MainServiceTemplate.yaml";
2233     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2234
2235     ConsolidationData consolidationData = new ConsolidationData();
2236     TestUtils.updateNestedConsolidationData(mainSTName, Collections.singletonList("server_pcm_001"),
2237         consolidationData);
2238     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2239         "org.openecomp.resource.vfc.nodes.heat" +
2240             ".pcm_server", consolidationData);
2241     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2242         "org.openecomp.resource.vfc.nodes.heat" +
2243             ".pcm_server", consolidationData);
2244     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2245         "org.openecomp.resource.vfc.nodes" +
2246             ".heat.pcm_server", "pcm_server_1", consolidationData);
2247
2248     TestUtils
2249         .updateNestedConsolidationData(nestedServiceTemplateName,
2250             Collections.singletonList("server_pcm_002"),
2251             consolidationData);
2252     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2253         "org.openecomp.resource.vfc.nodes" +
2254             ".heat.pcm_server", "pcm_server_2", consolidationData);
2255
2256     translationContext.setConsolidationData(consolidationData);
2257
2258     addMockServiceTemplateToContext(mainSTName, "Main");
2259     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2260
2261     Mockito.doNothing().when(consolidationService).serviceTemplateConsolidation
2262         (translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2263             translationContext);
2264     verifySubstitutionServiceTemplateConsolidation
2265         (1, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2266             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2267             UnifiedCompositionMode.SingleSubstitution);
2268   }
2269
2270   @Test
2271   public void testSubstitutionConsolidationPreConditionFalseNestedInsideNested() {
2272     translationContext = new TranslationContext();
2273     String mainSTName = "MainServiceTemplate.yaml";
2274     String nestedServiceTemplateName = "nested-pcm_v0.1ServiceTemplate.yaml";
2275
2276     ConsolidationData consolidationData = new ConsolidationData();
2277     TestUtils.updateNestedConsolidationData(mainSTName, Collections.singletonList("server_pcm_001"),
2278         consolidationData);
2279     TestUtils.initComputeNodeTypeInConsolidationData(mainSTName,
2280         "org.openecomp.resource.vfc.nodes.heat" +
2281             ".pcm_server", consolidationData);
2282     TestUtils.initComputeNodeTemplateIdInConsolidationData(mainSTName,
2283         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm_001", consolidationData);
2284     TestUtils.initComputeNodeTypeInConsolidationData(nestedServiceTemplateName,
2285         "org.openecomp.resource.vfc.nodes.heat" +
2286             ".pcm_server", consolidationData);
2287     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedServiceTemplateName,
2288         "org.openecomp.resource.vfc.nodes" +
2289             ".heat.pcm_server", "pcm_server", consolidationData);
2290
2291     TestUtils
2292         .updateNestedConsolidationData(nestedServiceTemplateName,
2293             Collections.singletonList("nested_resource"),
2294             consolidationData);
2295
2296     translationContext.setConsolidationData(consolidationData);
2297
2298     addMockServiceTemplateToContext(mainSTName, "Main");
2299     addMockServiceTemplateToContext(nestedServiceTemplateName, "nested-pcm_v0.1");
2300
2301     verifySubstitutionServiceTemplateConsolidation
2302         (0, translationContext.getTranslatedServiceTemplates().get(mainSTName),
2303             translationContext.getTranslatedServiceTemplates().get(nestedServiceTemplateName),
2304             UnifiedCompositionMode.SingleSubstitution);
2305   }
2306
2307   @Test
2308   public void testConsolidationPreConditionFalseDiffSubportTypes() throws IOException {
2309     translationContext = new TranslationContext();
2310     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2311     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2312         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2313             null, null);
2314
2315     ConsolidationData consolidationData = new ConsolidationData();
2316     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2317
2318     TestUtils
2319         .addPortSubInterface(
2320             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2321                 "role_1", "interface_1", null, null, null, null, consolidationData));
2322     TestUtils
2323         .addPortSubInterface(
2324             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested2.yaml", 2,
2325                 "role_2", "interface_2", null, null, null, null, consolidationData));
2326     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.SingleSubstitution));
2327   }
2328
2329   private void generateComputeAndPortConsolidationData(String computeNodeTypeName,
2330                                                        ConsolidationData consolidationData) {
2331     TestUtils
2332         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
2333
2334     updateComputeConsolidationData("server_ps01", computeNodeTypeName, "cm01_port",
2335         "cm01_port_1", consolidationData);
2336
2337     updateComputeConsolidationData("server_ps02", computeNodeTypeName, "cm01_port",
2338         "cm01_port_2", consolidationData);
2339
2340     TestUtils.initPortConsolidationData(mainST, consolidationData);
2341     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
2342         null, null, null, null, null,
2343         consolidationData);
2344     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
2345         null, null, null, null, null,
2346         consolidationData);
2347   }
2348
2349   @Test
2350   public void testConsolidationPreConditionFalseDiffSubportNumber() throws IOException {
2351     translationContext = new TranslationContext();
2352     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2353     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2354         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2355             null, null);
2356
2357     ConsolidationData consolidationData = new ConsolidationData();
2358     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2359
2360     TestUtils
2361         .addPortSubInterface(
2362             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2363                 "role_1", "interface_1", null, null, null, null, consolidationData));
2364     TestUtils
2365         .addPortSubInterface(
2366             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2367                 "role_2", "interface_2", null, null, null, null, consolidationData));
2368     TestUtils
2369         .addPortSubInterface(
2370             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2371                 "role_3", "interface_3", null, null, null, null, consolidationData));
2372
2373     testConsolidation(1, toscaServiceModel,
2374         consolidationData, Collections.singletonList(UnifiedCompositionMode.SingleSubstitution));
2375   }
2376
2377   @Test
2378   public void testConsolidationRuleFalseDifferentCountInResourceGroup() throws IOException {
2379     translationContext = new TranslationContext();
2380     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2381     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2382         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2383             null, null);
2384
2385     ConsolidationData consolidationData = new ConsolidationData();
2386     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2387
2388     TestUtils
2389         .addPortSubInterface(
2390             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2391                 "role_1", "interface_1", null, null, null, null, consolidationData));
2392     TestUtils
2393         .addPortSubInterface(
2394             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 3,
2395                 "role_1", "interface_2", null, null, null, null, consolidationData));
2396
2397     testConsolidation(1, toscaServiceModel,
2398         consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2399   }
2400
2401   @Test
2402   public void testConsolidationRuleFalseDifferentNodesConnectedInToResourceGroup()
2403       throws IOException {
2404     translationContext = new TranslationContext();
2405     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2406     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2407         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2408             null, null);
2409
2410     ConsolidationData consolidationData = new ConsolidationData();
2411     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2412
2413     TestUtils
2414         .addPortSubInterface(
2415             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2416                 "role_1", "interface_1", Collections.singletonList("node_1"), null, null, null,
2417                 consolidationData));
2418     TestUtils
2419         .addPortSubInterface(
2420             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2421                 "role_1", "interface_2", Collections.singletonList("node_2"), null, null, null,
2422                 consolidationData));
2423
2424     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2425   }
2426
2427   @Test
2428   public void testConsolidationRuleFalseDifferentNodesConnectedOutFromResourceGroup()
2429       throws IOException {
2430     translationContext = new TranslationContext();
2431     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2432     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2433         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2434             null, null);
2435
2436     ConsolidationData consolidationData = new ConsolidationData();
2437     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2438
2439     TestUtils
2440         .addPortSubInterface(
2441             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2442                 "role_1", "interface_1", null, Collections.singletonList("node_1"), null, null,
2443                 consolidationData));
2444     TestUtils
2445         .addPortSubInterface(
2446             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2447                 "role_1", "interface_2", null, Collections.singletonList("node_2"), null, null,
2448                 consolidationData));
2449
2450     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2451   }
2452
2453   @Test
2454   public void testConsolidationRuleFalseGetAttrInBetweenSubInterfacesOfSameType()
2455       throws IOException {
2456     translationContext = new TranslationContext();
2457     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2458     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2459         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2460             null, null);
2461
2462     ConsolidationData consolidationData = new ConsolidationData();
2463     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2464
2465     TestUtils
2466         .addPortSubInterface(
2467             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2468                 "role_1", "interface_1", null, null, Collections.singletonList("in_node_1"), null,
2469                 consolidationData));
2470     TestUtils
2471         .addPortSubInterface(
2472             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2473                 "role_1", "interface_2", null, null, Collections.singletonList("interface_1"), null,
2474                 consolidationData));
2475
2476     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2477   }
2478
2479   @Test
2480   public void testConsolidationRuleFalseGetAttrOutBetweenSubInterfacesOfSameType()
2481       throws IOException {
2482     translationContext = new TranslationContext();
2483     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2484     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2485         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2486             null, null);
2487
2488     ConsolidationData consolidationData = new ConsolidationData();
2489     TestUtils
2490         .initComputeNodeTypeInConsolidationData(mainST, computeNodeTypeName, consolidationData);
2491
2492     updateComputeConsolidationData("server_ps01", computeNodeTypeName, "cm01_port",
2493         "cm01_port_1", consolidationData);
2494     updateComputeConsolidationData("server_ps02", computeNodeTypeName, "cm01_port",
2495         "cm01_port_2", consolidationData);
2496
2497     GetAttrFuncData getAttrFuncData = new GetAttrFuncData("name", "c1_name");
2498     Pair<String, GetAttrFuncData> getAttrOutInvalid1 =
2499         new ImmutablePair<>("interface_1", getAttrFuncData);
2500     Pair<String, GetAttrFuncData> getAttrOutInvalid2 =
2501         new ImmutablePair<>("interface_2", getAttrFuncData);
2502
2503     TestUtils.initPortConsolidationData(mainST, consolidationData);
2504     TestUtils.updatePortConsolidationData(mainST, "cm01_port_1",
2505         null, null, null, null, null,
2506         consolidationData);
2507     TestUtils.updatePortConsolidationData(mainST, "cm01_port_2",
2508         null, null, null, null, null,
2509         consolidationData);
2510
2511     TestUtils
2512         .addPortSubInterface(
2513             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2514                 "role_1", "interface_1", null, null, null,
2515                 Collections.singletonList(getAttrOutInvalid1), consolidationData));
2516     TestUtils
2517         .addPortSubInterface(
2518             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2519                 "role_1", "interface_2", null, null, null,
2520                 Collections.singletonList(getAttrOutInvalid2), consolidationData));
2521
2522     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2523   }
2524
2525   @Test
2526   public void testConsolidationRuleFalseDifferentRoleInResourceGroup() throws IOException {
2527     translationContext = new TranslationContext();
2528     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2529     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2530         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2531             null, null);
2532
2533     ConsolidationData consolidationData = new ConsolidationData();
2534     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2535
2536     TestUtils
2537         .addPortSubInterface(
2538             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2539                 "role_1", "interface_1", null, null, null, null, consolidationData));
2540     TestUtils
2541         .addPortSubInterface(
2542             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2543                 "role_2", "interface_2", null, null, null, null, consolidationData));
2544
2545     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.CatalogInstance));
2546   }
2547
2548   @Test
2549   public void testConsolidationRuleTrueForSubInterfaces() throws IOException {
2550     translationContext = new TranslationContext();
2551     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.ps_server";
2552     ToscaServiceModel toscaServiceModel = TestUtils.loadToscaServiceModel
2553         ("/mock/services/heattotosca/consolidation/translatedfiles/pre_condition/different_subinterface_types",
2554             null, null);
2555
2556     ConsolidationData consolidationData = new ConsolidationData();
2557     generateComputeAndPortConsolidationData(computeNodeTypeName, consolidationData);
2558
2559     TestUtils
2560         .addPortSubInterface(
2561             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_1", "nested1.yaml", 2,
2562                 "role_1", "interface_1", Collections.singletonList("node_1"),
2563                 Collections.singletonList("node_1"), null, null, consolidationData));
2564     TestUtils
2565         .addPortSubInterface(
2566             new SubInterfaceConsolidationDataTestInfo(mainST, "cm01_port_2", "nested1.yaml", 2,
2567                 "role_1", "interface_2", Collections.singletonList("node_1"),
2568                 Collections.singletonList("node_1"), null, null, consolidationData));
2569
2570     testConsolidation(1, toscaServiceModel, consolidationData, Collections.singletonList(UnifiedCompositionMode.ScalingInstances));
2571   }
2572
2573   private void testConsolidation(int times, ToscaServiceModel toscaServiceModel,
2574                                  ConsolidationData consolidationData,
2575                                  List<UnifiedCompositionMode> expectedUnifiedModes) {
2576     Mockito.doNothing().when(unifiedCompositionServiceMock).createUnifiedComposition(
2577         any(),
2578         any(),
2579         any(),
2580         any(),
2581         any());
2582     translationContext.setConsolidationData(consolidationData);
2583     verifyMainServiceTemplateConsolidation(times, expectedUnifiedModes, toscaServiceModel);
2584   }
2585
2586   private void updateComputeConsolidationData(String computeNodeTemplateId,
2587                                               String computeNodeTypeName,
2588                                               String portType,
2589                                               String portNodeTemplateId,
2590                                               ConsolidationData consolidationData) {
2591     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
2592     portTypeToIdList.add(new ImmutablePair<>(portType, portNodeTemplateId));
2593
2594     TestUtils.updateComputeTemplateConsolidationData(
2595         mainST,
2596         computeNodeTypeName, computeNodeTemplateId,
2597         null, null, null, null, null, null,
2598         portTypeToIdList, consolidationData);
2599   }
2600
2601
2602   private void verifyMainServiceTemplateConsolidation(int times,
2603                                                       List<UnifiedCompositionMode> expectedUnifiedCompositionModes,
2604                                                       ToscaServiceModel toscaServiceModel) {
2605     consolidationService
2606         .serviceTemplateConsolidation(toscaServiceModel.getServiceTemplates().get(mainST),
2607             translationContext);
2608
2609     ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates().get(mainST);
2610     verify(unifiedCompositionServiceMock, times(times))
2611         .createUnifiedComposition(
2612             eq(mainServiceTemplate),
2613             any(),
2614             unifiedModelListArg.capture(),
2615             unifiedCompositionModeArg.capture(),
2616             eq(translationContext));
2617
2618     List<UnifiedCompositionMode> actualUnifiedCompositionModes =
2619         unifiedCompositionModeArg.getAllValues();
2620     Assert.assertEquals(expectedUnifiedCompositionModes, actualUnifiedCompositionModes);
2621   }
2622
2623   private void verifySubstitutionServiceTemplateConsolidation(int times,
2624                                                               ServiceTemplate mainST,
2625                                                               ServiceTemplate nestedST,
2626                                                               UnifiedCompositionMode expectedMode) {
2627     consolidationService.substitutionServiceTemplateConsolidation(null, mainST,
2628         nestedST, translationContext);
2629
2630     if (expectedMode.equals(UnifiedCompositionMode.NestedSingleCompute)) {
2631       verify(unifiedCompositionServiceMock, times(times)).
2632           createUnifiedComposition(
2633               eq(mainST),
2634               eq(nestedST),
2635               unifiedModelListArg.capture(),
2636               unifiedCompositionModeArg.capture(),
2637               eq(translationContext));
2638       Assert.assertEquals(expectedMode, unifiedCompositionModeArg.getValue());
2639
2640     }
2641   }
2642
2643   private void addMockServiceTemplateToContext(String serviceTemplateFileName,
2644                                                String templateName) {
2645     ServiceTemplate serviceTemplate = new ServiceTemplate();
2646     Map<String, String> metadata = new HashMap<>();
2647     metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, templateName);
2648     serviceTemplate.setMetadata(metadata);
2649     translationContext.getTranslatedServiceTemplates()
2650         .put(serviceTemplateFileName, serviceTemplate);
2651   }
2652
2653 }