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