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.impl.resourcetranslation;
19 import com.google.common.collect.ArrayListMultimap;
20 import com.google.common.collect.ListMultimap;
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
25 import org.openecomp.sdc.heat.datatypes.model.Resource;
26 import org.openecomp.sdc.heat.services.HeatConstants;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
30 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
32 import java.io.IOException;
33 import java.util.Arrays;
34 import java.util.HashMap;
35 import java.util.List;
37 import java.util.Optional;
39 public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest {
41 private static final String PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST = "vdbe_untr_vmi";
42 private static final int ONE = 1;
43 private static final int TWO = 2;
44 private static final String NETWORK_ROLE_INOUT_ATTR_TEST = "untr";
45 private static final String NESTED_FILE_NAME_INOUT_ATTR_TEST = "nested.yml";
46 private static final String INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST =
47 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/inputfiles";
48 private static final String INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE =
49 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/portNetworkRole/inputfiles";
50 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
55 public void setUp() throws IOException {
56 // do not delete this function. it prevents the superclass setup from running
60 public void testTranslateVlanToInterfaceNestedConnection() throws Exception {
62 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/inputfiles";
64 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/expectedoutputfiles";
65 initTranslatorAndTranslate();
70 public void testTranslateVlanToInterfaceNestedInOutAttr() throws Exception {
71 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
73 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr" +
74 "/expectedoutputfiles";
75 initTranslatorAndTranslate();
78 Assert.assertNotNull(this.translationContext.getConsolidationData().getPortConsolidationData()
79 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
80 .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST));
82 PortTemplateConsolidationData portTemplateConsolidationData =
83 this.translationContext.getConsolidationData().getPortConsolidationData()
84 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
85 .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST);
86 ListMultimap<String, SubInterfaceTemplateConsolidationData> subInfMap = ArrayListMultimap.create();
87 portTemplateConsolidationData.copyMappedInto(subInfMap);
88 List<SubInterfaceTemplateConsolidationData> subInfList =
89 subInfMap.get("org.openecomp.resource.abstract.nodes.heat.subinterface.nested");
91 Assert.assertEquals(ONE, subInfList.size());
92 SubInterfaceTemplateConsolidationData data = subInfList.get(0);
94 Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST, data.getNetworkRole());
95 Assert.assertEquals(ONE, data.getNodesConnectedIn().size());
96 Assert.assertEquals(ONE, data.getNodesConnectedOut().size());
97 Assert.assertEquals(TWO, data.getNodesConnectedOut().get("control_int_net").size());
98 Assert.assertEquals(ONE, data.getNodesGetAttrIn().size());
99 Assert.assertEquals(ONE, data.getNodesGetAttrOut().size());
100 Assert.assertEquals(ONE, data.getOutputParametersGetAttrIn().size());
105 public void testGetNetworkRoleFromResourceUtil() throws Exception {
106 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
107 initTranslatorAndTranslate();
108 Resource targetResource = new Resource();
109 targetResource.setType(NESTED_FILE_NAME_INOUT_ATTR_TEST);
111 Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromSubInterfaceId(targetResource, this
112 .translationContext);
114 Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get());
118 public void testGetNetworkRoleFromResourceUtil_Port() throws Exception {
119 inputFilesPath = INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE;
120 initTranslatorAndTranslate();
121 List<String> validNeutronPortTemplateIds = Arrays.asList("vdbe_0_oam_port_1", "vdbe_oam_port", "vdbe_oam_port_2",
122 "vdbe_0_int_oam_port_1", "vdbe_int_oam_port", "vdbe_int_oam_port_2");
123 validatePortNetworkRole(validNeutronPortTemplateIds, "oam");
125 List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi");
126 validatePortNetworkRole(validVmiPortTemplateIds, "untr");
128 List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2",
129 "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1");
130 validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null);
135 public void testSubInterfaceResourceNetworkRolePositive() throws Exception {
136 List<String> subInterfaceResourceIds=Arrays.asList("vm_type_11_subint_networkrole_vmi_11",
137 "v_subint_networkrole_vmi", "v_1_subint_networkrole_vmi", "v_subint_networkrole_vmi_11",
138 "vm_type_subint_networkrole_vmi_11", "vm_type_11_subint_networkrole_vmi",
139 "vm_type_subint_networkrole_vmi");
141 subInterfaceResourceIds.forEach(resourceId -> {
142 Optional<String> networkRole = HeatToToscaUtil.extractNetworkRoleFromSubInterfaceId(
144 HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource());
145 Assert.assertTrue(networkRole.isPresent()
146 && "networkrole".equals(networkRole.get()));
152 public void testSubInterfaceResourceNetworkRoleNegative() throws Exception {
153 List<String> subInterfaceResourceIds=Arrays.asList("vm_type_11_subint_vmi_11",
154 "vm_type_11_subint_11_vmi_11");
156 subInterfaceResourceIds.forEach(resourceId -> {
157 Optional<String> networkRole = HeatToToscaUtil.extractNetworkRoleFromSubInterfaceId(
159 HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource());
160 Assert.assertFalse(networkRole.isPresent());
166 public void testIsSubInterfaceResourceUtil() throws Exception {
167 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
168 initTranslatorAndTranslate();
169 Resource targetResource = new Resource();
170 targetResource.setType(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource());
171 Map<String, Object> propetyMap = new HashMap<>();
172 Map<String, Object> resourceDefPropsMap = new HashMap<>();
173 resourceDefPropsMap.put("type", NESTED_FILE_NAME_INOUT_ATTR_TEST);
174 propetyMap.put(HeatConstants.RESOURCE_DEF_PROPERTY_NAME, resourceDefPropsMap);
175 targetResource.setProperties(propetyMap);
177 Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this
178 .translationContext));
182 public void testTranslateVlanToNetMultiNestedConnection() throws Exception {
184 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles";
186 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels" +
187 "/expectedoutputfiles";
188 initTranslatorAndTranslate();
192 private void validatePortNetworkRole(List<String> portNodeTemplateIds, String expectedNetworkRole) {
193 FilePortConsolidationData filePortConsolidationData =
194 translationContext.getConsolidationData().getPortConsolidationData()
195 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);
196 for (String portNodeTemplateId : portNodeTemplateIds) {
197 PortTemplateConsolidationData portTemplateConsolidationData =
198 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
199 Assert.assertEquals(expectedNetworkRole, portTemplateConsolidationData.getNetworkRole());