Rename packages from openecomp to onap.
[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.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;
35
36 import java.io.IOException;
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.List;
40 import java.util.Map;
41 import java.util.Optional;
42
43 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
44
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";
51
52   private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
53
54   @BeforeClass
55   public static void setItUp(){
56     unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
57   }
58
59   @Test
60   public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException {
61     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
62         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
63     Optional<String>
64         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
65     if (nodeTemplateId.isPresent()) {
66       Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
67     } else {
68       Assert.fail();
69     }
70   }
71
72   @Test
73   public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException {
74     UnifiedCompositionTo unifiedCompositionTo =
75         new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
76             getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
77     Optional<String>
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");
81     } else {
82       Assert.fail();
83     }
84
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");
88     } else {
89       Assert.fail();
90     }
91   }
92
93   @Test
94   public void testGenerateInvalidOriginalNodeTemplateId() throws IOException {
95     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
96         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
97     Optional<String>
98         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
99         VDBE_UNTR_1_SUBPORTS + "_Invalid");
100     Assert.assertEquals(nodeTemplateId.isPresent(), false);
101   }
102
103   private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException {
104     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
105         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
106             null, null);
107     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
108     return serviceTemplate.get();
109   }
110
111   private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException {
112     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
113         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
114             null, null);
115     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
116     return serviceTemplate.get();
117   }
118
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;
127   }
128
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);
139
140
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);
152
153     List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
154     portTemplateConsolidationDataList.add(portTemplateConsolidationData);
155     unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
156     unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
157
158
159     return unifiedCompositionDataList;
160   }
161
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;
173   }
174
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);
187     return context;
188   }
189
190 }