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.unifiedmodel.commands;
19 import org.junit.Assert;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
23 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
24 import org.openecomp.sdc.translator.TestUtils;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.SubInterfaceNewNodeTemplateIdGenerator;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
30 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
32 import java.io.IOException;
33 import java.net.URISyntaxException;
36 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
38 private static final String VDBE_UNTR_1_PORT = "vdbe_untr_1_port";
39 private static final String VDBE_UNTR_1_SUBPORTS = "vdbe_untr_1_subports";
40 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
41 private static final String VDBE_UNTR_2_SUBPORTS = "vdbe_untr_2_subports";
42 private static final String SUBINTERFACE_TYPE_NESTED =
43 "org.openecomp.resource.abstract.nodes.heat.subinterface.nested";
45 private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
48 public static void setItUp(){
49 unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
53 public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException, URISyntaxException {
54 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
55 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
57 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
58 if (nodeTemplateId.isPresent()) {
59 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
66 public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException, URISyntaxException {
67 UnifiedCompositionTo unifiedCompositionTo =
68 new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
69 getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
71 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
72 if (nodeTemplateId.isPresent()) {
73 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_1_subports");
78 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_2_SUBPORTS);
79 if (nodeTemplateId.isPresent()) {
80 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_2_subports");
87 public void testGenerateInvalidOriginalNodeTemplateId() throws IOException, URISyntaxException {
88 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
89 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
91 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
92 VDBE_UNTR_1_SUBPORTS + "_Invalid");
93 Assert.assertEquals(nodeTemplateId.isPresent(), false);
96 private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException, URISyntaxException {
97 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
98 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
100 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
101 return serviceTemplate.get();
104 private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException, URISyntaxException {
105 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
106 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
108 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
109 return serviceTemplate.get();
112 private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() {
113 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1);
114 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
115 ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
116 computeTemplateConsolidationData.setNodeTemplateId("vdbe_node_1");
117 unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
118 unifiedCompositionDataList.add(unifiedCompositionData);
119 return unifiedCompositionDataList;
122 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePortAndSubInterface() {
123 List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList();
124 UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
125 ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
126 .getComputeTemplateConsolidationData();
127 List<String> ports = new ArrayList<>(1);
128 ports.add(VDBE_UNTR_1_PORT);
129 Map<String, List<String>> portMap = new HashMap<>();
130 portMap.put(VDBE_UNTR_1_PORT, ports);
131 computeTemplateConsolidationData.setPorts(portMap);
134 PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
135 portTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_PORT);
136 SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData = new
137 SubInterfaceTemplateConsolidationData();
138 subInterfaceTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_SUBPORTS);
139 subInterfaceTemplateConsolidationData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
140 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>(1);
141 subInterfaceTemplateConsolidationDataList.add(subInterfaceTemplateConsolidationData);
142 portTemplateConsolidationData.addSubInterfaceConsolidationData(
143 SUBINTERFACE_TYPE_NESTED,
144 subInterfaceTemplateConsolidationData);
146 List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
147 portTemplateConsolidationDataList.add(portTemplateConsolidationData);
148 unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
149 unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
152 return unifiedCompositionDataList;
155 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType() {
156 List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePortAndSubInterface();
157 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = unifiedCompositionDataList
158 .get(0).getSubInterfaceTemplateConsolidationDataList();
159 SubInterfaceTemplateConsolidationData anotherSubInterfaceData = new SubInterfaceTemplateConsolidationData();
160 anotherSubInterfaceData.setNodeTemplateId(VDBE_UNTR_2_SUBPORTS);
161 anotherSubInterfaceData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
162 subInterfaceTemplateConsolidationDataList.add(anotherSubInterfaceData);
163 unifiedCompositionDataList.get(0).getPortTemplateConsolidationDataList().get(0).addSubInterfaceConsolidationData
164 (SUBINTERFACE_TYPE_NESTED, anotherSubInterfaceData);
165 return unifiedCompositionDataList;
168 private TranslationContext getContext(boolean isMultipleSubInterfaceTest) {
169 FilePortConsolidationData filePortConsolidationData = new FilePortConsolidationData();
170 PortTemplateConsolidationData portTemplateConsolidationData = isMultipleSubInterfaceTest
171 ? getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType().get(0).getPortTemplateConsolidationDataList().get(0)
172 : getUnifiedCompositionDataListWithOnePortAndSubInterface().get(0).getPortTemplateConsolidationDataList().get(0);
173 filePortConsolidationData.setPortTemplateConsolidationData(portTemplateConsolidationData
174 .getNodeTemplateId(), portTemplateConsolidationData);
175 TranslationContext context = new TranslationContext();
176 context.setConsolidationData(new ConsolidationData());
177 context.getConsolidationData().getPortConsolidationData()
178 .setFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, filePortConsolidationData);
179 context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);