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.openecomp.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.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
33 import org.junit.Assert;
34 import org.junit.BeforeClass;
35 import org.junit.Test;
37 import java.io.IOException;
38 import java.util.ArrayList;
39 import java.util.HashMap;
40 import java.util.List;
42 import java.util.Optional;
44 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
46 private static final String VDBE_UNTR_1_PORT = "vdbe_untr_1_port";
47 private static final String VDBE_UNTR_1_SUBPORTS = "vdbe_untr_1_subports";
48 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
49 private static final String VDBE_UNTR_2_SUBPORTS = "vdbe_untr_2_subports";
50 private static final String SUBINTERFACE_TYPE_NESTED =
51 "org.openecomp.resource.abstract.nodes.heat.subinterface.nested";
53 private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
56 public static void setItUp(){
57 unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
61 public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException {
62 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
63 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
65 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
66 if (nodeTemplateId.isPresent()) {
67 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
74 public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException {
75 UnifiedCompositionTo unifiedCompositionTo =
76 new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
77 getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
79 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
80 if (nodeTemplateId.isPresent()) {
81 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_1_subports");
86 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_2_SUBPORTS);
87 if (nodeTemplateId.isPresent()) {
88 Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_vdbe_untr_2_subports");
95 public void testGenerateInvalidOriginalNodeTemplateId() throws IOException {
96 UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
97 getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
99 nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
100 VDBE_UNTR_1_SUBPORTS + "_Invalid");
101 Assert.assertEquals(nodeTemplateId.isPresent(), false);
104 private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException {
105 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
106 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
108 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
109 return serviceTemplate.get();
112 private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException {
113 ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
114 ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
116 Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
117 return serviceTemplate.get();
120 private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() {
121 List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1);
122 UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
123 ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
124 computeTemplateConsolidationData.setNodeTemplateId("vdbe_node_1");
125 unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
126 unifiedCompositionDataList.add(unifiedCompositionData);
127 return unifiedCompositionDataList;
130 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePortAndSubInterface() {
131 List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList();
132 UnifiedCompositionData unifiedCompositionData = unifiedCompositionDataList.get(0);
133 ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionData
134 .getComputeTemplateConsolidationData();
135 List<String> ports = new ArrayList<>(1);
136 ports.add(VDBE_UNTR_1_PORT);
137 Map<String, List<String>> portMap = new HashMap<>();
138 portMap.put(VDBE_UNTR_1_PORT, ports);
139 computeTemplateConsolidationData.setPorts(portMap);
142 PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
143 portTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_PORT);
144 SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData = new
145 SubInterfaceTemplateConsolidationData();
146 subInterfaceTemplateConsolidationData.setNodeTemplateId(VDBE_UNTR_1_SUBPORTS);
147 subInterfaceTemplateConsolidationData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
148 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>(1);
149 subInterfaceTemplateConsolidationDataList.add(subInterfaceTemplateConsolidationData);
150 portTemplateConsolidationData.addSubInterfaceConsolidationData(
151 SUBINTERFACE_TYPE_NESTED,
152 subInterfaceTemplateConsolidationData);
154 List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
155 portTemplateConsolidationDataList.add(portTemplateConsolidationData);
156 unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
157 unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
160 return unifiedCompositionDataList;
163 private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType() {
164 List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePortAndSubInterface();
165 List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = unifiedCompositionDataList
166 .get(0).getSubInterfaceTemplateConsolidationDataList();
167 SubInterfaceTemplateConsolidationData anotherSubInterfaceData = new SubInterfaceTemplateConsolidationData();
168 anotherSubInterfaceData.setNodeTemplateId(VDBE_UNTR_2_SUBPORTS);
169 anotherSubInterfaceData.setParentPortNodeTemplateId(VDBE_UNTR_1_PORT);
170 subInterfaceTemplateConsolidationDataList.add(anotherSubInterfaceData);
171 unifiedCompositionDataList.get(0).getPortTemplateConsolidationDataList().get(0).addSubInterfaceConsolidationData
172 (SUBINTERFACE_TYPE_NESTED, anotherSubInterfaceData);
173 return unifiedCompositionDataList;
176 private TranslationContext getContext(boolean isMultipleSubInterfaceTest) {
177 FilePortConsolidationData filePortConsolidationData = new FilePortConsolidationData();
178 PortTemplateConsolidationData portTemplateConsolidationData = isMultipleSubInterfaceTest
179 ? getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType().get(0).getPortTemplateConsolidationDataList().get(0)
180 : getUnifiedCompositionDataListWithOnePortAndSubInterface().get(0).getPortTemplateConsolidationDataList().get(0);
181 filePortConsolidationData.setPortTemplateConsolidationData(portTemplateConsolidationData
182 .getNodeTemplateId(), portTemplateConsolidationData);
183 TranslationContext context = new TranslationContext();
184 context.setConsolidationData(new ConsolidationData());
185 context.getConsolidationData().getPortConsolidationData()
186 .setFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML, filePortConsolidationData);
187 context.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);