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 org.junit.Assert;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
23 import org.openecomp.sdc.heat.datatypes.model.Resource;
24 import org.openecomp.sdc.heat.services.HeatConstants;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
28 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
30 import java.io.IOException;
31 import java.util.Arrays;
32 import java.util.HashMap;
33 import java.util.List;
35 import java.util.Optional;
37 public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest {
39 private static final String PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST = "vdbe_untr_1_port";
40 private static final int ONE = 1;
41 private static final int TWO = 2;
42 private static final String NETWORK_ROLE_INOUT_ATTR_TEST = "untr";
43 private static final String NESTED_FILE_NAME_INOUT_ATTR_TEST = "nested.yml";
44 private static final String INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST =
45 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/inputfiles";
46 private static final String INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE =
47 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/portNetworkRole/inputfiles";
48 private static final String MAIN_SERVICE_TEMPLATE_YAML = "MainServiceTemplate.yaml";
53 public void setUp() throws IOException {
54 // do not delete this function. it prevents the superclass setup from running
58 public void testTranslateVlanToInterfaceNestedConnection() throws Exception {
60 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/inputfiles";
62 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/expectedoutputfiles";
63 initTranslatorAndTranslate();
68 public void testTranslateVlanToInterfaceNestedInOutAttr() throws Exception {
69 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
71 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr" +
72 "/expectedoutputfiles";
73 initTranslatorAndTranslate();
76 Assert.assertNotNull(this.translationContext.getConsolidationData().getPortConsolidationData()
77 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
78 .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST));
80 List<SubInterfaceTemplateConsolidationData> subInfList =
81 this.translationContext.getConsolidationData().getPortConsolidationData()
82 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
83 .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST)
84 .getSubInterfaceConsolidationData("org.openecomp.resource.abstract.nodes.heat.subinterface.nested");
86 Assert.assertEquals(ONE, subInfList.size());
87 SubInterfaceTemplateConsolidationData data = subInfList.get(0);
89 Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST, data.getNetworkRole());
90 Assert.assertEquals(ONE, data.getNodesConnectedIn().size());
91 Assert.assertEquals(ONE, data.getNodesConnectedOut().size());
92 Assert.assertEquals(TWO, data.getNodesConnectedOut().get("control_int_net").size());
93 Assert.assertEquals(ONE, data.getNodesGetAttrIn().size());
94 Assert.assertEquals(ONE, data.getNodesGetAttrOut().size());
95 Assert.assertEquals(ONE, data.getOutputParametersGetAttrIn().size());
100 public void testGetNetworkRoleFromResourceUtil() throws Exception {
101 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
102 initTranslatorAndTranslate();
103 Resource targetResource = new Resource();
104 targetResource.setType(NESTED_FILE_NAME_INOUT_ATTR_TEST);
106 Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromResource(targetResource, this
107 .translationContext);
109 Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get());
113 public void testGetNetworkRoleFromResourceUtil_Port() throws Exception {
114 inputFilesPath = INPUT_FILE_PATH_FOR_PORT_NETWORK_ROLE;
115 initTranslatorAndTranslate();
116 List<String> validNeutronPortTemplateIds = Arrays.asList("vdbe_0_oam_port_1", "vdbe_oam_port", "vdbe_oam_port_2");
117 validatePortNetworkRole(validNeutronPortTemplateIds, "oam");
119 List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi");
120 validatePortNetworkRole(validVmiPortTemplateIds, "untr");
122 List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2",
123 "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1");
124 validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null);
130 public void testIsSubInterfaceResourceUtil() throws Exception {
131 inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
132 initTranslatorAndTranslate();
133 Resource targetResource = new Resource();
134 targetResource.setType(HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource());
135 Map<String, Object> propetyMap = new HashMap<>();
136 Map<String, Object> resourceDefPropsMap = new HashMap<>();
137 resourceDefPropsMap.put("type", NESTED_FILE_NAME_INOUT_ATTR_TEST);
138 propetyMap.put(HeatConstants.RESOURCE_DEF_PROPERTY_NAME, resourceDefPropsMap);
139 targetResource.setProperties(propetyMap);
141 Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this
142 .translationContext));
146 public void testTranslateVlanToNetMultiNestedConnection() throws Exception {
148 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles";
150 "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels" +
151 "/expectedoutputfiles";
152 initTranslatorAndTranslate();
156 private void validatePortNetworkRole(List<String> portNodeTemplateIds, String expectedNetworkRole) {
157 FilePortConsolidationData filePortConsolidationData =
158 translationContext.getConsolidationData().getPortConsolidationData()
159 .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML);
160 for (String portNodeTemplateId : portNodeTemplateIds) {
161 PortTemplateConsolidationData portTemplateConsolidationData =
162 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
163 Assert.assertEquals(expectedNetworkRole, portTemplateConsolidationData.getNetworkRole());