re base code
[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.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.*;
31
32 import java.io.IOException;
33 import java.net.URISyntaxException;
34 import java.util.*;
35
36 public class SubInterfaceNewNodeTemplateIdGeneratorTest {
37
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";
44
45   private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
46
47   @BeforeClass
48   public static void setItUp(){
49     unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
50   }
51
52   @Test
53   public void testGenerateNewSubInterfaceNodeTemplateId() throws IOException, URISyntaxException {
54     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
55         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
56     Optional<String>
57         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, VDBE_UNTR_1_SUBPORTS);
58     if (nodeTemplateId.isPresent()) {
59       Assert.assertEquals(nodeTemplateId.get(), "vdbe_vdbe_untr_1_port_nested");
60     } else {
61       Assert.fail();
62     }
63   }
64
65   @Test
66   public void testGeneratePortIdMultipleSubInterfacesOfSameTypeToOnePort() throws IOException, URISyntaxException  {
67     UnifiedCompositionTo unifiedCompositionTo =
68         new UnifiedCompositionTo(getTestSubInterfaceServiceTemplateMultipleVlan(), null,
69             getUnifiedCompositionDataListWithTwoSubInterfacesOfSameType(), getContext(true), null);
70     Optional<String>
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");
74     } else {
75       Assert.fail();
76     }
77
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");
81     } else {
82       Assert.fail();
83     }
84   }
85
86   @Test
87   public void testGenerateInvalidOriginalNodeTemplateId() throws IOException, URISyntaxException  {
88     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitSubInterfaceServiceTemplate(), null,
89         getUnifiedCompositionDataListWithOnePortAndSubInterface(), getContext(false), null);
90     Optional<String>
91         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
92         VDBE_UNTR_1_SUBPORTS + "_Invalid");
93     Assert.assertEquals(nodeTemplateId.isPresent(), false);
94   }
95
96   private ServiceTemplate getTestInitSubInterfaceServiceTemplate() throws IOException, URISyntaxException  {
97     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
98         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/oneportsubinterfacetype",
99             null, null);
100     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
101     return serviceTemplate.get();
102   }
103
104   private ServiceTemplate getTestSubInterfaceServiceTemplateMultipleVlan() throws IOException, URISyntaxException  {
105     ToscaServiceModel serviceModel = TestUtils.loadToscaServiceModel
106         ("/mock/services/heattotosca/unifiedComposition/commands/newnodetemplateidgenerator/multiplevlansametype",
107             null, null);
108     Optional<ServiceTemplate> serviceTemplate = serviceModel.getServiceTemplate("MainServiceTemplate.yaml");
109     return serviceTemplate.get();
110   }
111
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;
120   }
121
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);
132
133
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);
145
146     List<PortTemplateConsolidationData> portTemplateConsolidationDataList = new ArrayList<>(1);
147     portTemplateConsolidationDataList.add(portTemplateConsolidationData);
148     unifiedCompositionData.setPortTemplateConsolidationDataList(portTemplateConsolidationDataList);
149     unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(subInterfaceTemplateConsolidationDataList);
150
151
152     return unifiedCompositionDataList;
153   }
154
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;
166   }
167
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);
180     return context;
181   }
182
183 }