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