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.Ignore;
27 import org.junit.Test;
28 import org.mockito.InjectMocks;
29 import org.mockito.Mockito;
30 import org.mockito.MockitoAnnotations;
31 import org.mockito.Spy;
32 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
33 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
34 import org.openecomp.sdc.tosca.services.DataModelUtil;
35 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
36 import org.openecomp.sdc.tosca.services.YamlUtil;
37 import org.openecomp.sdc.translator.TestUtils;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
40 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity;
41 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedSubstitutionData;
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_INTERNAL1 = "FSB1_Internal1";
79 private static final String FSB1_INTERNAL2 = "FSB1_Internal2";
80 private static final String FSB2_INTERNAL1 = "FSB2_Internal1";
81 private static final String FSB2_INTERNAL2 = "FSB2_Internal2";
82 private static final String PORT = "port";
83 private static final String PORT1 = "port1";
84 private static final String PORT2 = "port2";
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_INTERNAL1));
150 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
151 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
175 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
202 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL2));
213 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
258 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
286 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
317 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL2));
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_INTERNAL1));
404 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
501 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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, PORT1));
559 portTypeToIdList.add(new ImmutablePair<>(PORT, PORT2));
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_INTERNAL1));
620 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
647 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL2));
658 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
682 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
710 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL2));
721 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
747 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
780 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL2));
792 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
815 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL1));
849 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
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_INTERNAL2));
859 portTypeToIdList2.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1));
888 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL2));
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_INTERNAL1,
900 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
901 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB1_INTERNAL2,
902 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
904 setUnifiedCompositionData(Arrays.asList(FSB1_template, FSB1_INTERNAL1, FSB1_INTERNAL2));
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_INTERNAL1));
918 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL1));
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_INTERNAL1,
933 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
934 context.addCleanedNodeTemplate(MAIN_SERVICE_TEMPLATE_YAML, FSB2_INTERNAL1,
935 UnifiedCompositionEntity.PORT, cleanedComputeNodeTemplate);
937 setUnifiedCompositionData(
938 Arrays.asList("FSB1_template_1", "FSB1_template_2", FSB1_INTERNAL1, FSB2_INTERNAL1));
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 testThreeNovaOfSameTypePreConditionFalse() throws IOException {
948 loadInputAndOutputData(BASE_DIRECTORY + "pattern1b/noConsolidation");
950 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
951 List<Pair<String, String>> portTypeToIdList1 = new ArrayList<>();
952 portTypeToIdList1.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL1));
953 portTypeToIdList1.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
955 UnifiedCompositionData unifiedCompositionData1 =
956 createCompositionData(FSB1_template, portTypeToIdList1);
957 addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData1);
958 addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData1);
959 unifiedCompositionDataList.add(unifiedCompositionData1);
961 UnifiedCompositionData unifiedCompositionData2 =
962 createCompositionData(FSB2_template, portTypeToIdList1);
963 addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData2);
964 addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData2);
965 unifiedCompositionDataList.add(unifiedCompositionData2);
967 portTypeToIdList1.remove(1);
968 UnifiedCompositionData unifiedCompositionData3 =
969 createCompositionData(FSB3_template, portTypeToIdList1);
970 addOutputGetAttrInForCompute1WithConsolidation(unifiedCompositionData3);
971 addOutputGetAttrInForPortWithConsolidation1(unifiedCompositionData3);
972 unifiedCompositionDataList.add(unifiedCompositionData3);
974 UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
975 new UnifiedCompositionSingleSubstitution();
976 unifiedCompositionSingleSubstitution
977 .createUnifiedComposition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), null,
978 unifiedCompositionDataList, context);
980 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
984 public void testUnifiedNestedCompositionOneComputeInNested() throws IOException {
985 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/oneNestedNode");
987 ConsolidationData consolidationData = new ConsolidationData();
988 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
989 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
992 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName,
993 "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
994 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName,
995 "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
997 context.setConsolidationData(consolidationData);
998 context.getTranslatedServiceTemplates()
999 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1000 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1001 context.getTranslatedServiceTemplates()
1002 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1003 context.getTranslatedServiceTemplates()
1004 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1006 UnifiedCompositionData unifiedComposition = createUnifiedCompositionOnlyNested("server_pcm_001");
1007 unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1008 inputServiceTemplates.get(nestedFileName), unifiedComposition, context);
1010 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1011 context.getTranslatedServiceTemplates().get(nestedFileName),
1012 context.getTranslatedServiceTemplates()
1013 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
1017 public void testTwoNestedWithOneCompute() throws IOException {
1018 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/twoNestedWithOneCompute");
1020 ConsolidationData consolidationData = new ConsolidationData();
1021 String nestedFileName1 = "nested-pcm_v0.1ServiceTemplate.yaml";
1022 String nestedFileName2 = "nested-oam_v0.1ServiceTemplate.yaml";
1024 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML,
1025 Arrays.asList("server_pcm_001", "server_oam_001"), consolidationData);
1027 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName1,
1028 "org.openecomp.resource.vfc.nodes.heat.pcm_server", consolidationData);
1029 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName1,
1030 "org.openecomp.resource.vfc.nodes.heat.pcm_server", "server_pcm", consolidationData);
1031 TestUtils.initComputeNodeTypeInConsolidationData(nestedFileName2,
1032 "org.openecomp.resource.vfc.nodes.heat.oam_server", consolidationData);
1033 TestUtils.initComputeNodeTemplateIdInConsolidationData(nestedFileName2,
1034 "org.openecomp.resource.vfc.nodes.heat.oam_server", "server_oam", consolidationData);
1036 context.setConsolidationData(consolidationData);
1037 context.getTranslatedServiceTemplates()
1038 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1039 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1040 context.getTranslatedServiceTemplates()
1041 .put(nestedFileName1, inputServiceTemplates.get(nestedFileName1));
1042 context.getTranslatedServiceTemplates()
1043 .put(nestedFileName2, inputServiceTemplates.get(nestedFileName2));
1044 context.getTranslatedServiceTemplates()
1045 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1047 UnifiedCompositionData unifiedComposition =
1048 createUnifiedCompositionOnlyNested("server_pcm_001");
1049 unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1050 inputServiceTemplates.get(nestedFileName1), unifiedComposition, context);
1051 unifiedComposition = createUnifiedCompositionOnlyNested("server_oam_001");
1052 unifiedCompositionService.handleUnifiedNestedDefinition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1053 inputServiceTemplates.get(nestedFileName2), unifiedComposition, context);
1055 checkSTResults(expectedOutserviceTemplates, nestedFileName1,
1056 context.getTranslatedServiceTemplates().get(nestedFileName1),
1057 context.getTranslatedServiceTemplates()
1058 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), null);
1059 checkSTResults(expectedOutserviceTemplates, nestedFileName2,
1060 context.getTranslatedServiceTemplates().get(nestedFileName2),
1065 public void testNestedCompositionNodesConnectedIn() throws IOException {
1066 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedNodesConnectedIn");
1067 ConsolidationData consolidationData = new ConsolidationData();
1068 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1069 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1071 context.getTranslatedServiceTemplates()
1072 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1073 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1074 context.getTranslatedServiceTemplates()
1075 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1076 context.getTranslatedServiceTemplates()
1077 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1078 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1080 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1081 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1083 UnifiedCompositionData unifiedComposition =
1084 createUnifiedCompositionOnlyNested("server_pcm_001");
1085 unifiedComposition.getNestedTemplateConsolidationData()
1086 .setNodesConnectedIn(nodeConnectedInList);
1088 unifiedCompositionService.updNestedCompositionNodesConnectedInConnectivity
1089 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1090 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1091 context.getTranslatedServiceTemplates().get(nestedFileName),
1092 context.getTranslatedServiceTemplates()
1093 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1094 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1099 public void testNestedCompositionNodesGetAttrIn() throws IOException {
1100 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedNodesGetAttrIn");
1101 ConsolidationData consolidationData = new ConsolidationData();
1102 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1103 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1105 context.getTranslatedServiceTemplates()
1106 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1107 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1108 context.getTranslatedServiceTemplates()
1109 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1110 context.getTranslatedServiceTemplates()
1111 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1112 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1114 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1115 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1117 UnifiedCompositionData unifiedComposition =
1118 createUnifiedCompositionOnlyNested("server_pcm_001");
1119 addGetAttInUnifiedCompositionData(unifiedComposition
1120 .getNestedTemplateConsolidationData(), TENANT_ID, "oam_net_gw", "packet_mirror_network");
1121 addGetAttInUnifiedCompositionData(unifiedComposition
1122 .getNestedTemplateConsolidationData(), USER_DATA_FORMAT, "oam_net_gw",
1123 "server_compute_get_attr_test");
1124 addGetAttInUnifiedCompositionData(unifiedComposition
1125 .getNestedTemplateConsolidationData(), "metadata", "server_pcm_id",
1126 "server_compute_get_attr_test");
1127 unifiedCompositionService.updNestedCompositionNodesGetAttrInConnectivity
1128 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1129 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1130 context.getTranslatedServiceTemplates().get(nestedFileName),
1131 context.getTranslatedServiceTemplates()
1132 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1133 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1137 public void testNestedCompositionOutputParamGetAttrIn() throws IOException {
1138 loadInputAndOutputData(BASE_DIRECTORY + "pattern4/nestedOutputParamGetAttrIn");
1139 ConsolidationData consolidationData = new ConsolidationData();
1140 String nestedFileName = "nested-pcm_v0.1ServiceTemplate.yaml";
1141 TestUtils.updateNestedConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, Collections.singletonList("server_pcm_001"),
1143 context.getTranslatedServiceTemplates()
1144 .put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME,
1145 inputServiceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML));
1146 context.getTranslatedServiceTemplates()
1147 .put(nestedFileName, inputServiceTemplates.get(nestedFileName));
1148 context.getTranslatedServiceTemplates()
1149 .put(MAIN_SERVICE_TEMPLATE_YAML, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1150 context.addUnifiedNestedNodeTemplateId(MAIN_SERVICE_TEMPLATE_YAML, "server_pcm_001", "abstract_pcm_server_0");
1152 Map<String, List<RequirementAssignmentData>> nodeConnectedInList =
1153 TestUtils.getNodeConnectedInList("server_pcm_001", inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1155 UnifiedCompositionData unifiedComposition =
1156 createUnifiedCompositionOnlyNested("server_pcm_001");
1157 addOutputGetAttInUnifiedCompositionData(unifiedComposition
1158 .getNestedTemplateConsolidationData(), "output_attr_1", ACCESS_IPv4);
1159 addOutputGetAttInUnifiedCompositionData(unifiedComposition
1160 .getNestedTemplateConsolidationData(), "output_attr_2", ACCESS_IPv6);
1161 unifiedCompositionService.updNestedCompositionOutputParamGetAttrInConnectivity
1162 (inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), unifiedComposition, context);
1163 checkSTResults(expectedOutserviceTemplates, nestedFileName,
1164 context.getTranslatedServiceTemplates().get(nestedFileName),
1165 context.getTranslatedServiceTemplates()
1166 .get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME), context
1167 .getTranslatedServiceTemplates().get(MAIN_SERVICE_TEMPLATE_YAML));
1171 public void testInputOutputParameterType() throws IOException{
1172 loadInputAndOutputData(BASE_DIRECTORY + "inputoutputparamtype");
1173 ConsolidationData consolidationData = new ConsolidationData();
1174 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1175 portTypeToIdList.add(new ImmutablePair<>("FSB1_Port", "FSB1_Port1"));
1176 portTypeToIdList.add(new ImmutablePair<>("VMI", "VMI1"));
1178 UnifiedCompositionData unifiedCompositionData = createCompositionData(FSB1, portTypeToIdList);
1180 Map<String, NodeTemplate> nodeTemplates =
1181 inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML).getTopology_template().getNode_templates();
1182 for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet() ) {
1183 String nodeTemplateId = nodeTemplateEntry.getKey();
1184 if (nodeTemplateId.equals("cmaui_volume_test_compute_properties")) {
1185 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1186 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1187 unifiedCompositionData.getComputeTemplateConsolidationData()
1188 .setNodesGetAttrIn(nodesGetAttrIn);
1191 if (nodeTemplateId.equals("cmaui_volume_test_neutron_port_properties")) {
1192 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1193 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1194 unifiedCompositionData.getPortTemplateConsolidationDataList().get(0)
1195 .setNodesGetAttrIn(nodesGetAttrIn);
1198 if (nodeTemplateId.equals("cmaui_volume_test_contrailv2_VMI_properties")) {
1199 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
1200 TestUtils.getNodesGetAttrIn(nodeTemplateEntry.getValue(), nodeTemplateId);
1201 unifiedCompositionData.getPortTemplateConsolidationDataList().get(1)
1202 .setNodesGetAttrIn(nodesGetAttrIn);
1206 List<UnifiedCompositionData> unifiedCompositionDataList = new LinkedList<>();
1207 unifiedCompositionDataList.add(unifiedCompositionData);
1209 UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
1210 new UnifiedCompositionSingleSubstitution();
1211 unifiedCompositionSingleSubstitution
1212 .createUnifiedComposition(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), null,
1213 unifiedCompositionDataList, context);
1214 checkSTResults(expectedOutserviceTemplates, null, null, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML));
1215 System.out.println();
1220 private UnifiedCompositionData createUnifiedCompositionOnlyNested(
1221 String nestedNodeTemplateId) {
1222 NestedTemplateConsolidationData nestedTemplateConsolidationData =
1223 new NestedTemplateConsolidationData();
1224 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
1225 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1226 unifiedCompositionData.setNestedTemplateConsolidationData(nestedTemplateConsolidationData);
1227 return unifiedCompositionData;
1230 private void setUnifiedCompositionData(List<String> nodeTemplateIds) {
1231 UnifiedSubstitutionData unifiedSubstitutionData =
1232 context.getUnifiedSubstitutionData().get(MAIN_SERVICE_TEMPLATE_YAML) == null ? new UnifiedSubstitutionData()
1233 : context.getUnifiedSubstitutionData().get(MAIN_SERVICE_TEMPLATE_YAML);
1234 Map<String, String> substitutionAbstractNodeIds = new HashMap<>();
1235 for (String id : nodeTemplateIds) {
1236 substitutionAbstractNodeIds.put(id, "FSB2");
1239 substitutionAbstractNodeIds.put("", FSB1);
1241 unifiedSubstitutionData.setNodesRelatedAbstractNode(substitutionAbstractNodeIds);
1244 private void checkSTResults(
1245 Map<String, ServiceTemplate> expectedOutserviceTemplates,
1246 ServiceTemplate substitutionServiceTemplate,
1247 ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1248 YamlUtil yamlUtil = new YamlUtil();
1249 if (Objects.nonNull(substitutionServiceTemplate)) {
1250 String substitutionST = "SubstitutionServiceTemplate.yaml";
1251 assertEquals("difference substitution service template: ",
1252 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(substitutionST)),
1253 yamlUtil.objectToYaml(substitutionServiceTemplate));
1255 if (Objects.nonNull(gloablSubstitutionServiceTemplate)) {
1256 assertEquals("difference global substitution service template: ",
1257 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(GLOBAL_SUBSTITUTION_TYPES_SERVICE_TEMPLATE_YAML)),
1258 yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate));
1260 if (Objects.nonNull(mainServiceTemplate)) {
1261 assertEquals("difference main service template: ",
1262 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML)),
1263 yamlUtil.objectToYaml(mainServiceTemplate));
1267 private void checkSTResults(
1268 Map<String, ServiceTemplate> expectedOutserviceTemplates,
1269 String nestedSTFileName, ServiceTemplate nestedServiceTemplate,
1270 ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) {
1271 YamlUtil yamlUtil = new YamlUtil();
1273 if (Objects.nonNull(nestedServiceTemplate)) {
1274 assertEquals("difference nested service template: ",
1275 yamlUtil.objectToYaml(expectedOutserviceTemplates.get(nestedSTFileName)),
1276 yamlUtil.objectToYaml(nestedServiceTemplate));
1278 checkSTResults(expectedOutserviceTemplates, null, gloablSubstitutionServiceTemplate,
1279 mainServiceTemplate);
1283 private void loadInputAndOutputData(String path) throws IOException {
1284 inputServiceTemplates = new HashMap<>();
1285 TestUtils.loadServiceTemplates(path + IN_PREFIX, new ToscaExtensionYamlUtil(),
1286 inputServiceTemplates);
1287 expectedOutserviceTemplates = new HashMap<>();
1288 TestUtils.loadServiceTemplates(path + OUT_PREFIX, new ToscaExtensionYamlUtil(),
1289 expectedOutserviceTemplates);
1293 private void addGetAttInUnifiedCompositionData(EntityConsolidationData entityConsolidationData,
1294 String propertyName, String attributeName,
1295 String nodeTemplateId) {
1296 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1297 getAttrFuncData.setAttributeName(attributeName);
1298 getAttrFuncData.setFieldName(propertyName);
1299 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
1302 private void addOutputGetAttInUnifiedCompositionData(
1303 EntityConsolidationData entityConsolidationData,
1304 String outParamName, String attributeName) {
1305 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
1306 getAttrFuncData.setAttributeName(attributeName);
1307 getAttrFuncData.setFieldName(outParamName);
1308 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
1311 private ConsolidationData createConsolidationData(List<String> computeNodeIds,
1312 List<Pair<String, String>> portTypeToIdList) {
1314 ConsolidationData consolidationData = new ConsolidationData();
1315 String computeNodeTypeName = "org.openecomp.resource.vfc.nodes.heat.FSB2";
1318 .initComputeNodeTypeInConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, computeNodeTypeName, consolidationData);
1319 TestUtils.initPortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, consolidationData);
1321 for (String computeId : computeNodeIds) {
1322 ComputeTemplateConsolidationData computeTemplateConsolidationData =
1323 new ComputeTemplateConsolidationData();
1324 TestUtils.updatePortsInComputeTemplateConsolidationData(portTypeToIdList,
1325 computeTemplateConsolidationData);
1326 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
1327 .getTypeComputeConsolidationData(computeNodeTypeName)
1328 .setComputeTemplateConsolidationData(computeId,
1329 computeTemplateConsolidationData);
1332 for (Pair<String, String> portTypeToId : portTypeToIdList) {
1333 consolidationData.getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
1334 .setPortTemplateConsolidationData(portTypeToId.getRight(),
1335 new PortTemplateConsolidationData());
1338 return consolidationData;
1341 private UnifiedCompositionData createCompositionData(String computeNodeTemplateId,
1342 List<Pair<String, String>> portTypeToIdList) {
1344 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
1345 NodeTemplate computeNodeTemplate =
1346 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), computeNodeTemplateId);
1347 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1348 TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1349 List<RequirementAssignmentData> requirementAssignmentList =
1350 (requirementAssignmentDataList.isPresent()) ? requirementAssignmentDataList.get() : null;
1351 Map<String, List<RequirementAssignmentData>> volume = null;
1352 if (requirementAssignmentList != null) {
1353 volume = getVolume(requirementAssignmentList);
1355 unifiedCompositionData.setComputeTemplateConsolidationData(
1356 TestUtils.createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList,
1358 if (portTypeToIdList != null) {
1359 for (Pair<String, String> port : portTypeToIdList) {
1360 NodeTemplate portNodeTemplate =
1361 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1363 Map<String, List<RequirementAssignmentData>> nodeConnectedOut =
1364 TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1365 PortTemplateConsolidationData portTemplateConsolidationData =
1366 TestUtils.createPortTemplateConsolidationData(port.getRight());
1367 portTemplateConsolidationData.setNodesConnectedOut(nodeConnectedOut);
1368 unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
1371 return unifiedCompositionData;
1374 private List<UnifiedCompositionData> createAbstractSubstituteCompositionDataComputeAndPort() {
1375 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>();
1376 UnifiedCompositionData data1 = createComputeUnifiedCompositionData(FSB1_template);
1377 UnifiedCompositionData data2 = createComputeUnifiedCompositionData(FSB2_template);
1379 List<Pair<String, String>> portTypeToIdList = new ArrayList<>();
1380 ImmutablePair<String, String> portTypePair1 = new ImmutablePair<>(FSB1_INTERNAL,
1382 ImmutablePair<String, String> portTypePair2 = new ImmutablePair<>(FSB2_INTERNAL,
1384 portTypeToIdList.add(portTypePair1);
1385 portTypeToIdList.add(portTypePair2);
1386 addPortDataToCompositionData(portTypeToIdList, data1);
1387 portTypeToIdList.remove(portTypePair1);
1388 portTypeToIdList.remove(portTypePair2);
1389 portTypeToIdList.add(new ImmutablePair<>(FSB1_INTERNAL, FSB1_INTERNAL2));
1390 portTypeToIdList.add(new ImmutablePair<>(FSB2_INTERNAL, FSB2_INTERNAL2));
1391 addPortDataToCompositionData(portTypeToIdList, data2);
1393 unifiedCompositionDataList.add(data1);
1394 unifiedCompositionDataList.add(data2);
1395 return unifiedCompositionDataList;
1399 private UnifiedCompositionData createComputeUnifiedCompositionData(String computeNodeTemplateId) {
1400 NodeTemplate computeNodeTemplate =
1401 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), computeNodeTemplateId);
1402 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
1403 TestUtils.getRequirementAssignmentDataList(computeNodeTemplate, "local_storage");
1404 Map<String, List<RequirementAssignmentData>> volume = null;
1405 if (requirementAssignmentDataList.isPresent()) {
1406 volume = getVolume(requirementAssignmentDataList.get());
1408 UnifiedCompositionData data = new UnifiedCompositionData();
1409 Map<String, List<RequirementAssignmentData>> computeNodeConnectedOut =
1410 TestUtils.getNodeConnectedOutList(computeNodeTemplate, DEPENDENCY);
1411 Map<String, List<RequirementAssignmentData>> computeNodeConnectedIn =
1413 .getNodeConnectedInList(computeNodeTemplateId, inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1415 ComputeTemplateConsolidationData computeTemplateConsolidationData = TestUtils
1416 .createComputeTemplateConsolidationData(computeNodeTemplateId, null, volume);
1417 List<String> computeNodeGroups =
1418 TestUtils.getGroupsForNode(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1419 computeNodeTemplateId);
1420 if (!computeNodeGroups.isEmpty()) {
1421 computeTemplateConsolidationData.setGroupIds(computeNodeGroups);
1423 computeTemplateConsolidationData.setNodesConnectedOut(computeNodeConnectedOut);
1424 computeTemplateConsolidationData.setNodesConnectedIn(computeNodeConnectedIn);
1425 data.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
1429 private void addPortDataToCompositionData(List<Pair<String, String>> portTypeToIdList,
1430 UnifiedCompositionData data) {
1431 ComputeTemplateConsolidationData computeTemplateConsolidationData = data
1432 .getComputeTemplateConsolidationData();
1434 for (Pair<String, String> port : portTypeToIdList) {
1435 NodeTemplate portNodeTemplate =
1436 DataModelUtil.getNodeTemplate(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1438 Optional<List<RequirementAssignmentData>> bindingReqList =
1439 TestUtils.getRequirementAssignmentDataList(portNodeTemplate, "binding");
1441 if (bindingReqList.isPresent()) {
1442 for (RequirementAssignmentData reqData : bindingReqList.get()) {
1443 String nodeId = reqData.getRequirementAssignment().getNode();
1444 if (nodeId.equals(computeTemplateConsolidationData.getNodeTemplateId())) {
1445 computeTemplateConsolidationData.addPort(port.getLeft(), port.getRight());
1449 Map<String, List<RequirementAssignmentData>> portNodeConnectedOut =
1450 TestUtils.getNodeConnectedOutList(portNodeTemplate, "link");
1451 PortTemplateConsolidationData portTemplateConsolidationData = TestUtils
1452 .createPortTemplateConsolidationData(port.getRight());
1453 portTemplateConsolidationData.setNodesConnectedOut(portNodeConnectedOut);
1455 //Add node connected in info to test data
1456 Map<String, List<RequirementAssignmentData>> portNodeConnectedIn =
1457 TestUtils.getNodeConnectedInList(port.getRight(), inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML),
1459 portTemplateConsolidationData.setNodesConnectedIn(portNodeConnectedIn);
1461 //Add group infromation for ports
1462 List<String> portGroups =
1463 TestUtils.getGroupsForNode(inputServiceTemplates.get(MAIN_SERVICE_TEMPLATE_YAML), port.getRight());
1464 portTemplateConsolidationData.setGroupIds(portGroups);
1465 data.addPortTemplateConsolidationData(portTemplateConsolidationData);
1468 addGetAttrForCompute(data);
1469 addGetAttrForPort(data);
1472 private Map<String, List<RequirementAssignmentData>> getVolume(
1473 List<RequirementAssignmentData> requirementAssignmentList) {
1474 Map<String, List<RequirementAssignmentData>> volume = new HashMap<>();
1475 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentList) {
1476 String volumeNodeTemplateId = requirementAssignmentData.getRequirementAssignment().getNode();
1477 volume.computeIfAbsent(volumeNodeTemplateId, k -> new ArrayList<>());
1478 volume.get(volumeNodeTemplateId).add(requirementAssignmentData);
1483 private void addGetAttrForPort(UnifiedCompositionData unifiedCompositionData) {
1484 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1485 .getPortTemplateConsolidationDataList()) {
1486 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL1)) {
1487 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "network_name",
1488 NETWORK_ID, JSA_NET1);
1489 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1490 DEVICE_OWNER, CMAUI_VOLUME1);
1491 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL2)) {
1492 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, TENANT_ID,
1493 NETWORK_ID, JSA_NET1);
1494 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "qos_policy",
1495 NETWORK_ID, JSA_NET1);
1496 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, VOLUME_TYPE,
1497 TENANT_ID, CMAUI_VOLUME1);
1498 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_OAM)) {
1499 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1500 STATUS, CMAUI_VOLUME1);
1505 private void addGetAttrForPort2(UnifiedCompositionData unifiedCompositionData) {
1506 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1507 .getPortTemplateConsolidationDataList()) {
1508 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL1)) {
1509 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, VOLUME_TYPE,
1510 TENANT_ID, CMAUI_VOLUME3);
1511 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL2)) {
1512 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1513 DEVICE_OWNER, CMAUI_VOLUME3);
1514 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, SIZE,
1515 STATUS, CMAUI_VOLUME1);
1520 private void addGetAttrForPortInnerUC(UnifiedCompositionData unifiedCompositionData) {
1521 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1522 .getPortTemplateConsolidationDataList()) {
1523 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL1)) {
1524 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, AVAILABILITY_ZONE,
1525 MYATTR, FSB1_template);
1526 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "metadata",
1527 MYATTR, FSB1_template);
1528 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, "name",
1529 MYATTR, FSB1_template);
1530 addGetAttInUnifiedCompositionData(portTemplateConsolidationData, AVAILABILITY_ZONE,
1531 TENANT_ID, FSB1_template);
1536 private void addGetAttrForCompute(UnifiedCompositionData unifiedCompositionData) {
1537 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1538 "dhcp_agent_ids", ADDRESSES, JSA_NET1);
1539 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1540 VOLUME_TYPE, ADDRESSES, CMAUI_VOLUME1);
1541 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1542 SIZE, ACCESS_IPv6, CMAUI_VOLUME2);
1545 private void addGetAttrForCompute2(UnifiedCompositionData unifiedCompositionData) {
1546 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1547 VOLUME_TYPE, ADDRESSES, CMAUI_VOLUME3);
1548 addGetAttInUnifiedCompositionData(unifiedCompositionData.getComputeTemplateConsolidationData(),
1549 SIZE, USER_DATA_FORMAT, CMAUI_VOLUME3);
1552 private void addOutputGetAttrInForComputeNoConsolidation(
1553 UnifiedCompositionData unifiedCompositionData) {
1554 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1555 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT1, ACCESS_IPv4);
1556 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1557 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT2, ADDRESSES);
1558 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1559 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT1, ADDRESSES);
1560 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1561 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT3, ACCESS_IPv6);
1565 private void addOutputGetAttrInForCompute1WithConsolidation(
1566 UnifiedCompositionData unifiedCompositionData) {
1567 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1568 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT1, ACCESS_IPv4);
1569 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1570 .getComputeTemplateConsolidationData(), COMPLEX_OUTPUT1, ADDRESSES);
1574 private void addOutputGetAttrInForCompute2WithConsolidation(
1575 UnifiedCompositionData unifiedCompositionData) {
1576 addOutputGetAttInUnifiedCompositionData(unifiedCompositionData
1577 .getComputeTemplateConsolidationData(), SIMPLE_OUTPUT2, ADDRESSES);
1580 private void addOutputGetAttrInForPortNoConsolidation(
1581 UnifiedCompositionData unifiedCompositionData) {
1582 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1583 .getPortTemplateConsolidationDataList()) {
1584 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL1)) {
1585 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1587 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT3,
1589 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL2)) {
1590 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT1,
1592 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_OAM)) {
1593 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1599 private void addOutputGetAttrInForPortWithConsolidation1(
1600 UnifiedCompositionData unifiedCompositionData) {
1601 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1602 .getPortTemplateConsolidationDataList()) {
1603 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL2)) {
1604 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT1,
1606 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL1)) {
1607 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT3,
1613 private void addOutputGetAttrInForPortWithConsolidation2(
1614 UnifiedCompositionData unifiedCompositionData) {
1615 for (PortTemplateConsolidationData portTemplateConsolidationData : unifiedCompositionData
1616 .getPortTemplateConsolidationDataList()) {
1617 if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB2_INTERNAL1)) {
1618 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1620 } else if (portTemplateConsolidationData.getNodeTemplateId().equals(FSB1_INTERNAL2)) {
1621 addOutputGetAttInUnifiedCompositionData(portTemplateConsolidationData, COMPLEX_OUTPUT2,
1627 private NodeTemplate getMockNode(String path) throws IOException {
1628 URL resource = this.getClass().getResource(path);
1629 YamlUtil yamlUtil = new YamlUtil();
1630 return yamlUtil.yamlToObject(resource.openStream(), NodeTemplate.class);