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.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
20 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
21 import org.openecomp.sdc.translator.TestUtils;
22 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
23 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
24 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.SubInterfaceNewNodeTemplateIdGenerator;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
30 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
31 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
32 import org.junit.Assert;
33 import org.junit.BeforeClass;
34 import org.junit.Test;
36 import java.io.IOException;
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.List;
41 import java.util.Optional;
43 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
45 private static final String VDBE_UNTR_1_PORT = "vdbe_untr_1_port";
46 private static final String VDBE_UNTR_1_SUBPORTS = "vdbe_untr_1_subports";
47 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
48 private static final String VDBE_UNTR_2_SUBPORTS = "vdbe_untr_2_subports";
49 private static final String SUBINTERFACE_TYPE_NESTED =
50 "org.openecomp.resource.abstract.nodes.heat.subinterface.nested";
52 private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
55 public static void setItUp(){
56 unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
60 public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException {
61 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
62 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
64 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
65 if (nodeTemplateId.isPresent()) {
66 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
73 public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException {
74 UnifiedCompositionTo unifiedCompositionTo =
75 new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
76 getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
78 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
79 if (nodeTemplateId.isPresent()) {
80 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_1_subports");
85 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_2_SUBPORTS);
86 if (nodeTemplateId.isPresent()) {
87 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_2_subports");
94 public void testGenerateInvalidOriginalNodeTemplateId() throws IOException {
95 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
96 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
98 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
99 VDBE_UNTR_1_SUBPORTS + "_Invalid");
100 Assert.assertEquals(nodeTemplateId.isPresent(), false);
103 private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException {
104 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
105 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
107 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
108 return serviceTemplate.get();
111 private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException {
112 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
113 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
115 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
116 return serviceTemplate.get();
119 private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() {
120 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1);
121 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
122 ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
123 computeTemplateConsolidationData.setNodeTemplateId("vdbe_node_1");
124 unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
125 unifiedCompositionDataList.add(unifiedCompositionData);
126 return unifiedCompositionDataList;
129 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePortAndSubInterface() {
130 List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList();
131 UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
132 ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
133 .getComputeTemplateConsolidationData();
134 List<String> ports = new ArrayList<>(1);
135 ports.add(VDBE_UNTR_1_PORT);
136 Map<String, List<String>> portMap = new HashMap<>();
137 portMap.put(VDBE_UNTR_1_PORT, ports);
138 computeTemplateConsolidationData.setPorts(portMap);
141 PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
142 portTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_PORT);
143 SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData = new
144 SubInterfaceTemplateConsolidationData();
145 subInterfaceTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_SUBPORTS);
146 subInterfaceTemplateConsolidationData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
147 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>(1);
148 subInterfaceTemplateConsolidationDataList.add(subInterfaceTemplateConsolidationData);
149 portTemplateConsolidationData.addSubInterfaceConsolidationData(
150 SUBINTERFACE_TYPE_NESTED,
151 subInterfaceTemplateConsolidationData);
153 List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
154 portTemplateConsolidationDataList.add(portTemplateConsolidationData);
155 unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
156 unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
159 return unifiedCompositionDataList;
162 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType() {
163 List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePortAndSubInterface();
164 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = unifiedCompositionDataList
165 .get(0).getSubInterfaceTemplateConsolidationDataList();
166 SubInterfaceTemplateConsolidationData anotherSubInterfaceData = new SubInterfaceTemplateConsolidationData();
167 anotherSubInterfaceData.setNodeTemplateId(VDBE_UNTR_2_SUBPORTS);
168 anotherSubInterfaceData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
169 subInterfaceTemplateConsolidationDataList.add(anotherSubInterfaceData);
170 unifiedCompositionDataList.get(0).getPortTemplateConsolidationDataList().get(0).addSubInterfaceConsolidationData
171 (SUBINTERFACE_TYPE_NESTED, anotherSubInterfaceData);
172 return unifiedCompositionDataList;
175 private TranslationContext getContext(boolean isMultipleSubInterfaceTest) {
176 FilePortConsolidationData filePortConsolidationData = new FilePortConsolidationData();
177 PortTemplateConsolidationData portTemplateConsolidationData = isMultipleSubInterfaceTest
178 ? getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType().get(0).getPortTemplateConsolidationDataList().get(0)
179 : getUnifiedCompositionDataListWithOnePortAndSubInterface().get(0).getPortTemplateConsolidationDataList().get(0);
180 filePortConsolidationData.setPortTemplateConsolidationData(portTemplateConsolidationData
181 .getNodeTemplateId(), portTemplateConsolidationData);
182 TranslationContext context = new TranslationContext();
183 context.setConsolidationData(new ConsolidationData());
184 context.getConsolidationData().getPortConsolidationData()
185 .setFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, filePortConsolidationData);
186 context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);