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