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 / PortNewNodeTemplateIdGeneratorTest.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 static org.openecomp.sdc.translator.TestUtils.createInitServiceTemplate;
20
21 import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType;
22 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
23 import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
24 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
25 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
26 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
27 import org.onap.sdc.tosca.datatypes.model.TopologyTemplate;
28 import org.openecomp.sdc.tosca.services.ToscaConstants;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
30 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.UnifiedSubstitutionNodeTemplateIdGenerator;
31 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.PortNewNodeTemplateIdGenerator;
32 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
33 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
34 import org.junit.Assert;
35 import org.junit.BeforeClass;
36 import org.junit.Test;
37
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 PortNewNodeTemplateIdGeneratorTest {
45
46   private static final String SERVER_PCM = "server_pcm";
47   private static final String PCM_PORT_0 = "pcm_port_0";
48   private static final String PCM_PORT_1 = "pcm_port_1";
49
50   private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
51
52   @BeforeClass
53   public static void setItUp(){
54     unifiedSubstitutionNodeTemplateIdGenerator = new PortNewNodeTemplateIdGenerator();
55   }
56
57   @Test
58   public void testGenerateNewPortNodeTemplateId() {
59     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestPortServiceTemplate(), null,
60         getUnifiedCompositionDataListWithOnePort(), null, null);
61     Optional<String>
62         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0);
63     if (nodeTemplateId.isPresent()) {
64       Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port");
65     } else {
66       Assert.fail();
67     }
68   }
69
70   @Test
71   public void testGeneratePortIdNotBoundToServer() {
72     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestInitPortServiceTemplate(), null,
73         getInitUnifiedCompositionDataList(), null, null);
74     Optional<String>
75         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0);
76     Assert.assertEquals(false, nodeTemplateId.isPresent());
77   }
78
79   @Test
80   public void testGeneratePortIdMultiplePortsSameTypeToOneServer() {
81     UnifiedCompositionTo unifiedCompositionTo =
82         new UnifiedCompositionTo(getTestPortServiceTemplateWithTwoPortsOfSameType(), null,
83             getUnifiedCompositionDataListWithTwoPortsOfSameType(), null, null);
84     Optional<String>
85         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_0);
86     if (nodeTemplateId.isPresent()) {
87       Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port_0");
88     } else {
89       Assert.fail();
90     }
91
92     nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo, PCM_PORT_1);
93     if (nodeTemplateId.isPresent()) {
94       Assert.assertEquals(nodeTemplateId.get(), "pcm_server_pcm_port_1");
95     } else {
96       Assert.fail();
97     }
98 }
99
100   @Test
101   public void testGenerateInvalidOriginalNodeTemplateId() {
102     UnifiedCompositionTo unifiedCompositionTo = new UnifiedCompositionTo(getTestPortServiceTemplate(), null,
103         getUnifiedCompositionDataListWithOnePort(), null, null);
104     Optional<String>
105         nodeTemplateId = unifiedSubstitutionNodeTemplateIdGenerator.generate(unifiedCompositionTo,
106         PCM_PORT_0 + "_Invalid");
107     Assert.assertEquals(nodeTemplateId.isPresent(), false);
108   }
109
110   private static ServiceTemplate getTestInitPortServiceTemplate() {
111     ServiceTemplate serviceTemplate = createInitServiceTemplate();
112     TopologyTemplate topologyTemplate = serviceTemplate.getTopology_template();
113     NodeTemplate nodeTemplate = new NodeTemplate();
114     nodeTemplate.setType("org.openecomp.resource.vfc.nodes.heat.pcm_server");
115     Map<String, NodeTemplate> nodeTemplateMap = new HashMap<>();
116     nodeTemplateMap.put(SERVER_PCM, nodeTemplate);
117     NodeTemplate portNodeTemplate = new NodeTemplate();
118     portNodeTemplate.setType(ToscaNodeType.NEUTRON_PORT);
119     nodeTemplateMap.put(PCM_PORT_0, portNodeTemplate);
120     topologyTemplate.setNode_templates(nodeTemplateMap);
121     return serviceTemplate;
122   }
123
124   private static ServiceTemplate getTestPortServiceTemplate() {
125     ServiceTemplate serviceTemplate = getTestInitPortServiceTemplate();
126     NodeTemplate portNodeTemplate = serviceTemplate.getTopology_template().getNode_templates().get(PCM_PORT_0);
127     Map<String, RequirementAssignment> portBindingToServer = new HashMap<>();
128     RequirementAssignment binding = new RequirementAssignment();
129     binding.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO);
130     binding.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE);
131     binding.setNode(SERVER_PCM);
132     portBindingToServer.put(ToscaConstants.BINDING_REQUIREMENT_ID, binding);
133     List<Map<String, RequirementAssignment>> requirements = new ArrayList<>(1);
134     requirements.add(portBindingToServer);
135     portNodeTemplate.setRequirements(requirements);
136     return serviceTemplate;
137   }
138
139   private static ServiceTemplate getTestPortServiceTemplateWithTwoPortsOfSameType() {
140     ServiceTemplate serviceTemplate = getTestInitPortServiceTemplate();
141     Map<String, NodeTemplate> nodeTemplateMap = serviceTemplate.getTopology_template().getNode_templates();
142     NodeTemplate anotherPortNodeTemplate = new NodeTemplate();
143     anotherPortNodeTemplate.setType(ToscaNodeType.NEUTRON_PORT);
144     nodeTemplateMap.put(PCM_PORT_1, anotherPortNodeTemplate);
145
146     NodeTemplate portNodeTemplate = serviceTemplate.getTopology_template().getNode_templates().get(PCM_PORT_0);
147     addBindingToServer(portNodeTemplate);
148     addBindingToServer(anotherPortNodeTemplate);
149     return serviceTemplate;
150   }
151
152   private List<UnifiedCompositionData> getInitUnifiedCompositionDataList() {
153     List<UnifiedCompositionData> unifiedCompositionDataList = new ArrayList<>(1);
154     UnifiedCompositionData unifiedCompositionData = new UnifiedCompositionData();
155     ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
156     computeTemplateConsolidationData.setNodeTemplateId(SERVER_PCM);
157     unifiedCompositionData.setComputeTemplateConsolidationData(computeTemplateConsolidationData);
158     unifiedCompositionDataList.add(unifiedCompositionData);
159     return unifiedCompositionDataList;
160   }
161
162   private List<UnifiedCompositionData> getUnifiedCompositionDataListWithOnePort() {
163     List<UnifiedCompositionData> unifiedCompositionDataList = getInitUnifiedCompositionDataList();
164     ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionDataList.get(0)
165         .getComputeTemplateConsolidationData();
166     List<String> ports = new ArrayList<>(1);
167     ports.add(PCM_PORT_0);
168     Map<String, List<String>> portMap = new HashMap<>();
169     portMap.put("pcm_port", ports);
170     computeTemplateConsolidationData.setPorts(portMap);
171     return unifiedCompositionDataList;
172   }
173
174   private List<UnifiedCompositionData> getUnifiedCompositionDataListWithTwoPortsOfSameType() {
175     List<UnifiedCompositionData> unifiedCompositionDataList = getUnifiedCompositionDataListWithOnePort();
176     ComputeTemplateConsolidationData computeTemplateConsolidationData = unifiedCompositionDataList.get(0)
177         .getComputeTemplateConsolidationData();
178     List<String> ports = new ArrayList<>(2);
179     ports.add(PCM_PORT_0);
180     ports.add(PCM_PORT_1);
181     Map<String, List<String>> portMap = new HashMap<>();
182     portMap.put("pcm_port", ports);
183     computeTemplateConsolidationData.setPorts(portMap);
184     return unifiedCompositionDataList;
185   }
186
187   private static void addBindingToServer(NodeTemplate portNodeTemplate) {
188     Map<String, RequirementAssignment> portBindingToServer = new HashMap<>();
189     RequirementAssignment binding = new RequirementAssignment();
190     binding.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO);
191     binding.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE);
192     binding.setNode(SERVER_PCM);
193     portBindingToServer.put(ToscaConstants.BINDING_REQUIREMENT_ID, binding);
194     List<Map<String, RequirementAssignment>> requirements = new ArrayList<>(1);
195     requirements.add(portBindingToServer);
196     portNodeTemplate.setRequirements(requirements);
197   }
198 }