b33df907d956e76e6269d201d47128f046f0789f
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / test / java / org / openecomp / sdc / translator / services / heattotosca / unifiedmodel / commands / SubInterfaceNewNodeTemplateIdGeneratorTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.openecomp.sdc.translator.services.heattotosca.unifiedmodel.commands;
18
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;
36
37 import java.io.IOException;
38 import java.util.ArrayList;
39 import java.util.HashMap;
40 import java.util.List;
41 import java.util.Map;
42 import java.util.Optional;
43
44 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
45
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";
52
53   private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
54
55   @BeforeClass
56   public static void setItUp(){
57     unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
58   }
59
60   @Test
61   public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException {
62     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
63         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
64     Optional<String>
65         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
66     if (nodeTemplateId.isPresent()) {
67       Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
68     } else {
69       Assert.fail();
70     }
71   }
72
73   @Test
74   public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException {
75     UnifiedCompositionTo unifiedCompositionTo =
76         new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
77             getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
78     Optional<String>
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");
82     } else {
83       Assert.fail();
84     }
85
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");
89     } else {
90       Assert.fail();
91     }
92   }
93
94   @Test
95   public void testGenerateInvalidOriginalNodeTemplateId() throws IOException {
96     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
97         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
98     Optional<String>
99         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
100         VDBE_UNTR_1_SUBPORTS + "_Invalid");
101     Assert.assertEquals(nodeTemplateId.isPresent(), false);
102   }
103
104   private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException {
105     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
106         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
107             null, null);
108     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
109     return serviceTemplate.get();
110   }
111
112   private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException {
113     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
114         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
115             null, null);
116     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
117     return serviceTemplate.get();
118   }
119
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;
128   }
129
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);
140
141
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);
153
154     List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
155     portTemplateConsolidationDataList.add(portTemplateConsolidationData);
156     unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
157     unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
158
159
160     return unifiedCompositionDataList;
161   }
162
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;
174   }
175
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);
188     return context;
189   }
190
191 }