2 * Copyright © 2016-2018 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.openecomp.sdc.translator.services.heattotosca;
19 import static org.junit.Assert.assertEquals;
20 import static org.mockito.Matchers.anyObject;
21 import static org.mockito.Matchers.anyString;
23 import org.apache.commons.lang3.tuple.ImmutablePair;
24 import org.apache.commons.lang3.tuple.Pair;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.InjectMocks;
28 import org.mockito.Mockito;
29 import org.mockito.MockitoAnnotations;
30 import org.mockito.Spy;
31 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
32 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
33 import org.openecomp.sdc.tosca.services.DataModelUtil;
34 import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil;
35 import org.onap.sdc.tosca.services.YamlUtil;
36 import org.openecomp.sdc.translator.TestUtils;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity;
40 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData;
41 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
42 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
43 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
44 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
45 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
46 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
49 import org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition.UnifiedCompositionSingleSubstitution;
51 import java.io.IOException;
53 import java.util.ArrayList;
54 import java.util.Arrays;
55 import java.util.Collections;
56 import java.util.HashMap;
57 import java.util.LinkedList;
58 import java.util.List;
60 import java.util.Objects;
61 import java.util.Optional;
63 public class UnifiedCompositionServiceTest {
64 private static final String BASE_DIRECTORY = "/mock/services/heattotosca/unifiedComposition/";
67 UnifiedCompositionService unifiedCompositionService;
69 TranslationContext context;
71 private static final String IN_PREFIX = "/in";
72 private static final String OUT_PREFIX = "/out";
73 private static final String FSB1_template = "FSB1_template";
74 private static final String FSB2_template = "FSB2_template";
75 private static final String FSB3_template = "FSB3_template";
76 private static final String FSB1_INTERNAL = "FSB1_Internal";
77 private static final String FSB2_INTERNAL = "FSB2_Internal";
78 private static final String FSB1_INTERNAL_1 = "FSB1_Internal_1";
79 private static final String FSB1_INTERNAL_2 = "FSB1_Internal_2";
80 private static final String FSB2_INTERNAL_1 = "FSB2_Internal_1";
81 private static final String FSB2_INTERNAL_2 = "FSB2_Internal_2";
82 private static final String PORT = "port";
83 private static final String PORT_1 = "port_1";
84 private static final String PORT_2 = "port_2";
85 private static final String FSB1_OAM = "FSB1_OAM";
86 private static final String ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1 = "org.openecomp.resource.abstract.nodes.FSB1";
87 private static final String ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB = "org.openecomp.resource.vfc.nodes.heat.FSB";
88 private static final String DEVICE_OWNER = "device_owner";
89 private static final String COMPLEX_OUTPUT1 = "complexOutput1";
90 private static final String COMPLEX_OUTPUT2 = "complexOutput2";
91 private static final String COMPLEX_OUTPUT3 = "complexOutput3";
92 private static final String USER_DATA_FORMAT = "user_data_format";
93 private static final String TENANT_ID = "tenant_id";
94 private static final String SIMPLE_OUTPUT1 = "simpleOutput1";
95 private static final String SIMPLE_OUTPUT2 = "simpleOutput2";
96 private static final String ADDRESSES = "addresses";
97 private static final String CMAUI_VOLUME1 = "cmaui_volume1";
98 private static final String CMAUI_VOLUME2 = "cmaui_volume2";
99 private static final String CMAUI_VOLUME3 = "cmaui_volume3";
100 private static final String ACCESS_IPv4 = "accessIPv4";
101 private static final String ACCESS_IPv6 = "accessIPv6";
102 private static final String FSB1 = "FSB1";
103 private static final String MYATTR = "myAttr";
104 private static final String VOLUME_TYPE = "volume_type";
105 private static final String SIZE = "size";
106 private static final String NETWORK_ID = "network_id";
107 private static final String JSA_NET1 = "jsa_net1";
108 private static final String STATUS = "status";
109 private static final String AVAILABILITY_ZONE = "availability_zone";
110 private static final String DEPENDENCY = "dependency";
112 Map<String, ServiceTemplate> inputServiceTemplates;
113 Map<String, ServiceTemplate> expectedOutserviceTemplates;
115 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
116 private static final String GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML =
117 "GlobalSubstitutionTypesServiceTemplate.yaml";
120 public void setUp() {
121 MockitoAnnotations.initMocks(this);
126 public void createUnifiedComposition() throws Exception {
131 public void createSubstitutionStNoConsolidationData() throws Exception {
132 String path = BASE_DIRECTORY + "creSubstitutionServiceTemplate/NoOutParamDuplicatePortType";
133 loadInputAndOutputData(path);
134 ServiceTemplate expectedServiceTemplate =
135 TestUtils.loadServiceTemplate(BASE_DIRECTORY +
136 "creSubstitutionServiceTemplate/NoOutParamDuplicatePortType" + OUT_PREFIX);
138 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
139 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
140 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
141 unifiedCompositionDataList,
142 context, "org.openecomp.resource.vfc.nodes.heat.FSB1", null);
143 assertEquals(false, substitutionServiceTemplate.isPresent());
147 public void createSubstitutionStNoOutputParamAndDuplicatePortType() throws Exception {
148 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
149 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
150 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
151 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
152 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
154 loadInputAndOutputData(BASE_DIRECTORY + "creSubstitutionServiceTemplate/NoOutParamDuplicatePortType");
155 UnifiedCompositionData unifiedCompositionData =
156 createCompositionData(FSB1_template, portTypeToIdList);
157 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
158 unifiedCompositionDataList.add(unifiedCompositionData);
160 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
161 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
162 unifiedCompositionDataList,
163 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
164 assertEquals(true, substitutionServiceTemplate.isPresent());
165 substitutionServiceTemplate
167 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
168 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
172 public void createSubstitutionStWithOutputParamNoConsolidation() throws Exception {
173 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
174 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
175 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
176 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
178 loadInputAndOutputData(BASE_DIRECTORY + "creSubstitutionServiceTemplate/WithOutputParameters/noConsolidation");
179 UnifiedCompositionData unifiedCompositionData =
180 createCompositionData(FSB1_template, portTypeToIdList);
181 addGetAttrForCompute(unifiedCompositionData);
182 addGetAttrForPort(unifiedCompositionData);
183 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
184 unifiedCompositionDataList.add(unifiedCompositionData);
186 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
187 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
188 unifiedCompositionDataList,
189 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
190 assertEquals(true, substitutionServiceTemplate.isPresent());
191 substitutionServiceTemplate
193 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
194 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
198 public void createSubstitutionStWithOutputParamWithConsolidation() throws Exception {
199 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
200 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
201 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
202 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
204 loadInputAndOutputData(BASE_DIRECTORY + "creSubstitutionServiceTemplate/WithOutputParameters/consolidation");
205 UnifiedCompositionData unifiedCompositionData1 =
206 createCompositionData(FSB1_template, portTypeToIdList1);
207 addGetAttrForCompute(unifiedCompositionData1);
208 addGetAttrForPort(unifiedCompositionData1);
209 unifiedCompositionDataList.add(unifiedCompositionData1);
211 List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
212 portTypeToIdList2.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
213 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
215 UnifiedCompositionData unifiedCompositionData2 =
216 createCompositionData(FSB2_template, portTypeToIdList2);
217 addGetAttrForCompute2(unifiedCompositionData2);
218 addGetAttrForPort2(unifiedCompositionData2);
219 unifiedCompositionDataList.add(unifiedCompositionData2);
221 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
222 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
223 unifiedCompositionDataList,
224 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
225 assertEquals(true, substitutionServiceTemplate.isPresent());
226 substitutionServiceTemplate
228 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
229 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
233 public void createSubstitutionStNoPorts() throws Exception {
234 loadInputAndOutputData(BASE_DIRECTORY + "creSubstitutionServiceTemplate/NoPorts");
236 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
237 unifiedCompositionData.setComputeTemplateConsolidationData(
238 TestUtils.createComputeTemplateConsolidationData(FSB1_template, null, null));
239 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
240 unifiedCompositionDataList.add(unifiedCompositionData);
242 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
243 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
244 unifiedCompositionDataList,
245 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
246 assertEquals(true, substitutionServiceTemplate.isPresent());
247 substitutionServiceTemplate
249 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
250 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
255 public void createSubstitutionStWithIndex() throws Exception {
256 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
257 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
258 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
259 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
261 loadInputAndOutputData(BASE_DIRECTORY + "creSubstitutionServiceTemplate/WithIndex");
262 UnifiedCompositionData unifiedCompositionData =
263 createCompositionData(FSB1_template, portTypeToIdList);
264 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
265 unifiedCompositionDataList.add(unifiedCompositionData);
267 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
268 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
269 unifiedCompositionDataList,
270 context,ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, 2);
271 assertEquals(true, substitutionServiceTemplate.isPresent());
272 substitutionServiceTemplate
274 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
275 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
280 public void createAbstractSubstituteOneComputeMultiplePortsDifferentTypesTest() throws Exception {
281 loadInputAndOutputData(BASE_DIRECTORY + "createAbstractSubstitute/oneComputeMultiplePortsDiffType");
283 UnifiedCompositionData data = createComputeUnifiedCompositionData(FSB1_template);
284 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
285 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
286 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
287 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
288 addPortDataToCompositionData(portTypeToIdList, data);
290 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
291 unifiedCompositionDataList.add(data);
292 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
293 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
294 unifiedCompositionDataList,
295 context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
296 assertEquals(true, substitutionServiceTemplate.isPresent());
297 if (substitutionServiceTemplate.isPresent()) {
298 String substitutionNodeTypeId =
299 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
300 unifiedCompositionDataList.get(0), null, context);
301 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
302 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
303 unifiedCompositionDataList, substitutionNodeTypeId,
305 validateAbstractSubstitute();
311 public void createAbstractSubstituteOneComputeMultiplePortsSameTypesTest() throws Exception {
312 loadInputAndOutputData(BASE_DIRECTORY + "createAbstractSubstitute/oneComputeMultiplePortsSameType");
314 UnifiedCompositionData data = createComputeUnifiedCompositionData(FSB1_template);
315 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
316 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
317 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
318 addPortDataToCompositionData(portTypeToIdList, data);
320 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
321 unifiedCompositionDataList.add(data);
322 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
323 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
324 unifiedCompositionDataList
325 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
327 assertEquals(true, substitutionServiceTemplate.isPresent());
328 if (substitutionServiceTemplate.isPresent()) {
329 String substitutionNodeTypeId =
330 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
331 unifiedCompositionDataList.get(0), null, context);
332 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
333 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
334 unifiedCompositionDataList, substitutionNodeTypeId,
336 validateAbstractSubstitute();
342 public void createAbstractSubstituteTwoComputesMultiplePorts() throws Exception {
343 loadInputAndOutputData(BASE_DIRECTORY + "createAbstractSubstitute/twoComputesMultiplePorts");
344 List<UnifiedCompositionData> unifiedCompositionDataList =
345 createAbstractSubstituteCompositionDataComputeAndPort();
346 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
347 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
348 unifiedCompositionDataList
349 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
350 assertEquals(true, substitutionServiceTemplate.isPresent());
351 if (substitutionServiceTemplate.isPresent()) {
352 String substitutionNodeTypeId =
353 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
354 unifiedCompositionDataList.get(0), null, context);
355 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
356 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
357 unifiedCompositionDataList, substitutionNodeTypeId,
359 validateAbstractSubstitute();
365 public void updNodesConnectedOutWithConsolidationTest() throws Exception {
366 loadInputAndOutputData(BASE_DIRECTORY + "updNodesConnectedOut/consolidation");
367 List<UnifiedCompositionData> unifiedCompositionDataList =
368 createAbstractSubstituteCompositionDataComputeAndPort();
369 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
370 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
371 unifiedCompositionDataList
372 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
373 assertEquals(true, substitutionServiceTemplate.isPresent());
374 if (substitutionServiceTemplate.isPresent()) {
375 String substitutionNodeTypeId =
376 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
377 unifiedCompositionDataList.get(0), null, context);
378 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
379 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
380 unifiedCompositionDataList, substitutionNodeTypeId,
383 unifiedCompositionService
384 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
385 unifiedCompositionDataList, context);
386 validateAbstractSubstitute();
390 private void validateAbstractSubstitute() {
391 YamlUtil yamlUtil = new YamlUtil();
392 assertEquals(yamlUtil.objectToYaml(expectedOutserviceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)), yamlUtil
393 .objectToYaml(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)));
398 public void updNodesConnectedOutNoConsolidationTest() throws Exception {
399 loadInputAndOutputData(BASE_DIRECTORY + "updNodesConnectedOut/noConsolidation");
401 UnifiedCompositionData data = createComputeUnifiedCompositionData(FSB1_template);
402 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
403 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
404 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
405 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
406 addPortDataToCompositionData(portTypeToIdList, data);
408 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
409 unifiedCompositionDataList.add(data);
411 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
412 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
413 unifiedCompositionDataList
414 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
415 assertEquals(true, substitutionServiceTemplate.isPresent());
416 if (substitutionServiceTemplate.isPresent()) {
417 String substitutionNodeTypeId =
418 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
419 unifiedCompositionDataList.get(0), null, context);
420 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
421 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
422 unifiedCompositionDataList, substitutionNodeTypeId,
425 unifiedCompositionService
426 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
427 unifiedCompositionDataList, context);
428 validateAbstractSubstitute();
434 public void updNodesConnectedInNoConsolidationTest() throws Exception {
435 loadInputAndOutputData(BASE_DIRECTORY + "updNodesConnectedIn/noConsolidation");
437 UnifiedCompositionData data = createComputeUnifiedCompositionData("QRouter");
438 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
439 portTypeToIdList.add(new ImmutablePair<>("cdr_network_port", "cdr_network_port"));
441 .add(new ImmutablePair<>("oam_private_net_network_port", "oam_private_net_network_port"));
442 addPortDataToCompositionData(portTypeToIdList, data);
444 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
445 unifiedCompositionDataList.add(data);
447 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
448 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
449 unifiedCompositionDataList
450 , context, "org.openecomp.resource.abstract.nodes.QRouter", null);
452 String substitutionNodeTypeId =
453 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
454 unifiedCompositionDataList.get(0), null, context);
455 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
456 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
457 unifiedCompositionDataList, substitutionNodeTypeId,
460 unifiedCompositionService
461 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
462 unifiedCompositionDataList, context);
463 validateAbstractSubstitute();
468 public void updNodesConnectedInWithConsolidationTest() throws Exception {
469 loadInputAndOutputData(BASE_DIRECTORY + "updNodesConnectedIn/consolidation");
471 List<UnifiedCompositionData> unifiedCompositionDataList =
472 createAbstractSubstituteCompositionDataComputeAndPort();
474 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
475 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
476 unifiedCompositionDataList
477 , context, "org.openecomp.resource.abstract.nodes.FSB", null);
479 String substitutionNodeTypeId =
480 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
481 unifiedCompositionDataList.get(0), null, context);
482 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
483 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
484 unifiedCompositionDataList, substitutionNodeTypeId,
487 unifiedCompositionService
488 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
489 unifiedCompositionDataList, context);
490 validateAbstractSubstitute();
495 public void updVolumesNoConsolidationTest() throws Exception {
496 loadInputAndOutputData(BASE_DIRECTORY + "updVolumes/noConsolidation");
498 UnifiedCompositionData data = createComputeUnifiedCompositionData(FSB1_template);
499 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
500 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
501 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
502 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
503 addPortDataToCompositionData(portTypeToIdList, data);
505 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
506 unifiedCompositionDataList.add(data);
508 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
509 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
510 unifiedCompositionDataList
511 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
513 String substitutionNodeTypeId =
514 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
515 unifiedCompositionDataList.get(0), null, context);
516 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
517 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
518 unifiedCompositionDataList, substitutionNodeTypeId,
521 unifiedCompositionService
522 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
523 unifiedCompositionDataList, context);
524 validateAbstractSubstitute();
529 public void updVolumesWithConsolidationTest() throws Exception {
530 loadInputAndOutputData(BASE_DIRECTORY + "updVolumes/consolidation");
531 List<UnifiedCompositionData> unifiedCompositionDataList =
532 createAbstractSubstituteCompositionDataComputeAndPort();
533 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
534 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
535 unifiedCompositionDataList
536 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
538 String substitutionNodeTypeId =
539 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
540 unifiedCompositionDataList.get(0), null, context);
541 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
542 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
543 unifiedCompositionDataList, substitutionNodeTypeId,
546 unifiedCompositionService
547 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
548 unifiedCompositionDataList, context);
549 validateAbstractSubstitute();
554 public void updGroupsNoConsolidationTest() throws Exception {
555 loadInputAndOutputData(BASE_DIRECTORY + "updGroupsConnectivity/noConsolidation");
556 UnifiedCompositionData data = createComputeUnifiedCompositionData("server_smp1");
557 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
558 portTypeToIdList.add(new ImmutablePair<>(PORT, PORT_1));
559 portTypeToIdList.add(new ImmutablePair<>(PORT, PORT_2));
560 addPortDataToCompositionData(portTypeToIdList, data);
563 List<String> computeGroupIdList =
564 TestUtils.getGroupsForNode(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), "server_smp1");
565 data.getComputeTemplateConsolidationData().setGroupIds(computeGroupIdList);
567 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
568 unifiedCompositionDataList.add(data);
570 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
571 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
572 unifiedCompositionDataList
573 , context, "org.openecomp.resource.abstract.nodes.smp", null);
575 String substitutionNodeTypeId =
576 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
577 unifiedCompositionDataList.get(0), null, context);
578 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
579 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
580 unifiedCompositionDataList, substitutionNodeTypeId,
583 unifiedCompositionService
584 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
585 unifiedCompositionDataList, context);
586 validateAbstractSubstitute();
591 public void updGroupsWithConsolidationTest() throws Exception {
592 loadInputAndOutputData(BASE_DIRECTORY + "updGroupsConnectivity/consolidation");
594 List<UnifiedCompositionData> unifiedCompositionDataList =
595 createAbstractSubstituteCompositionDataComputeAndPort();
597 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
598 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
599 unifiedCompositionDataList
600 , context, ORG_OPENECOMP_RESOURCE_VFC_NODES_HEAT_FSB, null);
602 String substitutionNodeTypeId =
603 unifiedCompositionService.getSubstitutionNodeTypeId(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
604 unifiedCompositionDataList.get(0), null, context);
605 String nodeTemplateId = unifiedCompositionService.createAbstractSubstituteNodeTemplate(
606 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), substitutionServiceTemplate.get(),
607 unifiedCompositionDataList, substitutionNodeTypeId,
610 unifiedCompositionService
611 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
612 unifiedCompositionDataList, context);
613 validateAbstractSubstitute();
617 public void updOutParamGetAttrInNoConsolidationTest() throws Exception {
618 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
619 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
620 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
621 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
623 loadInputAndOutputData(BASE_DIRECTORY + "updOutputGetAttrIn/noConsolidation");
624 UnifiedCompositionData unifiedCompositionData =
625 createCompositionData(FSB1_template, portTypeToIdList);
626 addOutputGetAttrInForComputeNoConsolidation(unifiedCompositionData);
627 addOutputGetAttrInForPortNoConsolidation(unifiedCompositionData);
629 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
630 unifiedCompositionDataList.add(unifiedCompositionData);
631 Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
632 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedCompositionDataList, context);
633 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
635 unifiedCompositionService
636 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
637 unifiedCompositionDataList, context);
639 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
643 public void updOutParamGetAttrInWithConsolidationTest() throws Exception {
644 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
645 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
646 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
647 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
649 loadInputAndOutputData(BASE_DIRECTORY + "updOutputGetAttrIn/consolidation");
650 UnifiedCompositionData unifiedCompositionData1 =
651 createCompositionData(FSB1_template, portTypeToIdList1);
652 addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
653 addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
654 unifiedCompositionDataList.add(unifiedCompositionData1);
656 List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
657 portTypeToIdList2.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
658 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
660 UnifiedCompositionData unifiedCompositionData2 =
661 createCompositionData(FSB2_template, portTypeToIdList2);
662 unifiedCompositionDataList.add(unifiedCompositionData2);
663 addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2);
664 addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2);
666 Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
667 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedCompositionDataList, context);
668 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
671 unifiedCompositionService
672 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
673 unifiedCompositionDataList, context);
675 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
679 public void updNodeGetAttrInNoConsolidationTest() throws Exception {
680 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
681 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
682 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
683 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
685 loadInputAndOutputData(BASE_DIRECTORY + "updNodesGetAttrIn/noConsolidation");
686 UnifiedCompositionData unifiedCompositionData =
687 createCompositionData(FSB1_template, portTypeToIdList);
688 addGetAttrForCompute(unifiedCompositionData);
689 addGetAttrForPort(unifiedCompositionData);
690 addGetAttrForPortInnerUC(unifiedCompositionData);
692 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
693 unifiedCompositionDataList.add(unifiedCompositionData);
694 Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
695 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedCompositionDataList, context);
696 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
698 unifiedCompositionService
699 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
700 unifiedCompositionDataList, context);
702 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
706 public void updNodeGetAttrInWithConsolidationTest() throws Exception {
707 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
708 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
709 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
710 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
712 loadInputAndOutputData(BASE_DIRECTORY + "updNodesGetAttrIn/consolidation");
713 UnifiedCompositionData unifiedCompositionData1 =
714 createCompositionData(FSB1_template, portTypeToIdList1);
715 addGetAttrForCompute(unifiedCompositionData1);
716 addGetAttrForPort(unifiedCompositionData1);
717 unifiedCompositionDataList.add(unifiedCompositionData1);
719 List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
720 portTypeToIdList2.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
721 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
723 UnifiedCompositionData unifiedCompositionData2 =
724 createCompositionData(FSB2_template, portTypeToIdList2);
725 addGetAttrForCompute2(unifiedCompositionData2);
726 addGetAttrForPort2(unifiedCompositionData2);
727 unifiedCompositionDataList.add(unifiedCompositionData2);
730 Mockito.doNothing().when(unifiedCompositionService).updNodesConnectedOutConnectivity
731 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedCompositionDataList, context);
732 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
735 unifiedCompositionService
736 .updateCompositionConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
737 unifiedCompositionDataList, context);
739 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
744 public void updNodesGetAttrFromInnerNodesTest() throws Exception {
745 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
746 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
747 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
748 portTypeToIdList.add(new ImmutablePair<>(FSB1_OAM, FSB1_OAM));
750 loadInputAndOutputData(BASE_DIRECTORY +
751 "creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/noConsolidation");
752 UnifiedCompositionData unifiedCompositionData =
753 createCompositionData(FSB1_template, portTypeToIdList);
754 addGetAttrForCompute(unifiedCompositionData);
755 addGetAttrForPort(unifiedCompositionData);
756 addGetAttrForPortInnerUC(unifiedCompositionData);
757 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
758 unifiedCompositionDataList.add(unifiedCompositionData);
760 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
763 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
764 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
765 unifiedCompositionDataList,
766 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
767 assertEquals(true, substitutionServiceTemplate.isPresent());
768 substitutionServiceTemplate
770 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
771 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
776 public void updNodesGetAttrFromConsolidationNodesTest() throws Exception {
777 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
778 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
779 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
780 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
782 loadInputAndOutputData(BASE_DIRECTORY +
783 "creSubstitutionServiceTemplate/updNodesGetAttrInFromInnerNodes/consolidation");
784 UnifiedCompositionData unifiedCompositionData1 =
785 createCompositionData(FSB1_template, portTypeToIdList1);
786 addGetAttrForCompute(unifiedCompositionData1);
787 addGetAttrForPort(unifiedCompositionData1);
788 unifiedCompositionDataList.add(unifiedCompositionData1);
790 List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
791 portTypeToIdList2.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
792 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
794 UnifiedCompositionData unifiedCompositionData2 =
795 createCompositionData(FSB2_template, portTypeToIdList2);
796 addGetAttrForCompute2(unifiedCompositionData2);
797 addGetAttrForPort2(unifiedCompositionData2);
798 unifiedCompositionDataList.add(unifiedCompositionData2);
800 Optional<ServiceTemplate> substitutionServiceTemplate = unifiedCompositionService
801 .createUnifiedSubstitutionServiceTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
802 unifiedCompositionDataList,
803 context, ORG_OPENECOMP_RESOURCE_ABSTRACT_NODES_FSB1, null);
804 assertEquals(true, substitutionServiceTemplate.isPresent());
805 substitutionServiceTemplate
807 subServiceTemplate -> checkSTResults(expectedOutserviceTemplates,
808 subServiceTemplate, context.getGlobalSubstitutionServiceTemplate(), null));
812 public void cleanMainServiceTemplateTestNoConsolidation() throws IOException {
813 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
814 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
815 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
816 portTypeToIdList.add(new ImmutablePair<>("FSB_OAM", FSB1_OAM));
818 loadInputAndOutputData(BASE_DIRECTORY + "cleanMainSt/noConsolidation");
819 UnifiedCompositionData unifiedCompositionData =
820 createCompositionData(FSB1_template, portTypeToIdList);
821 addGetAttrForCompute(unifiedCompositionData);
822 addGetAttrForPort(unifiedCompositionData);
824 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
825 unifiedCompositionDataList.add(unifiedCompositionData);
827 NodeTemplate abstractNodeTemplate = getMockNode(
828 BASE_DIRECTORY + "cleanMainSt/mockAbstractNodeTemplate.yaml");
829 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML).getTopology_template().getNode_templates()
830 .put(FSB1, abstractNodeTemplate);
832 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
835 unifiedCompositionService.
836 cleanUnifiedCompositionEntities(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
837 unifiedCompositionDataList, context);
839 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
843 public void cleanMainServiceTemplateTestWithConsolidation() throws IOException {
844 loadInputAndOutputData(BASE_DIRECTORY + "cleanMainSt/consolidation");
846 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
847 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
848 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
849 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
851 UnifiedCompositionData unifiedCompositionData1 =
852 createCompositionData(FSB1_template, portTypeToIdList1);
853 addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
854 addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
855 unifiedCompositionDataList.add(unifiedCompositionData1);
857 List<Pair<String, String>> portTypeToIdList2 = new ArrayList<>();
858 portTypeToIdList2.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
859 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
861 UnifiedCompositionData unifiedCompositionData2 =
862 createCompositionData(FSB2_template, portTypeToIdList2);
863 addOutputGetAttrInForCompute2WithConsolidation(unifiedCompositionData2);
864 addOutputGetAttrInForPortWithConsolidation2(unifiedCompositionData2);
865 unifiedCompositionDataList.add(unifiedCompositionData2);
867 NodeTemplate abstractNodeTemplate = getMockNode(
868 BASE_DIRECTORY + "cleanMainSt/mockAbstractNodeTemplate.yaml");
869 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML).getTopology_template().getNode_templates()
870 .put(FSB1, abstractNodeTemplate);
872 Mockito.doReturn(FSB1).when(context).getUnifiedAbstractNodeTemplateId(anyObject(),
875 unifiedCompositionService.
876 cleanUnifiedCompositionEntities(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
877 unifiedCompositionDataList, context);
879 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
883 public void updateNewAbstractNodeTemplateNoConsolidation() throws IOException {
884 loadInputAndOutputData(BASE_DIRECTORY + "fixNewAbstractNodeTemplate/noConsolidation");
886 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
887 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
888 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
890 NodeTemplate cleanedComputeNodeTemplate =
892 BASE_DIRECTORY + "fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml");
895 context.setConsolidationData(
896 createConsolidationData(Collections.singletonList(FSB1_template), portTypeToIdList));
897 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_template,
898 UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate);
899 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL_1,
900 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
901 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL_2,
902 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
904 setUnifiedCompositionData(Arrays.asList(FSB1_template, FSB1_INTERNAL_1, FSB1_INTERNAL_2));
906 unifiedCompositionService
907 .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), context);
909 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
913 public void updateNewAbstractNodeTemplateWithConsolidation() throws IOException {
914 loadInputAndOutputData(BASE_DIRECTORY + "fixNewAbstractNodeTemplate/consolidation");
916 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
917 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_1));
918 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_1));
920 NodeTemplate cleanedComputeNodeTemplate =
922 BASE_DIRECTORY + "fixNewAbstractNodeTemplate/mockComputeNodeTemplate.yaml");
925 context.setConsolidationData(
926 createConsolidationData(Arrays.asList("FSB1_template_1", "FSB1_template_2"),
928 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, "FSB1_template_1",
929 UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate);
930 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, "FSB1_template_2",
931 UnifiedCompositionEntity.COMPUTE, cleanedComputeNodeTemplate);
932 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL_1,
933 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
934 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB2_INTERNAL_1,
935 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
937 setUnifiedCompositionData(
938 Arrays.asList("FSB1_template_1", "FSB1_template_2", FSB1_INTERNAL_1, FSB2_INTERNAL_1));
940 unifiedCompositionService
941 .updateUnifiedAbstractNodesConnectivity(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), context);
943 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
947 public void testUnifiedNestedCompositionOneComputeInNested() throws IOException {
948 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/oneNestedNode");
950 ConsolidationData consolidationData = new ConsolidationData();
951 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
952 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
955 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName,
956 "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
957 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName,
958 "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
960 context.setConsolidationData(consolidationData);
961 context.getTranslatedServiceTemplates()
962 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
963 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
964 context.getTranslatedServiceTemplates()
965 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
966 context.getTranslatedServiceTemplates()
967 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
969 UnifiedCompositionData unifiedComposition = createUnifiedCompositionOnlyNested("server_pcm_001");
970 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(
971 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName), null,
973 unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo, unifiedComposition);
975 checkSTResults(expectedOutserviceTemplates, nestedFileName,
976 context.getTranslatedServiceTemplates().get(nestedFileName),
977 context.getTranslatedServiceTemplates()
978 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
982 public void testTwoNestedWithOneCompute() throws IOException {
983 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/twoNestedWithOneCompute");
985 ConsolidationData consolidationData = new ConsolidationData();
986 String nestedFileName1 = "nested-pcm_v0.1ServiceTemplate.yaml";
987 String nestedFileName2 = "nested-oam_v0.1ServiceTemplate.yaml";
989 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML,
990 Arrays.asList("server_pcm_001", "server_oam_001"), consolidationData);
992 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName1,
993 "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
994 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName1,
995 "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
996 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName2,
997 "org.openecomp.resource.vfc.nodes.heat.oam_server", consolidationData);
998 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName2,
999 "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam", consolidationData);
1001 context.setConsolidationData(consolidationData);
1002 context.getTranslatedServiceTemplates()
1003 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1004 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1005 context.getTranslatedServiceTemplates()
1006 .put(nestedFileName1, inputServiceTemplates.get(nestedFileName1));
1007 context.getTranslatedServiceTemplates()
1008 .put(nestedFileName2, inputServiceTemplates.get(nestedFileName2));
1009 context.getTranslatedServiceTemplates()
1010 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1012 UnifiedCompositionData unifiedComposition =
1013 createUnifiedCompositionOnlyNested("server_pcm_001");
1014 UnifiedCompositionTo unifiedCompositionTo1 = new UnifiedCompositionTo(inputServiceTemplates
1015 .get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName1), null,
1017 unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo1, unifiedComposition);
1018 unifiedComposition = createUnifiedCompositionOnlyNested("server_oam_001");
1019 UnifiedCompositionTo unifiedCompositionTo2 = new UnifiedCompositionTo(inputServiceTemplates
1020 .get(MAIN_SERVICE_TEMPLATE_YAML), inputServiceTemplates.get(nestedFileName2), null,
1022 unifiedCompositionService.handleUnifiedNestedDefinition(unifiedCompositionTo2, unifiedComposition);
1024 checkSTResults(expectedOutserviceTemplates, nestedFileName1,
1025 context.getTranslatedServiceTemplates().get(nestedFileName1),
1026 context.getTranslatedServiceTemplates()
1027 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
1028 checkSTResults(expectedOutserviceTemplates, nestedFileName2,
1029 context.getTranslatedServiceTemplates().get(nestedFileName2),
1034 public void testNestedCompositionNodesConnectedIn() throws IOException {
1035 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedNodesConnectedIn");
1036 ConsolidationData consolidationData = new ConsolidationData();
1037 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1038 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1040 context.getTranslatedServiceTemplates()
1041 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1042 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1043 context.getTranslatedServiceTemplates()
1044 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1045 context.getTranslatedServiceTemplates()
1046 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1047 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1049 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1050 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1052 UnifiedCompositionData unifiedComposition =
1053 createUnifiedCompositionOnlyNested("server_pcm_001");
1054 unifiedComposition.getNestedTemplateConsolidationData()
1055 .setNodesConnectedIn(nodeConnectedInList);
1057 unifiedCompositionService.updNestedCompositionNodesConnectedInConnectivity
1058 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1059 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1060 context.getTranslatedServiceTemplates().get(nestedFileName),
1061 context.getTranslatedServiceTemplates()
1062 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1063 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1068 public void testNestedCompositionNodesGetAttrIn() throws IOException {
1069 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedNodesGetAttrIn");
1070 ConsolidationData consolidationData = new ConsolidationData();
1071 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1072 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1074 context.getTranslatedServiceTemplates()
1075 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1076 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1077 context.getTranslatedServiceTemplates()
1078 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1079 context.getTranslatedServiceTemplates()
1080 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1081 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1083 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1084 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1086 UnifiedCompositionData unifiedComposition =
1087 createUnifiedCompositionOnlyNested("server_pcm_001");
1088 addGetAttInUnifiedCompositionData(unifiedComposition
1089 .getNestedTemplateConsolidationData(), TENANT_ID, "oam_net_gw", "packet_mirror_network");
1090 addGetAttInUnifiedCompositionData(unifiedComposition
1091 .getNestedTemplateConsolidationData(), USER_DATA_FORMAT, "oam_net_gw",
1092 "server_compute_get_attr_test");
1093 addGetAttInUnifiedCompositionData(unifiedComposition
1094 .getNestedTemplateConsolidationData(), "metadata", "server_pcm_id",
1095 "server_compute_get_attr_test");
1096 unifiedCompositionService.updNestedCompositionNodesGetAttrInConnectivity
1097 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1098 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1099 context.getTranslatedServiceTemplates().get(nestedFileName),
1100 context.getTranslatedServiceTemplates()
1101 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1102 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1106 public void testNestedCompositionOutputParamGetAttrIn() throws IOException {
1107 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedOutputParamGetAttrIn");
1108 ConsolidationData consolidationData = new ConsolidationData();
1109 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1110 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1112 context.getTranslatedServiceTemplates()
1113 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1114 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1115 context.getTranslatedServiceTemplates()
1116 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1117 context.getTranslatedServiceTemplates()
1118 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1119 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1121 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1122 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1124 UnifiedCompositionData unifiedComposition =
1125 createUnifiedCompositionOnlyNested("server_pcm_001");
1126 addOutputGetAttInUnifiedCompositionData(unifiedComposition
1127 .getNestedTemplateConsolidationData(), "output_attr_1", ACCESS_IPv4);
1128 addOutputGetAttInUnifiedCompositionData(unifiedComposition
1129 .getNestedTemplateConsolidationData(), "output_attr_2", ACCESS_IPv6);
1130 unifiedCompositionService.updNestedCompositionOutputParamGetAttrInConnectivity
1131 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1132 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1133 context.getTranslatedServiceTemplates().get(nestedFileName),
1134 context.getTranslatedServiceTemplates()
1135 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1136 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1140 public void testInputOutputParameterType() throws IOException{
1141 loadInputAndOutputData(BASE_DIRECTORY + "inputoutputparamtype");
1142 ConsolidationData consolidationData = new ConsolidationData();
1143 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1144 portTypeToIdList.add(new ImmutablePair<>("FSB1_Port", "FSB1_Port_1"));
1145 portTypeToIdList.add(new ImmutablePair<>("VMI", "VMI_1"));
1147 UnifiedCompositionData unifiedCompositionData = createCompositionData(FSB1, portTypeToIdList);
1149 Map<String, NodeTemplate> nodeTemplates =
1150 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML).getTopology_template().getNode_templates();
1151 for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet() ) {
1152 String nodeTemplateId = nodeTemplateEntry.getKey();
1153 if (nodeTemplateId.equals("cmaui_volume_test_compute_properties")) {
1154 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1155 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1156 unifiedCompositionData.getComputeTemplateConsolidationData()
1157 .setNodesGetAttrIn(nodesGetAttrIn);
1160 if (nodeTemplateId.equals("cmaui_volume_test_neutron_port_properties")) {
1161 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1162 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1163 unifiedCompositionData.getPortTemplateConsolidationDataList().get(0)
1164 .setNodesGetAttrIn(nodesGetAttrIn);
1167 if (nodeTemplateId.equals("cmaui_volume_test_contrailv2_VMI_properties")) {
1168 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1169 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1170 unifiedCompositionData.getPortTemplateConsolidationDataList().get(1)
1171 .setNodesGetAttrIn(nodesGetAttrIn);
1175 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
1176 unifiedCompositionDataList.add(unifiedCompositionData);
1178 UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
1179 new UnifiedCompositionSingleSubstitution();
1180 unifiedCompositionSingleSubstitution
1181 .createUnifiedComposition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), null,
1182 unifiedCompositionDataList, context);
1183 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1184 System.out.println();
1189 private UnifiedCompositionData createUnifiedCompositionOnlyNested(
1190 String nestedNodeTemplateId) {
1191 NestedTemplateConsolidationData nestedTemplateConsolidationData =
1192 new NestedTemplateConsolidationData();
1193 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
1194 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1195 unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData);
1196 return unifiedCompositionData;
1199 private void setUnifiedCompositionData(List<String> nodeTemplateIds) {
1200 UnifiedSubstitutionData unifiedSubstitutionData =
1201 context.getUnifiedSubstitutionData().get(MAIN_SERVICE_TEMPLATE_YAML) == null ? new UnifiedSubstitutionData()
1202 : context.getUnifiedSubstitutionData().get(MAIN_SERVICE_TEMPLATE_YAML);
1203 Map<String, String> substitutionAbstractNodeIds = new HashMap<>();
1204 for (String id : nodeTemplateIds) {
1205 substitutionAbstractNodeIds.put(id, "FSB2");
1208 substitutionAbstractNodeIds.put("", FSB1);
1210 unifiedSubstitutionData.setNodesRelatedAbstractNode(substitutionAbstractNodeIds);
1213 private void checkSTResults(
1214 Map<String, ServiceTemplate> expectedOutserviceTemplates,
1215 ServiceTemplate substitutionServiceTemplate,
1216 ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1217 YamlUtil yamlUtil = new YamlUtil();
1218 if (Objects.nonNull(substitutionServiceTemplate)) {
1219 String substitutionST = "SubstitutionServiceTemplate.yaml";
1220 assertEquals("difference substitution service template: ",
1221 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(substitutionST)),
1222 yamlUtil.objectToYaml(substitutionServiceTemplate));
1224 if (Objects.nonNull(gloablSubstitutionServiceTemplate)) {
1225 assertEquals("difference global substitution service template: ",
1226 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML)),
1227 yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate));
1229 if (Objects.nonNull(mainServiceTemplate)) {
1230 assertEquals("difference main service template: ",
1231 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)),
1232 yamlUtil.objectToYaml(mainServiceTemplate));
1236 private void checkSTResults(
1237 Map<String, ServiceTemplate> expectedOutserviceTemplates,
1238 String nestedSTFileName, ServiceTemplate nestedServiceTemplate,
1239 ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1240 YamlUtil yamlUtil = new YamlUtil();
1242 if (Objects.nonNull(nestedServiceTemplate)) {
1243 assertEquals("difference nested service template: ",
1244 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(nestedSTFileName)),
1245 yamlUtil.objectToYaml(nestedServiceTemplate));
1247 checkSTResults(expectedOutserviceTemplates, null, gloablSubstitutionServiceTemplate,
1248 mainServiceTemplate);
1252 private void loadInputAndOutputData(String path) throws IOException {
1253 inputServiceTemplates = new HashMap<>();
1254 TestUtils.loadServiceTemplates(path + IN_PREFIX, new ToscaExtensionYamlUtil(),
1255 inputServiceTemplates);
1256 expectedOutserviceTemplates = new HashMap<>();
1257 TestUtils.loadServiceTemplates(path + OUT_PREFIX, new ToscaExtensionYamlUtil(),
1258 expectedOutserviceTemplates);
1262 private void addGetAttInUnifiedCompositionData(EntityConsolidationData entityConsolidationData,
1263 String propertyName, String attributeName,
1264 String nodeTemplateId) {
1265 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1266 getAttrFuncData.setAttributeName(attributeName);
1267 getAttrFuncData.setFieldName(propertyName);
1268 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
1271 private void addOutputGetAttInUnifiedCompositionData(
1272 EntityConsolidationData entityConsolidationData,
1273 String outParamName, String attributeName) {
1274 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1275 getAttrFuncData.setAttributeName(attributeName);
1276 getAttrFuncData.setFieldName(outParamName);
1277 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
1280 private ConsolidationData createConsolidationData(List<String> computeNodeIds,
1281 List<Pair<String, String>> portTypeToIdList) {
1283 ConsolidationData consolidationData = new ConsolidationData();
1284 String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.FSB2";
1287 .initComputeNodeTypeInConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, computeNodeTypeName, consolidationData);
1288 TestUtils.initPortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, consolidationData);
1290 for (String computeId : computeNodeIds) {
1291 ComputeTemplateConsolidationData computeTemplateConsolidationData =
1292 new ComputeTemplateConsolidationData();
1293 TestUtils.updatePortsInComputeTemplateConsolidationData(portTypeToIdList,
1294 computeTemplateConsolidationData);
1295 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
1296 .getTypeComputeConsolidationData(computeNodeTypeName)
1297 .setComputeTemplateConsolidationData(computeId,
1298 computeTemplateConsolidationData);
1301 for (Pair<String, String> portTypeToId : portTypeToIdList) {
1302 consolidationData.getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
1303 .setPortTemplateConsolidationData(portTypeToId.getRight(),
1304 new PortTemplateConsolidationData());
1307 return consolidationData;
1310 private UnifiedCompositionData createCompositionData(String computeNodeTemplateId,
1311 List<Pair<String, String>> portTypeToIdList) {
1313 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1314 NodeTemplate computeNodeTemplate =
1315 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), computeNodeTemplateId);
1316 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1317 TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1318 List<RequirementAssignmentData> requirementAssignmentList =
1319 (requirementAssignmentDataList.isPresent()) ? requirementAssignmentDataList.get() : null;
1320 Map<String, List<RequirementAssignmentData>> volume = null;
1321 if (requirementAssignmentList != null) {
1322 volume = getVolume(requirementAssignmentList);
1324 unifiedCompositionData.setComputeTemplateConsolidationData(
1325 TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList,
1327 if (portTypeToIdList != null) {
1328 for (Pair<String, String> port : portTypeToIdList) {
1329 NodeTemplate portNodeTemplate =
1330 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1332 Map<String, List<RequirementAssignmentData>> nodeConnectedOut =
1333 TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1334 PortTemplateConsolidationData portTemplateConsolidationData =
1335 TestUtils.createPortTemplateConsolidationData(port.getRight());
1336 portTemplateConsolidationData.setNodesConnectedOut(nodeConnectedOut);
1337 unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
1340 return unifiedCompositionData;
1343 private List<UnifiedCompositionData> createAbstractSubstituteCompositionDataComputeAndPort() {
1344 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
1345 UnifiedCompositionData data1 = createComputeUnifiedCompositionData(FSB1_template);
1346 UnifiedCompositionData data2 = createComputeUnifiedCompositionData(FSB2_template);
1348 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1349 ImmutablePair<String, String> portTypePair1 = new ImmutablePair<>(FSB1_INTERNAL,
1351 ImmutablePair<String, String> portTypePair2 = new ImmutablePair<>(FSB2_INTERNAL,
1353 portTypeToIdList.add(portTypePair1);
1354 portTypeToIdList.add(portTypePair2);
1355 addPortDataToCompositionData(portTypeToIdList, data1);
1356 portTypeToIdList.remove(portTypePair1);
1357 portTypeToIdList.remove(portTypePair2);
1358 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL_2));
1359 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL_2));
1360 addPortDataToCompositionData(portTypeToIdList, data2);
1362 unifiedCompositionDataList.add(data1);
1363 unifiedCompositionDataList.add(data2);
1364 return unifiedCompositionDataList;
1368 private UnifiedCompositionData createComputeUnifiedCompositionData(String computeNodeTemplateId) {
1369 NodeTemplate computeNodeTemplate =
1370 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), computeNodeTemplateId);
1371 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1372 TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1373 Map<String, List<RequirementAssignmentData>> volume = null;
1374 if (requirementAssignmentDataList.isPresent()) {
1375 volume = getVolume(requirementAssignmentDataList.get());
1377 UnifiedCompositionData data = new UnifiedCompositionData();
1378 Map<String, List<RequirementAssignmentData>> computeNodeConnectedOut =
1379 TestUtils.getNodeConnectedOutList(computeNodeTemplate, DEPENDENCY);
1380 Map<String, List<RequirementAssignmentData>> computeNodeConnectedIn =
1382 .getNodeConnectedInList(computeNodeTemplateId, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1384 ComputeTemplateConsolidationData computeTemplateConsolidationData = TestUtils
1385 .createComputeTemplateConsolidationData(computeNodeTemplateId, null, volume);
1386 List<String> computeNodeGroups =
1387 TestUtils.getGroupsForNode(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1388 computeNodeTemplateId);
1389 if (!computeNodeGroups.isEmpty()) {
1390 computeTemplateConsolidationData.setGroupIds(computeNodeGroups);
1392 computeTemplateConsolidationData.setNodesConnectedOut(computeNodeConnectedOut);
1393 computeTemplateConsolidationData.setNodesConnectedIn(computeNodeConnectedIn);
1394 data.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
1398 private void addPortDataToCompositionData(List<Pair<String, String>> portTypeToIdList,
1399 UnifiedCompositionData data) {
1400 ComputeTemplateConsolidationData computeTemplateConsolidationData = data
1401 .getComputeTemplateConsolidationData();
1403 for (Pair<String, String> port : portTypeToIdList) {
1404 NodeTemplate portNodeTemplate =
1405 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1407 Optional<List<RequirementAssignmentData>> bindingReqList =
1408 TestUtils.getRequirementAssignmentDataList(portNodeTemplate, "binding");
1410 if (bindingReqList.isPresent()) {
1411 for (RequirementAssignmentData reqData : bindingReqList.get()) {
1412 String nodeId = reqData.getRequirementAssignment().getNode();
1413 if (nodeId.equals(computeTemplateConsolidationData.getNodeTemplateId())) {
1414 computeTemplateConsolidationData.addPort(port.getLeft(), port.getRight());
1418 Map<String, List<RequirementAssignmentData>> portNodeConnectedOut =
1419 TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1420 PortTemplateConsolidationData portTemplateConsolidationData = TestUtils
1421 .createPortTemplateConsolidationData(port.getRight());
1422 portTemplateConsolidationData.setNodesConnectedOut(portNodeConnectedOut);
1424 //Add node connected in info to test data
1425 Map<String, List<RequirementAssignmentData>> portNodeConnectedIn =
1426 TestUtils.getNodeConnectedInList(port.getRight(), inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1428 portTemplateConsolidationData.setNodesConnectedIn(portNodeConnectedIn);
1430 //Add group infromation for ports
1431 List<String> portGroups =
1432 TestUtils.getGroupsForNode(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1433 portTemplateConsolidationData.setGroupIds(portGroups);
1434 data.addPortTemplateConsolidationData(portTemplateConsolidationData);
1437 addGetAttrForCompute(data);
1438 addGetAttrForPort(data);
1441 private Map<String, List<RequirementAssignmentData>> getVolume(
1442 List<RequirementAssignmentData> requirementAssignmentList) {
1443 Map<String, List<RequirementAssignmentData>> volume = new HashMap<>();
1444 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentList) {
1445 String volumeNodeTemplateId = requirementAssignmentData.getRequirementAssignment().getNode();
1446 volume.computeIfAbsent(volumeNodeTemplateId, k -> new ArrayList<>());
1447 volume.get(volumeNodeTemplateId).add(requirementAssignmentData);
1452 private void addGetAttrForPort(UnifiedCompositionData unifiedCompositionData) {
1453 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1454 .getPortTemplateConsolidationDataList()) {
1455 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_1)) {
1456 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "network_name",
1457 NETWORK_ID, JSA_NET1);
1458 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1459 DEVICE_OWNER, CMAUI_VOLUME1);
1460 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL_2)) {
1461 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, TENANT_ID,
1462 NETWORK_ID, JSA_NET1);
1463 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "qos_policy",
1464 NETWORK_ID, JSA_NET1);
1465 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, VOLUME_TYPE,
1466 TENANT_ID, CMAUI_VOLUME1);
1467 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_OAM)) {
1468 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1469 STATUS, CMAUI_VOLUME1);
1474 private void addGetAttrForPort2(UnifiedCompositionData unifiedCompositionData) {
1475 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1476 .getPortTemplateConsolidationDataList()) {
1477 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL_1)) {
1478 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, VOLUME_TYPE,
1479 TENANT_ID, CMAUI_VOLUME3);
1480 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_2)) {
1481 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1482 DEVICE_OWNER, CMAUI_VOLUME3);
1483 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1484 STATUS, CMAUI_VOLUME1);
1489 private void addGetAttrForPortInnerUC(UnifiedCompositionData unifiedCompositionData) {
1490 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1491 .getPortTemplateConsolidationDataList()) {
1492 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_1)) {
1493 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, AVAILABILITY_ZONE,
1494 MYATTR, FSB1_template);
1495 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "metadata",
1496 MYATTR, FSB1_template);
1497 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "name",
1498 MYATTR, FSB1_template);
1499 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, AVAILABILITY_ZONE,
1500 TENANT_ID, FSB1_template);
1505 private void addGetAttrForCompute(UnifiedCompositionData unifiedCompositionData) {
1506 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1507 "dhcp_agent_ids", ADDRESSES, JSA_NET1);
1508 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1509 VOLUME_TYPE, ADDRESSES, CMAUI_VOLUME1);
1510 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1511 SIZE, ACCESS_IPv6, CMAUI_VOLUME2);
1514 private void addGetAttrForCompute2(UnifiedCompositionData unifiedCompositionData) {
1515 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1516 VOLUME_TYPE, ADDRESSES, CMAUI_VOLUME3);
1517 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1518 SIZE, USER_DATA_FORMAT, CMAUI_VOLUME3);
1521 private void addOutputGetAttrInForComputeNoConsolidation(
1522 UnifiedCompositionData unifiedCompositionData) {
1523 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1524 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT1, ACCESS_IPv4);
1525 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1526 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT2, ADDRESSES);
1527 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1528 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT1, ADDRESSES);
1529 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1530 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT3, ACCESS_IPv6);
1534 private void addOutputGetAttrInForCompute1WithConsolidation(
1535 UnifiedCompositionData unifiedCompositionData) {
1536 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1537 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT1, ACCESS_IPv4);
1538 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1539 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT1, ADDRESSES);
1543 private void addOutputGetAttrInForCompute2WithConsolidation(
1544 UnifiedCompositionData unifiedCompositionData) {
1545 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1546 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT2, ADDRESSES);
1549 private void addOutputGetAttrInForPortNoConsolidation(
1550 UnifiedCompositionData unifiedCompositionData) {
1551 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1552 .getPortTemplateConsolidationDataList()) {
1553 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_1)) {
1554 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1556 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT3,
1558 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL_2)) {
1559 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT1,
1561 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_OAM)) {
1562 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1568 private void addOutputGetAttrInForPortWithConsolidation1(
1569 UnifiedCompositionData unifiedCompositionData) {
1570 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1571 .getPortTemplateConsolidationDataList()) {
1572 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL_2)) {
1573 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT1,
1575 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_1)) {
1576 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT3,
1582 private void addOutputGetAttrInForPortWithConsolidation2(
1583 UnifiedCompositionData unifiedCompositionData) {
1584 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1585 .getPortTemplateConsolidationDataList()) {
1586 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL_1)) {
1587 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1589 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL_2)) {
1590 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1596 private NodeTemplate getMockNode(String path) throws IOException {
1597 URL resource = this.getClass().getResource(path);
1598 YamlUtil yamlUtil = new YamlUtil();
1599 return yamlUtil.yamlToObject(resource.openStream(), NodeTemplate.class);