[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / test / java / org / openecomp / sdc / translator / services / heattotosca / UnifiedCompositionServiceTest.java
1 package org.openecomp.sdc.translator.services.heattotosca;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Matchers.anyObject;
5 import static org.mockito.Matchers.anyString;
6
7 import org.apache.commons.lang3.tuple.ImmutablePair;
8 import org.apache.commons.lang3.tuple.Pair;
9 import org.junit.Before;
10 import org.junit.Ignore;
11 import org.junit.Test;
12 import org.mockito.InjectMocks;
13 import org.mockito.Mockito;
14 import org.mockito.MockitoAnnotations;
15 import org.mockito.Spy;
16 import org.openecomp.sdc.tosca.services.YamlUtil;
17 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
18 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
19 import org.openecomp.sdc.tosca.services.DataModelUtil;
20 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
21 import org.openecomp.sdc.translator.TestUtils;
22 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
23 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
24 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
27 import org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition.UnifiedCompositionSingleSubstitution;
28
29 import java.io.IOException;
30 import java.net.URL;
31 import java.util.*;
32
33 public class UnifiedCompositionServiceTest {
34   @InjectMocks
35   @Spy
36   UnifiedCompositionService unifiedCompositionService;
37   @Spy
38   TranslationContext context;
39
40   String inputServiceTemplatesPath;
41   String outputServiceTemplatesPath;
42   Map<String, ServiceTemplate> inputServiceTemplates;
43   Map<String, ServiceTemplate> expectedOutserviceTemplates;
44   private static String mainSTName = "MainServiceTemplate.yaml";
45   private static String substitutionST = "SubstitutionServiceTemplate.yaml";
46   private static String globalSubstitutionST = "GlobalSubstitutionTypesServiceTemplate.yaml";
47
48   @Before
49   public void setUp() {
50     MockitoAnnotations.initMocks(this);
51   }
52
53   //todo
54   @Test
55   public void createUnifiedComposition() throws Exception {
56
57   }
58
59   @Test
60   public void createSubstitutionStNoConsolidationData() throws Exception {
61     inputServiceTemplatesPath =
62         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/in";
63     outputServiceTemplatesPath =
64         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/out";
65
66     loadInputAndOutputData();
67     ServiceTemplate expectedServiceTemplate =
68         TestUtils.loadServiceTemplate(outputServiceTemplatesPath);
69
70     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
71     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
72         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
73             unifiedCompositionDataList,
74             context, "org.openecomp.resource.vfc.nodes.heat.FSB1", null);
75     assertEquals(false, substitutionServiceTemplate.isPresent());
76   }
77
78   @Test
79   public void createSubstitutionStNoOutputParamAndDuplicatePortType() throws Exception {
80     inputServiceTemplatesPath =
81         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/in";
82     outputServiceTemplatesPath =
83         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoOutParamDuplicatePortType/out";
84
85     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
86     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
87     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
88     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
89     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
90
91     loadInputAndOutputData();
92     UnifiedCompositionData unifiedCompositionData =
93         createCompositionData("FSB1_template", portTypeToIdList);
94     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
95     unifiedCompositionDataList.add(unifiedCompositionData);
96
97     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
98         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
99             unifiedCompositionDataList,
100             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
101     assertEquals(true, substitutionServiceTemplate.isPresent());
102     substitutionServiceTemplate
103         .ifPresent(
104             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
105                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
106   }
107
108   @Test
109   public void createSubstitutionStWithOutputParamNoConsolidation() throws Exception {
110     inputServiceTemplatesPath =
111         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate" +
112             "/WithOutputParameters/noConsolidation/in";
113     outputServiceTemplatesPath =
114         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/noConsolidation/out";
115
116     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
117     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
118     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
119     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
120
121     loadInputAndOutputData();
122     UnifiedCompositionData unifiedCompositionData =
123         createCompositionData("FSB1_template", portTypeToIdList);
124     addGetAttrForCompute(unifiedCompositionData);
125     addGetAttrForPort(unifiedCompositionData);
126     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
127     unifiedCompositionDataList.add(unifiedCompositionData);
128
129     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
130         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
131             unifiedCompositionDataList,
132             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
133     assertEquals(true, substitutionServiceTemplate.isPresent());
134     substitutionServiceTemplate
135         .ifPresent(
136             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
137                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
138   }
139
140   @Test
141   public void createSubstitutionStWithOutputParamWithConsolidation() throws Exception {
142     inputServiceTemplatesPath =
143         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/consolidation/in";
144     outputServiceTemplatesPath =
145         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithOutputParameters/consolidation/out";
146
147     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
148     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
149     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
150     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
151
152     loadInputAndOutputData();
153     UnifiedCompositionData unifiedCompositionData1 =
154         createCompositionData("FSB1_template", portTypeToIdList1);
155     addGetAttrForCompute(unifiedCompositionData1);
156     addGetAttrForPort(unifiedCompositionData1);
157     unifiedCompositionDataList.add(unifiedCompositionData1);
158
159     List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
160     portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
161     portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
162
163     UnifiedCompositionData unifiedCompositionData2 =
164         createCompositionData("FSB2_template", portTypeToIdList2);
165     addGetAttrForCompute2(unifiedCompositionData2);
166     addGetAttrForPort2(unifiedCompositionData2);
167     unifiedCompositionDataList.add(unifiedCompositionData2);
168
169     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
170         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
171             unifiedCompositionDataList,
172             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
173     assertEquals(true, substitutionServiceTemplate.isPresent());
174     substitutionServiceTemplate
175         .ifPresent(
176             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
177                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
178   }
179
180   @Test
181   public void createSubstitutionStNoPorts() throws Exception {
182     inputServiceTemplatesPath =
183         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoPorts/in";
184     outputServiceTemplatesPath =
185         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/NoPorts/out";
186
187     loadInputAndOutputData();
188
189     UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
190     String computeNodeTemplateId = "FSB1_template";
191     unifiedCompositionData.setComputeTemplateConsolidationData(
192         TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, null, null));
193     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
194     unifiedCompositionDataList.add(unifiedCompositionData);
195
196     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
197         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
198             unifiedCompositionDataList,
199             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
200     assertEquals(true, substitutionServiceTemplate.isPresent());
201     substitutionServiceTemplate
202         .ifPresent(
203             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
204                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
205   }
206
207
208   @Test
209   public void createSubstitutionStWithIndex() throws Exception {
210     inputServiceTemplatesPath =
211         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithIndex/in";
212     outputServiceTemplatesPath =
213         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/WithIndex/out";
214
215     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
216     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
217     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
218     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
219
220     loadInputAndOutputData();
221     UnifiedCompositionData unifiedCompositionData =
222         createCompositionData("FSB1_template", portTypeToIdList);
223     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
224     unifiedCompositionDataList.add(unifiedCompositionData);
225
226     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
227         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
228             unifiedCompositionDataList,
229             context,"org.openecomp.resource.abstract.nodes.FSB1", 2);
230     assertEquals(true, substitutionServiceTemplate.isPresent());
231     substitutionServiceTemplate
232         .ifPresent(
233             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
234                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
235   }
236
237
238   @Test
239   public void createAbstractSubstituteOneComputeMultiplePortsDifferentTypesTest() throws Exception {
240     inputServiceTemplatesPath =
241         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsDiffType/in";
242     outputServiceTemplatesPath =
243         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsDiffType/out";
244
245     loadInputAndOutputData();
246
247     UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template");
248     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
249     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
250     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
251     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
252     addPortDataToCompositionData(portTypeToIdList, data);
253
254     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
255     unifiedCompositionDataList.add(data);
256     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
257         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
258             unifiedCompositionDataList,
259             context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
260     assertEquals(true, substitutionServiceTemplate.isPresent());
261     if (substitutionServiceTemplate.isPresent()) {
262       String substitutionNodeTypeId =
263           unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
264               unifiedCompositionDataList.get(0), null, context);
265       String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
266           inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
267           unifiedCompositionDataList, substitutionNodeTypeId,
268           context, null);
269       validateAbstractSubstitute();
270     }
271   }
272
273
274   @Test
275   public void createAbstractSubstituteOneComputeMultiplePortsSameTypesTest() throws Exception {
276     inputServiceTemplatesPath =
277         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsSameType/in";
278     outputServiceTemplatesPath =
279         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/oneComputeMultiplePortsSameType/out";
280
281     loadInputAndOutputData();
282
283     UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template");
284     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
285     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
286     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
287     addPortDataToCompositionData(portTypeToIdList, data);
288
289     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
290     unifiedCompositionDataList.add(data);
291     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
292         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
293             unifiedCompositionDataList
294             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
295
296     assertEquals(true, substitutionServiceTemplate.isPresent());
297     if (substitutionServiceTemplate.isPresent()) {
298       String substitutionNodeTypeId =
299           unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
300               unifiedCompositionDataList.get(0), null, context);
301       String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
302           inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
303           unifiedCompositionDataList, substitutionNodeTypeId,
304           context, null);
305       validateAbstractSubstitute();
306     }
307   }
308
309
310   @Test
311   public void createAbstractSubstituteTwoComputesMultiplePorts() throws Exception {
312     inputServiceTemplatesPath =
313         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/twoComputesMultiplePorts/in";
314     outputServiceTemplatesPath =
315         "/mock/services/heattotosca/unifiedComposition/createAbstractSubstitute/twoComputesMultiplePorts/out";
316
317     loadInputAndOutputData();
318     List<UnifiedCompositionData> unifiedCompositionDataList =
319         createAbstractSubstituteCompositionDataComputeAndPort();
320     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
321         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
322             unifiedCompositionDataList
323             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
324     assertEquals(true, substitutionServiceTemplate.isPresent());
325     if (substitutionServiceTemplate.isPresent()) {
326       String substitutionNodeTypeId =
327           unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
328               unifiedCompositionDataList.get(0), null, context);
329       String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
330           inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
331           unifiedCompositionDataList, substitutionNodeTypeId,
332           context, null);
333       validateAbstractSubstitute();
334     }
335   }
336
337
338   @Test
339   public void updNodesConnectedOutWithConsolidationTest() throws Exception {
340     inputServiceTemplatesPath =
341         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/consolidation/in";
342     outputServiceTemplatesPath =
343         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/consolidation/out";
344
345     loadInputAndOutputData();
346     List<UnifiedCompositionData> unifiedCompositionDataList =
347         createAbstractSubstituteCompositionDataComputeAndPort();
348     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
349         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
350             unifiedCompositionDataList
351             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
352     assertEquals(true, substitutionServiceTemplate.isPresent());
353     if (substitutionServiceTemplate.isPresent()) {
354       String substitutionNodeTypeId =
355           unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
356               unifiedCompositionDataList.get(0), null, context);
357       String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
358           inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
359           unifiedCompositionDataList, substitutionNodeTypeId,
360           context, null);
361
362       unifiedCompositionService
363           .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
364               unifiedCompositionDataList, context);
365       validateAbstractSubstitute();
366     }
367   }
368
369   private void validateAbstractSubstitute() {
370     YamlUtil yamlUtil = new YamlUtil();
371     assertEquals(yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainSTName)), yamlUtil
372         .objectToYaml(inputServiceTemplates.get(mainSTName)));
373   }
374
375
376   @Test
377   public void updNodesConnectedOutNoConsolidationTest() throws Exception {
378     inputServiceTemplatesPath =
379         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/noConsolidation/in";
380     outputServiceTemplatesPath =
381         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedOut/noConsolidation/out";
382
383     loadInputAndOutputData();
384
385     UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template");
386     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
387     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
388     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
389     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
390     addPortDataToCompositionData(portTypeToIdList, data);
391
392     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
393     unifiedCompositionDataList.add(data);
394
395     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
396         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
397             unifiedCompositionDataList
398             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
399     assertEquals(true, substitutionServiceTemplate.isPresent());
400     if (substitutionServiceTemplate.isPresent()) {
401       String substitutionNodeTypeId =
402           unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
403               unifiedCompositionDataList.get(0), null, context);
404       String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
405           inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
406           unifiedCompositionDataList, substitutionNodeTypeId,
407           context, null);
408
409       unifiedCompositionService
410           .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
411               unifiedCompositionDataList, context);
412       validateAbstractSubstitute();
413     }
414   }
415
416
417   @Test
418   public void updNodesConnectedInNoConsolidationTest() throws Exception {
419     inputServiceTemplatesPath =
420         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/noConsolidation/in";
421     outputServiceTemplatesPath =
422         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/noConsolidation/out";
423
424     loadInputAndOutputData();
425
426     UnifiedCompositionData data = createComputeUnifiedCompositionData("QRouter");
427     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
428     portTypeToIdList.add(new ImmutablePair<>("cdr_network_port", "cdr_network_port"));
429     portTypeToIdList
430         .add(new ImmutablePair<>("oam_private_net_network_port", "oam_private_net_network_port"));
431     addPortDataToCompositionData(portTypeToIdList, data);
432
433     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
434     unifiedCompositionDataList.add(data);
435
436     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
437         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
438             unifiedCompositionDataList
439             , context, "org.openecomp.resource.abstract.nodes.QRouter", null);
440
441     String substitutionNodeTypeId =
442         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
443             unifiedCompositionDataList.get(0), null, context);
444     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
445         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
446         unifiedCompositionDataList, substitutionNodeTypeId,
447         context, null);
448
449     unifiedCompositionService
450         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
451             unifiedCompositionDataList, context);
452     validateAbstractSubstitute();
453   }
454
455
456   @Test
457   public void updNodesConnectedInWithConsolidationTest() throws Exception {
458     inputServiceTemplatesPath =
459         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/consolidation/in";
460     outputServiceTemplatesPath =
461         "/mock/services/heattotosca/unifiedComposition/updNodesConnectedIn/consolidation/out";
462
463     loadInputAndOutputData();
464
465     List<UnifiedCompositionData> unifiedCompositionDataList =
466         createAbstractSubstituteCompositionDataComputeAndPort();
467
468     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
469         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
470             unifiedCompositionDataList
471             , context, "org.openecomp.resource.abstract.nodes.FSB", null);
472
473     String substitutionNodeTypeId =
474         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
475             unifiedCompositionDataList.get(0), null, context);
476     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
477         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
478         unifiedCompositionDataList, substitutionNodeTypeId,
479         context, null);
480
481     unifiedCompositionService
482         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
483             unifiedCompositionDataList, context);
484     validateAbstractSubstitute();
485   }
486
487
488   @Test
489   public void updVolumesNoConsolidationTest() throws Exception {
490     inputServiceTemplatesPath =
491         "/mock/services/heattotosca/unifiedComposition/updVolumes/noConsolidation/in";
492     outputServiceTemplatesPath =
493         "/mock/services/heattotosca/unifiedComposition/updVolumes/noConsolidation/out";
494
495     loadInputAndOutputData();
496
497     UnifiedCompositionData data = createComputeUnifiedCompositionData("FSB1_template");
498     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
499     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
500     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
501     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
502     addPortDataToCompositionData(portTypeToIdList, data);
503
504     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
505     unifiedCompositionDataList.add(data);
506
507     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
508         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
509             unifiedCompositionDataList
510             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
511
512     String substitutionNodeTypeId =
513         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
514             unifiedCompositionDataList.get(0), null, context);
515     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
516         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
517         unifiedCompositionDataList, substitutionNodeTypeId,
518         context, null);
519
520     unifiedCompositionService
521         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
522             unifiedCompositionDataList, context);
523     validateAbstractSubstitute();
524   }
525
526
527   @Test
528   public void updVolumesWithConsolidationTest() throws Exception {
529     inputServiceTemplatesPath =
530         "/mock/services/heattotosca/unifiedComposition/updVolumes/consolidation/in";
531     outputServiceTemplatesPath =
532         "/mock/services/heattotosca/unifiedComposition/updVolumes/consolidation/out";
533
534     loadInputAndOutputData();
535     List<UnifiedCompositionData> unifiedCompositionDataList =
536         createAbstractSubstituteCompositionDataComputeAndPort();
537     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
538         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
539             unifiedCompositionDataList
540             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
541
542     String substitutionNodeTypeId =
543         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
544             unifiedCompositionDataList.get(0), null, context);
545     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
546         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
547         unifiedCompositionDataList, substitutionNodeTypeId,
548         context, null);
549
550     unifiedCompositionService
551         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
552             unifiedCompositionDataList, context);
553     validateAbstractSubstitute();
554   }
555
556
557   @Test
558   public void updGroupsNoConsolidationTest() throws Exception {
559     inputServiceTemplatesPath =
560         "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/noConsolidation/in";
561     outputServiceTemplatesPath =
562         "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/noConsolidation/out";
563
564     loadInputAndOutputData();
565
566     UnifiedCompositionData data = createComputeUnifiedCompositionData("server_smp1");
567     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
568     portTypeToIdList.add(new ImmutablePair<>("port", "port1"));
569     portTypeToIdList.add(new ImmutablePair<>("port", "port2"));
570     addPortDataToCompositionData(portTypeToIdList, data);
571
572     //Add groups
573     List<String> computeGroupIdList =
574         TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName), "server_smp1");
575     data.getComputeTemplateConsolidationData().setGroupIds(computeGroupIdList);
576
577     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
578     unifiedCompositionDataList.add(data);
579
580     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
581         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
582             unifiedCompositionDataList
583             , context, "org.openecomp.resource.abstract.nodes.smp", null);
584
585     String substitutionNodeTypeId =
586         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
587             unifiedCompositionDataList.get(0), null, context);
588     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
589         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
590         unifiedCompositionDataList, substitutionNodeTypeId,
591         context, null);
592
593     unifiedCompositionService
594         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
595             unifiedCompositionDataList, context);
596     validateAbstractSubstitute();
597   }
598
599
600   @Test
601   public void updGroupsWithConsolidationTest() throws Exception {
602     inputServiceTemplatesPath =
603         "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/consolidation/in";
604     outputServiceTemplatesPath =
605         "/mock/services/heattotosca/unifiedComposition/updGroupsConnectivity/consolidation/out";
606
607     loadInputAndOutputData();
608
609     List<UnifiedCompositionData> unifiedCompositionDataList =
610         createAbstractSubstituteCompositionDataComputeAndPort();
611
612     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
613         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
614             unifiedCompositionDataList
615             , context, "org.openecomp.resource.vfc.nodes.heat.FSB", null);
616
617     String substitutionNodeTypeId =
618         unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(mainSTName),
619             unifiedCompositionDataList.get(0), null, context);
620     String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
621         inputServiceTemplates.get(mainSTName), substitutionServiceTemplate.get(),
622         unifiedCompositionDataList, substitutionNodeTypeId,
623         context, null);
624
625     unifiedCompositionService
626         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
627             unifiedCompositionDataList, context);
628     validateAbstractSubstitute();
629   }
630
631   @Test
632   public void updOutParamGetAttrInNoConsolidationTest() throws Exception {
633     inputServiceTemplatesPath =
634         "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/noConsolidation/in";
635     outputServiceTemplatesPath =
636         "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/noConsolidation/out";
637
638     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
639     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
640     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
641     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
642
643     loadInputAndOutputData();
644     UnifiedCompositionData unifiedCompositionData =
645         createCompositionData("FSB1_template", portTypeToIdList);
646     addOutputGetAttrInForComputeNoConsolidation(unifiedCompositionData);
647     addOutputGetAttrInForPortNoConsolidation(unifiedCompositionData);
648
649     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
650     unifiedCompositionDataList.add(unifiedCompositionData);
651     Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
652         (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context);
653     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
654         anyString());
655     unifiedCompositionService
656         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
657             unifiedCompositionDataList, context);
658
659     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
660   }
661
662   @Test
663   public void updOutParamGetAttrInWithConsolidationTest() throws Exception {
664     inputServiceTemplatesPath =
665         "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/consolidation/in";
666     outputServiceTemplatesPath =
667         "/mock/services/heattotosca/unifiedComposition/updOutputGetAttrIn/consolidation/out";
668
669     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
670     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
671     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
672     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
673
674     loadInputAndOutputData();
675     UnifiedCompositionData unifiedCompositionData1 =
676         createCompositionData("FSB1_template", portTypeToIdList1);
677     addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
678     addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
679     unifiedCompositionDataList.add(unifiedCompositionData1);
680
681     List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
682     portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
683     portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
684
685     UnifiedCompositionData unifiedCompositionData2 =
686         createCompositionData("FSB2_template", portTypeToIdList2);
687     unifiedCompositionDataList.add(unifiedCompositionData2);
688     addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2);
689     addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2);
690
691     Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
692         (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context);
693     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
694         anyString());
695
696     unifiedCompositionService
697         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
698             unifiedCompositionDataList, context);
699
700     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
701   }
702
703   @Test
704   public void updNodeGetAttrInNoConsolidationTest() throws Exception {
705     inputServiceTemplatesPath =
706         "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/noConsolidation/in";
707     outputServiceTemplatesPath =
708         "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/noConsolidation/out";
709
710     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
711     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
712     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
713     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
714
715     loadInputAndOutputData();
716     UnifiedCompositionData unifiedCompositionData =
717         createCompositionData("FSB1_template", portTypeToIdList);
718     addGetAttrForCompute(unifiedCompositionData);
719     addGetAttrForPort(unifiedCompositionData);
720     addGetAttrForPortInnerUC(unifiedCompositionData);
721
722     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
723     unifiedCompositionDataList.add(unifiedCompositionData);
724     Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
725         (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context);
726     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
727         anyString());
728     unifiedCompositionService
729         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
730             unifiedCompositionDataList, context);
731
732     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
733   }
734
735   @Test
736   public void updNodeGetAttrInWithConsolidationTest() throws Exception {
737     inputServiceTemplatesPath =
738         "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/consolidation/in";
739     outputServiceTemplatesPath =
740         "/mock/services/heattotosca/unifiedComposition/updNodesGetAttrIn/consolidation/out";
741
742     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
743     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
744     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
745     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
746
747     loadInputAndOutputData();
748     UnifiedCompositionData unifiedCompositionData1 =
749         createCompositionData("FSB1_template", portTypeToIdList1);
750     addGetAttrForCompute(unifiedCompositionData1);
751     addGetAttrForPort(unifiedCompositionData1);
752     unifiedCompositionDataList.add(unifiedCompositionData1);
753
754     List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
755     portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
756     portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
757
758     UnifiedCompositionData unifiedCompositionData2 =
759         createCompositionData("FSB2_template", portTypeToIdList2);
760     addGetAttrForCompute2(unifiedCompositionData2);
761     addGetAttrForPort2(unifiedCompositionData2);
762     unifiedCompositionDataList.add(unifiedCompositionData2);
763
764
765     Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
766         (inputServiceTemplates.get(mainSTName), unifiedCompositionDataList, context);
767     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
768         anyString());
769
770     unifiedCompositionService
771         .updateCompositionConnectivity(inputServiceTemplates.get(mainSTName),
772             unifiedCompositionDataList, context);
773
774     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
775   }
776
777
778   @Test
779   public void updNodesGetAttrFromInnerNodesTest() throws Exception {
780     inputServiceTemplatesPath =
781         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation/in";
782     outputServiceTemplatesPath =
783         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation/out";
784
785     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
786     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
787     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
788     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
789
790     loadInputAndOutputData();
791     UnifiedCompositionData unifiedCompositionData =
792         createCompositionData("FSB1_template", portTypeToIdList);
793     addGetAttrForCompute(unifiedCompositionData);
794     addGetAttrForPort(unifiedCompositionData);
795     addGetAttrForPortInnerUC(unifiedCompositionData);
796     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
797     unifiedCompositionDataList.add(unifiedCompositionData);
798
799     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
800         anyString());
801
802     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
803         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
804             unifiedCompositionDataList,
805             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
806     assertEquals(true, substitutionServiceTemplate.isPresent());
807     substitutionServiceTemplate
808         .ifPresent(
809             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
810                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
811   }
812
813
814   @Test
815   public void updNodesGetAttrFromConsolidationNodesTest() throws Exception {
816     inputServiceTemplatesPath =
817         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/in";
818     outputServiceTemplatesPath =
819         "/mock/services/heattotosca/unifiedComposition/creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation/out";
820
821     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
822     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
823     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
824     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
825
826     loadInputAndOutputData();
827     UnifiedCompositionData unifiedCompositionData1 =
828         createCompositionData("FSB1_template", portTypeToIdList1);
829     addGetAttrForCompute(unifiedCompositionData1);
830     addGetAttrForPort(unifiedCompositionData1);
831     unifiedCompositionDataList.add(unifiedCompositionData1);
832
833     List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
834     portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
835     portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
836
837     UnifiedCompositionData unifiedCompositionData2 =
838         createCompositionData("FSB2_template", portTypeToIdList2);
839     addGetAttrForCompute2(unifiedCompositionData2);
840     addGetAttrForPort2(unifiedCompositionData2);
841     unifiedCompositionDataList.add(unifiedCompositionData2);
842
843     Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
844         .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(mainSTName),
845             unifiedCompositionDataList,
846             context, "org.openecomp.resource.abstract.nodes.FSB1", null);
847     assertEquals(true, substitutionServiceTemplate.isPresent());
848     substitutionServiceTemplate
849         .ifPresent(
850             subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
851                 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
852   }
853
854   @Test
855   public void cleanMainServiceTemplateTestNoConsolidation() throws IOException {
856     inputServiceTemplatesPath =
857         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/noConsolidation/in";
858     outputServiceTemplatesPath =
859         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/noConsolidation/out";
860
861     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
862     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
863     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
864     portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", "FSB1_OAM"));
865
866     loadInputAndOutputData();
867     UnifiedCompositionData unifiedCompositionData =
868         createCompositionData("FSB1_template", portTypeToIdList);
869     addGetAttrForCompute(unifiedCompositionData);
870     addGetAttrForPort(unifiedCompositionData);
871
872     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
873     unifiedCompositionDataList.add(unifiedCompositionData);
874
875     NodeTemplate abstractNodeTemplate = getMockNode(
876         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/mockAbstractNodeTemplate.yaml");
877     inputServiceTemplates.get(mainSTName).getTopology_template().getNode_templates()
878         .put("FSB1", abstractNodeTemplate);
879
880     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
881         anyString());
882
883     unifiedCompositionService.
884         cleanUnifiedCompositionEntities(inputServiceTemplates.get(mainSTName),
885             unifiedCompositionDataList, context);
886
887     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
888   }
889
890   @Test
891   public void cleanMainServiceTemplateTestWithConsolidation() throws IOException {
892     inputServiceTemplatesPath =
893         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/consolidation/in";
894     outputServiceTemplatesPath =
895         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/consolidation/out";
896
897     loadInputAndOutputData();
898
899     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
900     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
901     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
902     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
903
904     UnifiedCompositionData unifiedCompositionData1 =
905         createCompositionData("FSB1_template", portTypeToIdList1);
906     addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
907     addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
908     unifiedCompositionDataList.add(unifiedCompositionData1);
909
910     List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
911     portTypeToIdList2.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
912     portTypeToIdList2.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
913
914     UnifiedCompositionData unifiedCompositionData2 =
915         createCompositionData("FSB2_template", portTypeToIdList2);
916     addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2);
917     addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2);
918     unifiedCompositionDataList.add(unifiedCompositionData2);
919
920     NodeTemplate abstractNodeTemplate = getMockNode(
921         "/mock/services/heattotosca/unifiedComposition/cleanMainSt/mockAbstractNodeTemplate.yaml");
922     inputServiceTemplates.get(mainSTName).getTopology_template().getNode_templates()
923         .put("FSB1", abstractNodeTemplate);
924
925     Mockito.doReturn("FSB1").when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
926         anyString());
927
928     unifiedCompositionService.
929         cleanUnifiedCompositionEntities(inputServiceTemplates.get(mainSTName),
930             unifiedCompositionDataList, context);
931
932     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
933   }
934
935   @Test
936   public void updateNewAbstractNodeTemplateNoConsolidation() throws IOException {
937     inputServiceTemplatesPath =
938         "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/noConsolidation/in";
939     outputServiceTemplatesPath =
940         "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/noConsolidation/out";
941
942     loadInputAndOutputData();
943
944     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
945     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
946     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
947
948     NodeTemplate cleanedComputeNodeTemplate =
949         getMockNode(
950             "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml");
951
952
953     context.setConsolidationData(
954         createConsolidationData(Arrays.asList("FSB1_template"), portTypeToIdList));
955     context.addCleanedNodeTemplate(mainSTName, "FSB1_template",
956         UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate);
957     context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal1",
958         UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate);
959     context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal2",
960         UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate);
961
962     setUnifiedCompositionData(Arrays.asList("FSB1_template", "FSB1_Internal1", "FSB1_Internal2"));
963
964     unifiedCompositionService
965         .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(mainSTName), context);
966
967     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
968   }
969
970   @Test
971   public void updateNewAbstractNodeTemplateWithConsolidation() throws IOException {
972     inputServiceTemplatesPath =
973         "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/consolidation/in";
974     outputServiceTemplatesPath =
975         "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/consolidation/out";
976
977     loadInputAndOutputData();
978
979     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
980     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
981     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal1"));
982
983     NodeTemplate cleanedComputeNodeTemplate =
984         getMockNode(
985             "/mock/services/heattotosca/unifiedComposition/fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml");
986
987
988     context.setConsolidationData(
989         createConsolidationData(Arrays.asList("FSB1_template_1", "FSB1_template_2"),
990             portTypeToIdList));
991     context.addCleanedNodeTemplate(mainSTName, "FSB1_template_1",
992         UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate);
993     context.addCleanedNodeTemplate(mainSTName, "FSB1_template_2",
994         UnifiedCompositionEntity.Compute, cleanedComputeNodeTemplate);
995     context.addCleanedNodeTemplate(mainSTName, "FSB1_Internal1",
996         UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate);
997     context.addCleanedNodeTemplate(mainSTName, "FSB2_Internal1",
998         UnifiedCompositionEntity.Port, cleanedComputeNodeTemplate);
999
1000     setUnifiedCompositionData(
1001         Arrays.asList("FSB1_template_1", "FSB1_template_2", "FSB1_Internal1", "FSB2_Internal1"));
1002
1003     unifiedCompositionService
1004         .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(mainSTName), context);
1005
1006     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
1007   }
1008
1009   @Ignore
1010   public void testThreeNovaOfSameTypePreConditionFalse() throws IOException {
1011     inputServiceTemplatesPath =
1012         "/mock/services/heattotosca/unifiedComposition/pattern1b/noConsolidation/in";
1013     outputServiceTemplatesPath =
1014         "/mock/services/heattotosca/unifiedComposition/pattern1b/noConsolidation/out";
1015
1016     loadInputAndOutputData();
1017
1018     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
1019     List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
1020     portTypeToIdList1.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal1"));
1021     portTypeToIdList1.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
1022
1023     UnifiedCompositionData unifiedCompositionData1 =
1024         createCompositionData("FSB1_template", portTypeToIdList1);
1025     addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
1026     addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
1027     unifiedCompositionDataList.add(unifiedCompositionData1);
1028
1029     UnifiedCompositionData unifiedCompositionData2 =
1030         createCompositionData("FSB2_template", portTypeToIdList1);
1031     addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData2);
1032     addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData2);
1033     unifiedCompositionDataList.add(unifiedCompositionData2);
1034
1035     portTypeToIdList1.remove(1);
1036     UnifiedCompositionData unifiedCompositionData3 =
1037         createCompositionData("FSB3_template", portTypeToIdList1);
1038     addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData3);
1039     addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData3);
1040     unifiedCompositionDataList.add(unifiedCompositionData3);
1041
1042     UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
1043         new UnifiedCompositionSingleSubstitution();
1044     unifiedCompositionSingleSubstitution
1045         .createUnifiedComposition(inputServiceTemplates.get(mainSTName), null,
1046             unifiedCompositionDataList, context);
1047
1048     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
1049   }
1050
1051   @Test
1052   public void testUnifiedNestedCompositionOneComputeInNested() throws IOException {
1053     inputServiceTemplatesPath =
1054         "/mock/services/heattotosca/unifiedComposition/pattern4/oneNestedNode/in";
1055     outputServiceTemplatesPath =
1056         "/mock/services/heattotosca/unifiedComposition/pattern4/oneNestedNode/out";
1057
1058     loadInputAndOutputData();
1059
1060     ConsolidationData consolidationData = new ConsolidationData();
1061     String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1062     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
1063         consolidationData);
1064
1065     TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName,
1066         "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
1067     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName,
1068         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
1069
1070     context.setConsolidationData(consolidationData);
1071     context.getTranslatedServiceTemplates()
1072         .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1073             inputServiceTemplates.get(globalSubstitutionST));
1074     context.getTranslatedServiceTemplates()
1075         .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1076     context.getTranslatedServiceTemplates()
1077         .put(mainSTName, inputServiceTemplates.get(mainSTName));
1078
1079     UnifiedCompositionData unifiedComposition = createUnifiedCompositionOnlyNested("server_pcm_001");
1080     unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName),
1081         inputServiceTemplates.get(nestedFileName), unifiedComposition, context);
1082
1083     checkSTResults(expectedOutserviceTemplates, nestedFileName,
1084         context.getTranslatedServiceTemplates().get(nestedFileName),
1085         context.getTranslatedServiceTemplates()
1086             .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
1087   }
1088
1089   @Test
1090   public void testTwoNestedWithOneCompute() throws IOException {
1091     inputServiceTemplatesPath =
1092         "/mock/services/heattotosca/unifiedComposition/pattern4/twoNestedWithOneCompute/in";
1093     outputServiceTemplatesPath =
1094         "/mock/services/heattotosca/unifiedComposition/pattern4/twoNestedWithOneCompute/out";
1095
1096     loadInputAndOutputData();
1097
1098     ConsolidationData consolidationData = new ConsolidationData();
1099     String nestedFileName1 = "nested-pcm_v0.1ServiceTemplate.yaml";
1100     String nestedFileName2 = "nested-oam_v0.1ServiceTemplate.yaml";
1101
1102     TestUtils.updateNestedConsolidationData(mainSTName,
1103         Arrays.asList("server_pcm_001", "server_oam_001"), consolidationData);
1104
1105     TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName1,
1106         "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
1107     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName1,
1108         "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
1109     TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName2,
1110         "org.openecomp.resource.vfc.nodes.heat.oam_server", consolidationData);
1111     TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName2,
1112         "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam", consolidationData);
1113
1114     context.setConsolidationData(consolidationData);
1115     context.getTranslatedServiceTemplates()
1116         .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1117             inputServiceTemplates.get(globalSubstitutionST));
1118     context.getTranslatedServiceTemplates()
1119         .put(nestedFileName1, inputServiceTemplates.get(nestedFileName1));
1120     context.getTranslatedServiceTemplates()
1121         .put(nestedFileName2, inputServiceTemplates.get(nestedFileName2));
1122     context.getTranslatedServiceTemplates()
1123         .put(mainSTName, inputServiceTemplates.get(mainSTName));
1124
1125     UnifiedCompositionData unifiedComposition =
1126         createUnifiedCompositionOnlyNested("server_pcm_001");
1127     unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName),
1128         inputServiceTemplates.get(nestedFileName1), unifiedComposition, context);
1129     unifiedComposition = createUnifiedCompositionOnlyNested("server_oam_001");
1130     unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(mainSTName),
1131         inputServiceTemplates.get(nestedFileName2), unifiedComposition, context);
1132
1133     checkSTResults(expectedOutserviceTemplates, nestedFileName1,
1134         context.getTranslatedServiceTemplates().get(nestedFileName1),
1135         context.getTranslatedServiceTemplates()
1136             .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
1137     checkSTResults(expectedOutserviceTemplates, nestedFileName2,
1138         context.getTranslatedServiceTemplates().get(nestedFileName2),
1139         null, null);
1140   }
1141
1142   @Test
1143   public void testNestedCompositionNodesConnectedIn() throws IOException {
1144     inputServiceTemplatesPath =
1145         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesConnectedIn/in";
1146     outputServiceTemplatesPath =
1147         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesConnectedIn/out";
1148
1149     loadInputAndOutputData();
1150     ConsolidationData consolidationData = new ConsolidationData();
1151     String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1152     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
1153         consolidationData);
1154     context.getTranslatedServiceTemplates()
1155         .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1156             inputServiceTemplates.get(globalSubstitutionST));
1157     context.getTranslatedServiceTemplates()
1158         .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1159     context.getTranslatedServiceTemplates()
1160         .put(mainSTName, inputServiceTemplates.get(mainSTName));
1161     context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0");
1162
1163     Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1164         TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName),
1165             "dependency");
1166     UnifiedCompositionData unifiedComposition =
1167         createUnifiedCompositionOnlyNested("server_pcm_001");
1168     unifiedComposition.getNestedTemplateConsolidationData()
1169         .setNodesConnectedIn(nodeConnectedInList);
1170
1171     unifiedCompositionService.updNestedCompositionNodesConnectedInConnectivity
1172         (inputServiceTemplates.get(mainSTName), unifiedComposition, context);
1173     checkSTResults(expectedOutserviceTemplates, nestedFileName,
1174         context.getTranslatedServiceTemplates().get(nestedFileName),
1175         context.getTranslatedServiceTemplates()
1176             .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1177             .getTranslatedServiceTemplates().get(mainSTName));
1178   }
1179
1180
1181   @Test
1182   public void testNestedCompositionNodesGetAttrIn() throws IOException {
1183     inputServiceTemplatesPath =
1184         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesGetAttrIn/in";
1185     outputServiceTemplatesPath =
1186         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedNodesGetAttrIn/out";
1187
1188     loadInputAndOutputData();
1189     ConsolidationData consolidationData = new ConsolidationData();
1190     String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1191     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
1192         consolidationData);
1193     context.getTranslatedServiceTemplates()
1194         .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1195             inputServiceTemplates.get(globalSubstitutionST));
1196     context.getTranslatedServiceTemplates()
1197         .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1198     context.getTranslatedServiceTemplates()
1199         .put(mainSTName, inputServiceTemplates.get(mainSTName));
1200     context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0");
1201
1202     Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1203         TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName),
1204             "dependency");
1205     UnifiedCompositionData unifiedComposition =
1206         createUnifiedCompositionOnlyNested("server_pcm_001");
1207     addGetAttInUnifiedCompositionData(unifiedComposition
1208         .getNestedTemplateConsolidationData(), "tenant_id", "oam_net_gw", "packet_mirror_network");
1209     addGetAttInUnifiedCompositionData(unifiedComposition
1210         .getNestedTemplateConsolidationData(), "user_data_format", "oam_net_gw",
1211         "server_compute_get_attr_test");
1212     addGetAttInUnifiedCompositionData(unifiedComposition
1213         .getNestedTemplateConsolidationData(), "metadata", "server_pcm_id",
1214         "server_compute_get_attr_test");
1215     unifiedCompositionService.updNestedCompositionNodesGetAttrInConnectivity
1216         (inputServiceTemplates.get(mainSTName), unifiedComposition, context);
1217     checkSTResults(expectedOutserviceTemplates, nestedFileName,
1218         context.getTranslatedServiceTemplates().get(nestedFileName),
1219         context.getTranslatedServiceTemplates()
1220             .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1221             .getTranslatedServiceTemplates().get(mainSTName));
1222   }
1223
1224   @Test
1225   public void testNestedCompositionOutputParamGetAttrIn() throws IOException {
1226     inputServiceTemplatesPath =
1227         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedOutputParamGetAttrIn/in";
1228     outputServiceTemplatesPath =
1229         "/mock/services/heattotosca/unifiedComposition/pattern4/nestedOutputParamGetAttrIn/out";
1230
1231     loadInputAndOutputData();
1232     ConsolidationData consolidationData = new ConsolidationData();
1233     String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1234     TestUtils.updateNestedConsolidationData(mainSTName, Arrays.asList("server_pcm_001"),
1235         consolidationData);
1236     context.getTranslatedServiceTemplates()
1237         .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1238             inputServiceTemplates.get(globalSubstitutionST));
1239     context.getTranslatedServiceTemplates()
1240         .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1241     context.getTranslatedServiceTemplates()
1242         .put(mainSTName, inputServiceTemplates.get(mainSTName));
1243     context.addUnifiedNestedNodeTemplateId(mainSTName, "server_pcm_001", "abstract_pcm_server_0");
1244
1245     Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1246         TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(mainSTName),
1247             "dependency");
1248     UnifiedCompositionData unifiedComposition =
1249         createUnifiedCompositionOnlyNested("server_pcm_001");
1250     addOutputGetAttInUnifiedCompositionData(unifiedComposition
1251         .getNestedTemplateConsolidationData(), "output_attr_1", "accessIPv4");
1252     addOutputGetAttInUnifiedCompositionData(unifiedComposition
1253             .getNestedTemplateConsolidationData(), "output_attr_2", "accessIPv6");
1254     unifiedCompositionService.updNestedCompositionOutputParamGetAttrInConnectivity
1255         (inputServiceTemplates.get(mainSTName), unifiedComposition, context);
1256     checkSTResults(expectedOutserviceTemplates, nestedFileName,
1257         context.getTranslatedServiceTemplates().get(nestedFileName),
1258         context.getTranslatedServiceTemplates()
1259             .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1260             .getTranslatedServiceTemplates().get(mainSTName));
1261   }
1262
1263   @Test
1264   public void testInputOutputParameterType() throws IOException{
1265     inputServiceTemplatesPath =
1266         "/mock/services/heattotosca/unifiedComposition/inputoutputparamtype/in";
1267     outputServiceTemplatesPath =
1268         "/mock/services/heattotosca/unifiedComposition/inputoutputparamtype/out";
1269
1270     loadInputAndOutputData();
1271     ConsolidationData consolidationData = new ConsolidationData();
1272     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1273     portTypeToIdList.add(new ImmutablePair<>("FSB1_Port", "FSB1_Port1"));
1274     portTypeToIdList.add(new ImmutablePair<>("VMI", "VMI1"));
1275
1276     UnifiedCompositionData unifiedCompositionData = createCompositionData("FSB1", portTypeToIdList);
1277
1278     Map<String, NodeTemplate> nodeTemplates =
1279         inputServiceTemplates.get(mainSTName).getTopology_template().getNode_templates();
1280     for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet() ) {
1281       String nodeTemplateId = nodeTemplateEntry.getKey();
1282       if (nodeTemplateId.equals("cmaui_volume_test_compute_properties")) {
1283         Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1284             TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1285         unifiedCompositionData.getComputeTemplateConsolidationData()
1286             .setNodesGetAttrIn(nodesGetAttrIn);
1287       }
1288
1289       if (nodeTemplateId.equals("cmaui_volume_test_neutron_port_properties")) {
1290         Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1291             TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1292         unifiedCompositionData.getPortTemplateConsolidationDataList().get(0)
1293             .setNodesGetAttrIn(nodesGetAttrIn);
1294       }
1295
1296       if (nodeTemplateId.equals("cmaui_volume_test_contrailv2_VMI_properties")) {
1297         Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1298             TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1299         unifiedCompositionData.getPortTemplateConsolidationDataList().get(1)
1300             .setNodesGetAttrIn(nodesGetAttrIn);
1301       }
1302     }
1303
1304     List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
1305     unifiedCompositionDataList.add(unifiedCompositionData);
1306
1307     UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
1308         new UnifiedCompositionSingleSubstitution();
1309     unifiedCompositionSingleSubstitution
1310         .createUnifiedComposition(inputServiceTemplates.get(mainSTName), null,
1311             unifiedCompositionDataList, context);
1312     checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(mainSTName));
1313     System.out.println();
1314
1315   }
1316
1317
1318   private UnifiedCompositionData createUnifiedCompositionOnlyNested(
1319       String nestedNodeTemplateId) {
1320     NestedTemplateConsolidationData nestedTemplateConsolidationData =
1321         new NestedTemplateConsolidationData();
1322     nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
1323     UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1324     unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData);
1325      return unifiedCompositionData;
1326   }
1327
1328   private void setUnifiedCompositionData(List<String> nodeTemplateIds) {
1329     UnifiedSubstitutionData unifiedSubstitutionData =
1330         context.getUnifiedSubstitutionData().get(mainSTName) == null ? new UnifiedSubstitutionData()
1331             : context.getUnifiedSubstitutionData().get(mainSTName);
1332     Map<String, String> substitutionAbstractNodeIds = new HashMap<>();
1333     for (String id : nodeTemplateIds) {
1334       substitutionAbstractNodeIds.put(id, "FSB2");
1335     }
1336
1337     substitutionAbstractNodeIds.put("", "FSB1");
1338
1339     unifiedSubstitutionData.setNodesRelatedAbstractNode(substitutionAbstractNodeIds);
1340   }
1341
1342   private void checkSTResults(
1343       Map<String, ServiceTemplate> expectedOutserviceTemplates,
1344       ServiceTemplate substitutionServiceTemplate,
1345       ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1346     YamlUtil yamlUtil = new YamlUtil();
1347     if (Objects.nonNull(substitutionServiceTemplate)) {
1348       assertEquals("difference substitution service template: ",
1349           yamlUtil.objectToYaml(expectedOutserviceTemplates.get(substitutionST)),
1350           yamlUtil.objectToYaml(substitutionServiceTemplate));
1351     }
1352     if (Objects.nonNull(gloablSubstitutionServiceTemplate)) {
1353       assertEquals("difference global substitution service template: ",
1354           yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalSubstitutionST)),
1355           yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate));
1356     }
1357     if (Objects.nonNull(mainServiceTemplate)) {
1358       assertEquals("difference main service template: ",
1359           yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainSTName)),
1360           yamlUtil.objectToYaml(mainServiceTemplate));
1361     }
1362   }
1363
1364   private void checkSTResults(
1365       Map<String, ServiceTemplate> expectedOutserviceTemplates,
1366       String nestedSTFileName, ServiceTemplate nestedServiceTemplate,
1367       ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1368     YamlUtil yamlUtil = new YamlUtil();
1369
1370     if (Objects.nonNull(nestedServiceTemplate)) {
1371       assertEquals("difference nested service template: ",
1372           yamlUtil.objectToYaml(expectedOutserviceTemplates.get(nestedSTFileName)),
1373           yamlUtil.objectToYaml(nestedServiceTemplate));
1374     }
1375     checkSTResults(expectedOutserviceTemplates, null, gloablSubstitutionServiceTemplate,
1376         mainServiceTemplate);
1377   }
1378
1379
1380   private void loadInputAndOutputData() throws IOException {
1381     inputServiceTemplates = new HashMap<>();
1382     TestUtils.loadServiceTemplates(inputServiceTemplatesPath, new ToscaExtensionYamlUtil(),
1383         inputServiceTemplates);
1384     expectedOutserviceTemplates = new HashMap<>();
1385     TestUtils.loadServiceTemplates(outputServiceTemplatesPath, new ToscaExtensionYamlUtil(),
1386         expectedOutserviceTemplates);
1387   }
1388
1389
1390   private void addGetAttInUnifiedCompositionData(EntityConsolidationData entityConsolidationData,
1391                                                  String propertyName, String attributeName,
1392                                                  String nodeTemplateId) {
1393     GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1394     getAttrFuncData.setAttributeName(attributeName);
1395     getAttrFuncData.setFieldName(propertyName);
1396     entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
1397   }
1398
1399   private void addOutputGetAttInUnifiedCompositionData(
1400       EntityConsolidationData entityConsolidationData,
1401       String outParamName, String attributeName) {
1402     GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1403     getAttrFuncData.setAttributeName(attributeName);
1404     getAttrFuncData.setFieldName(outParamName);
1405     entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
1406   }
1407
1408   private ConsolidationData createConsolidationData(List<String> computeNodeIds,
1409                                                     List<Pair<String, String>> portTypeToIdList) {
1410
1411     ConsolidationData consolidationData = new ConsolidationData();
1412     String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.FSB2";
1413
1414     TestUtils
1415         .initComputeNodeTypeInConsolidationData(mainSTName, computeNodeTypeName, consolidationData);
1416     TestUtils.initPortConsolidationData(mainSTName, consolidationData);
1417
1418     for (String computeId : computeNodeIds) {
1419       ComputeTemplateConsolidationData computeTemplateConsolidationData =
1420           new ComputeTemplateConsolidationData();
1421       TestUtils.updatePortsInComputeTemplateConsolidationData(portTypeToIdList,
1422           computeTemplateConsolidationData);
1423       consolidationData.getComputeConsolidationData().getFileComputeConsolidationData(mainSTName)
1424           .getTypeComputeConsolidationData(computeNodeTypeName)
1425           .setComputeTemplateConsolidationData(computeId,
1426               computeTemplateConsolidationData);
1427     }
1428
1429     for (Pair<String, String> portTypeToId : portTypeToIdList) {
1430       consolidationData.getPortConsolidationData().getFilePortConsolidationData(mainSTName)
1431           .setPortTemplateConsolidationData(portTypeToId.getRight(),
1432               new PortTemplateConsolidationData());
1433     }
1434
1435     return consolidationData;
1436   }
1437
1438   private UnifiedCompositionData createCompositionData(String computeNodeTemplateId,
1439                                                        List<Pair<String, String>> portTypeToIdList) {
1440
1441     UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1442     NodeTemplate computeNodeTemplate =
1443         DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), computeNodeTemplateId);
1444     Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1445         TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1446     List<RequirementAssignmentData> requirementAssignmentList =
1447         (requirementAssignmentDataList.isPresent()) ? requirementAssignmentDataList.get() : null;
1448     Map<String, List<RequirementAssignmentData>> volume = null;
1449     if (requirementAssignmentList != null) {
1450       volume = getVolume(requirementAssignmentList);
1451     }
1452     unifiedCompositionData.setComputeTemplateConsolidationData(
1453         TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList,
1454             volume));
1455     if (portTypeToIdList != null) {
1456       for (Pair<String, String> port : portTypeToIdList) {
1457         NodeTemplate portNodeTemplate =
1458             DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), port.getRight());
1459
1460         Map<String, List<RequirementAssignmentData>> nodeConnectedOut =
1461             TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1462         PortTemplateConsolidationData portTemplateConsolidationData =
1463             TestUtils.createPortTemplateConsolidationData(port.getRight());
1464         portTemplateConsolidationData.setNodesConnectedOut(nodeConnectedOut);
1465         unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
1466       }
1467     }
1468     return unifiedCompositionData;
1469   }
1470
1471   private List<UnifiedCompositionData> createAbstractSubstituteCompositionDataComputeAndPort() {
1472     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
1473     UnifiedCompositionData data1 = createComputeUnifiedCompositionData("FSB1_template");
1474     UnifiedCompositionData data2 = createComputeUnifiedCompositionData("FSB2_template");
1475
1476     List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1477     ImmutablePair<String, String> portTypePair1 = new ImmutablePair<>("FSB1_Internal",
1478         "FSB1_Internal1");
1479     ImmutablePair<String, String> portTypePair2 = new ImmutablePair<>("FSB2_Internal",
1480         "FSB2_Internal1");
1481     portTypeToIdList.add(portTypePair1);
1482     portTypeToIdList.add(portTypePair2);
1483     addPortDataToCompositionData(portTypeToIdList, data1);
1484     portTypeToIdList.remove(portTypePair1);
1485     portTypeToIdList.remove(portTypePair2);
1486     portTypeToIdList.add(new ImmutablePair<>("FSB1_Internal", "FSB1_Internal2"));
1487     portTypeToIdList.add(new ImmutablePair<>("FSB2_Internal", "FSB2_Internal2"));
1488     addPortDataToCompositionData(portTypeToIdList, data2);
1489
1490     unifiedCompositionDataList.add(data1);
1491     unifiedCompositionDataList.add(data2);
1492     return unifiedCompositionDataList;
1493   }
1494
1495
1496   private UnifiedCompositionData createComputeUnifiedCompositionData(String computeNodeTemplateId) {
1497     NodeTemplate computeNodeTemplate =
1498         DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), computeNodeTemplateId);
1499     Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1500         TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1501     Map<String, List<RequirementAssignmentData>> volume = null;
1502     if (requirementAssignmentDataList.isPresent()) {
1503       volume = getVolume(requirementAssignmentDataList.get());
1504     }
1505     UnifiedCompositionData data = new UnifiedCompositionData();
1506     Map<String, List<RequirementAssignmentData>> computeNodeConnectedOut =
1507         TestUtils.getNodeConnectedOutList(computeNodeTemplate, "dependency");
1508     Map<String, List<RequirementAssignmentData>> computeNodeConnectedIn =
1509         TestUtils
1510             .getNodeConnectedInList(computeNodeTemplateId, inputServiceTemplates.get(mainSTName),
1511                 "dependency");
1512     ComputeTemplateConsolidationData computeTemplateConsolidationData = TestUtils
1513         .createComputeTemplateConsolidationData(computeNodeTemplateId, null, volume);
1514     List<String> computeNodeGroups =
1515         TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName),
1516             computeNodeTemplateId);
1517     if (!computeNodeGroups.isEmpty()) {
1518       computeTemplateConsolidationData.setGroupIds(computeNodeGroups);
1519     }
1520     computeTemplateConsolidationData.setNodesConnectedOut(computeNodeConnectedOut);
1521     computeTemplateConsolidationData.setNodesConnectedIn(computeNodeConnectedIn);
1522     data.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
1523     return data;
1524   }
1525
1526   private void addPortDataToCompositionData(List<Pair<String, String>> portTypeToIdList,
1527                                             UnifiedCompositionData data) {
1528     ComputeTemplateConsolidationData computeTemplateConsolidationData = data
1529         .getComputeTemplateConsolidationData();
1530
1531     for (Pair<String, String> port : portTypeToIdList) {
1532       NodeTemplate portNodeTemplate =
1533           DataModelUtil.getNodeTemplate(inputServiceTemplates.get(mainSTName), port.getRight());
1534
1535       Optional<List<RequirementAssignmentData>> bindingReqList =
1536           TestUtils.getRequirementAssignmentDataList(portNodeTemplate, "binding");
1537
1538       if (bindingReqList.isPresent()) {
1539         for (RequirementAssignmentData reqData : bindingReqList.get()) {
1540           String nodeId = reqData.getRequirementAssignment().getNode();
1541           if (nodeId.equals(computeTemplateConsolidationData.getNodeTemplateId())) {
1542             computeTemplateConsolidationData.addPort(port.getLeft(), port.getRight());
1543           }
1544         }
1545       }
1546       Map<String, List<RequirementAssignmentData>> portNodeConnectedOut =
1547           TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1548       PortTemplateConsolidationData portTemplateConsolidationData = TestUtils
1549           .createPortTemplateConsolidationData(port.getRight());
1550       portTemplateConsolidationData.setNodesConnectedOut(portNodeConnectedOut);
1551
1552       //Add node connected in info to test data
1553       Map<String, List<RequirementAssignmentData>> portNodeConnectedIn =
1554           TestUtils.getNodeConnectedInList(port.getRight(), inputServiceTemplates.get(mainSTName),
1555               "port");
1556       portTemplateConsolidationData.setNodesConnectedIn(portNodeConnectedIn);
1557
1558       //Add group infromation for ports
1559       List<String> portGroups =
1560           TestUtils.getGroupsForNode(inputServiceTemplates.get(mainSTName), port.getRight());
1561       portTemplateConsolidationData.setGroupIds(portGroups);
1562       data.addPortTemplateConsolidationData(portTemplateConsolidationData);
1563
1564     }
1565     addGetAttrForCompute(data);
1566     addGetAttrForPort(data);
1567   }
1568
1569   private Map<String, List<RequirementAssignmentData>> getVolume(
1570       List<RequirementAssignmentData> requirementAssignmentList) {
1571     Map<String, List<RequirementAssignmentData>> volume = new HashMap<>();
1572     for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentList) {
1573       String volumeNodeTemplateId = requirementAssignmentData.getRequirementAssignment().getNode();
1574       volume.computeIfAbsent(volumeNodeTemplateId, k -> new ArrayList<>());
1575       volume.get(volumeNodeTemplateId).add(requirementAssignmentData);
1576     }
1577     return volume;
1578   }
1579
1580   private void addGetAttrForPort(UnifiedCompositionData unifiedCompositionData) {
1581     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1582         .getPortTemplateConsolidationDataList()) {
1583       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) {
1584         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "network_name",
1585             "network_id", "jsa_net1");
1586         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size",
1587             "device_owner", "cmaui_volume1");
1588       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) {
1589         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "tenant_id",
1590             "network_id", "jsa_net1");
1591         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "qos_policy",
1592             "network_id", "jsa_net1");
1593         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "volume_type",
1594             "tenant_id", "cmaui_volume1");
1595       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_OAM")) {
1596         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size",
1597             "status", "cmaui_volume1");
1598       }
1599     }
1600   }
1601
1602   private void addGetAttrForPort2(UnifiedCompositionData unifiedCompositionData) {
1603     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1604         .getPortTemplateConsolidationDataList()) {
1605       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal1")) {
1606         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "volume_type",
1607             "tenant_id", "cmaui_volume3");
1608       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal2")) {
1609         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size",
1610             "device_owner", "cmaui_volume3");
1611         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "size",
1612             "status", "cmaui_volume1");
1613       }
1614     }
1615   }
1616
1617   private void addGetAttrForPortInnerUC(UnifiedCompositionData unifiedCompositionData) {
1618     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1619         .getPortTemplateConsolidationDataList()) {
1620       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) {
1621         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "availability_zone",
1622             "myAttr", "FSB1_template");
1623         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "metadata",
1624             "myAttr", "FSB1_template");
1625         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "name",
1626             "myAttr", "FSB1_template");
1627         addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "availability_zone",
1628             "tenant_id", "FSB1_template");
1629       }
1630     }
1631   }
1632
1633   private void addGetAttrForCompute(UnifiedCompositionData unifiedCompositionData) {
1634     addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1635         "dhcp_agent_ids", "addresses", "jsa_net1");
1636     addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1637         "volume_type", "addresses", "cmaui_volume1");
1638     addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1639         "size", "accessIPv6", "cmaui_volume2");
1640   }
1641
1642   private void addGetAttrForCompute2(UnifiedCompositionData unifiedCompositionData) {
1643     addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1644         "volume_type", "addresses", "cmaui_volume3");
1645     addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1646         "size", "user_data_format", "cmaui_volume3");
1647   }
1648
1649   private void addOutputGetAttrInForComputeNoConsolidation(
1650       UnifiedCompositionData unifiedCompositionData) {
1651     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1652         .getComputeTemplateConsolidationData(), "simpleOutput1", "accessIPv4");
1653     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1654         .getComputeTemplateConsolidationData(), "simpleOutput2", "addresses");
1655     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1656         .getComputeTemplateConsolidationData(), "complexOutput1", "addresses");
1657     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1658         .getComputeTemplateConsolidationData(), "complexOutput3", "accessIPv6");
1659
1660   }
1661
1662   private void addOutputGetAttrInForCompute1WithConsolidation(
1663       UnifiedCompositionData unifiedCompositionData) {
1664     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1665         .getComputeTemplateConsolidationData(), "simpleOutput1", "accessIPv4");
1666     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1667         .getComputeTemplateConsolidationData(), "complexOutput1", "addresses");
1668
1669   }
1670
1671   private void addOutputGetAttrInForCompute2WithConsolidation(
1672       UnifiedCompositionData unifiedCompositionData) {
1673     addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1674         .getComputeTemplateConsolidationData(), "simpleOutput2", "addresses");
1675   }
1676
1677   private void addOutputGetAttrInForPortNoConsolidation(
1678       UnifiedCompositionData unifiedCompositionData) {
1679     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1680         .getPortTemplateConsolidationDataList()) {
1681       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) {
1682         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2",
1683             "device_owner");
1684         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput3",
1685             "device_owner");
1686       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) {
1687         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput1",
1688             "tenant_id");
1689       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_OAM")) {
1690         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2",
1691             "user_data_format");
1692       }
1693     }
1694   }
1695
1696   private void addOutputGetAttrInForPortWithConsolidation1(
1697       UnifiedCompositionData unifiedCompositionData) {
1698     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1699         .getPortTemplateConsolidationDataList()) {
1700       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal2")) {
1701         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput1",
1702             "tenant_id");
1703       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal1")) {
1704         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput3",
1705             "admin_state_up");
1706       }
1707     }
1708   }
1709
1710   private void addOutputGetAttrInForPortWithConsolidation2(
1711       UnifiedCompositionData unifiedCompositionData) {
1712     for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1713         .getPortTemplateConsolidationDataList()) {
1714       if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB2_Internal1")) {
1715         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2",
1716             "user_data_format");
1717       } else if (portTemplateConsolidationData.getNodeTemplateId().equals("FSB1_Internal2")) {
1718         addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, "complexOutput2",
1719             "device_owner");
1720       }
1721     }
1722   }
1723
1724   private NodeTemplate getMockNode(String path) throws IOException {
1725     URL resource = this.getClass().getResource(path);
1726     YamlUtil yamlUtil = new YamlUtil();
1727     return yamlUtil.yamlToObject(resource.openStream(), NodeTemplate.class);
1728   }
1729
1730 }