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