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.getNodesGetAttrIn().size());
96 Assert.assertEquals(ONE, data.getNodesGetAttrOut().size());
97 Assert.assertEquals(ONE, data.getOutputParametersGetAttrIn().size());
102 public void testGetNetworkRoleFromResourceUtil() throws Exception {
103 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
104 initTranslatorAndTranslate();
105 Resource targetResource = new Resource();
106 targetResource.setType(NESTED_FILE_NAME_INOUT_ATTR_TEST);
108 Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromSubInterfaceId(targetResource, this
109 .translationContext);
111 Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get());
115 public void testGetNetworkRoleFromResourceUtil_Port() throws Exception {
116 inputFilesPath = INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE;
117 initTranslatorAndTranslate();
118 List<String> validNeutronPortTemplateIds = Arrays.asList("vdbe_0_oam_port_1", "vdbe_oam_port", "vdbe_oam_port_2",
119 "vdbe_0_int_oam_port_1", "vdbe_int_oam_port", "vdbe_int_oam_port_2");
120 validatePortNetworkRole(validNeutronPortTemplateIds, "oam");
122 List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi");
123 validatePortNetworkRole(validVmiPortTemplateIds, "untr");
125 List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2",
126 "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1");
127 validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null);
132 public void testSubInterfaceResourceNetworkRolePositive() throws Exception {
133 List<String> subInterfaceResourceIds=Arrays.asList("vm_type_11_subint_networkrole_vmi_11",
134 "v_subint_networkrole_vmi", "v_1_subint_networkrole_vmi", "v_subint_networkrole_vmi_11",
135 "vm_type_subint_networkrole_vmi_11", "vm_type_11_subint_networkrole_vmi",
136 "vm_type_subint_networkrole_vmi");
138 subInterfaceResourceIds.forEach(resourceId -> {
139 Optional<String> networkRole = HeatToToscaUtil.extractNetworkRoleFromSubInterfaceId(
141 HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource());
142 Assert.assertTrue(networkRole.isPresent()
143 && "networkrole".equals(networkRole.get()));
149 public void testSubInterfaceResourceNetworkRoleNegative() throws Exception {
150 List<String> subInterfaceResourceIds=Arrays.asList("vm_type_11_subint_vmi_11",
151 "vm_type_11_subint_11_vmi_11");
153 subInterfaceResourceIds.forEach(resourceId -> {
154 Optional<String> networkRole = HeatToToscaUtil.extractNetworkRoleFromSubInterfaceId(
156 HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource());
157 Assert.assertFalse(networkRole.isPresent());
163 public void testIsSubInterfaceResourceUtil() throws Exception {
164 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
165 initTranslatorAndTranslate();
166 Resource targetResource = new Resource();
167 targetResource.setType(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource());
168 Map<String, Object> propetyMap = new HashMap<>();
169 Map<String, Object> resourceDefPropsMap = new HashMap<>();
170 resourceDefPropsMap.put("type", NESTED_FILE_NAME_INOUT_ATTR_TEST);
171 propetyMap.put(HeatConstants.RESOURCE_DEF_PROPERTY_NAME, resourceDefPropsMap);
172 targetResource.setProperties(propetyMap);
174 Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this
175 .translationContext));
179 public void testTranslateVlanToNetMultiNestedConnection() throws Exception {
181 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles";
183 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels" +
184 "/expectedoutputfiles";
185 initTranslatorAndTranslate();
189 private void validatePortNetworkRole(List<String> portNodeTemplateIds, String expectedNetworkRole) {
190 FilePortConsolidationData filePortConsolidationData =
191 translationContext.getConsolidationData().getPortConsolidationData()
192 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);
193 for (String portNodeTemplateId : portNodeTemplateIds) {
194 PortTemplateConsolidationData portTemplateConsolidationData =
195 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
196 Assert.assertEquals(expectedNetworkRole, portTemplateConsolidationData.getNetworkRole());