f0c4517ea736a1a556d08071440784e19401def3
[sdc.git] /
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.impl.resourcetranslation;
18
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;
29
30 import java.io.IOException;
31 import java.util.Arrays;
32 import java.util.HashMap;
33 import java.util.List;
34 import java.util.Map;
35 import java.util.Optional;
36
37 public class ContrailV2VlanToInterfaceResourceConnectionTest extends BaseResourceTranslationTest {
38
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";
49
50
51   @Override
52   @Before
53   public void setUp() throws IOException {
54     // do not delete this function. it prevents the superclass setup from running
55   }
56
57   @Test
58   public void testTranslateVlanToInterfaceNestedConnection() throws Exception {
59     inputFilesPath =
60         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/inputfiles";
61     outputFilesPath =
62         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nested/expectedoutputfiles";
63     initTranslatorAndTranslate();
64     testTranslation();
65   }
66
67   @Test
68   public void testTranslateVlanToInterfaceNestedInOutAttr() throws Exception {
69     inputFilesPath = INPUT_FILE_PATH_FOR_INOUT_ATTR_TEST;
70     outputFilesPath =
71         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr" +
72             "/expectedoutputfiles";
73     initTranslatorAndTranslate();
74     testTranslation();
75
76     Assert.assertNotNull(this.translationContext.getConsolidationData().getPortConsolidationData()
77         .getFilePortConsolidationData(MAIN_SERVICE_TEMPLATE_YAML)
78         .getPortTemplateConsolidationData(PORT_NODE_TEMPLATE_ID_FOR_ATTR_TEST));
79
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");
85
86     Assert.assertEquals(ONE, subInfList.size());
87     SubInterfaceTemplateConsolidationData data = subInfList.get(0);
88
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());
96
97   }
98
99   @Test
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);
105
106     Optional<String> networkRole = HeatToToscaUtil.getNetworkRoleFromResource(targetResource, this
107         .translationContext);
108
109     Assert.assertEquals(NETWORK_ROLE_INOUT_ATTR_TEST,networkRole.get());
110   }
111
112   @Test
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");
118
119     List<String> validVmiPortTemplateIds = Arrays.asList("vdbe_0_untr_vmi_0", "vdbe_untr_vmi");
120     validatePortNetworkRole(validVmiPortTemplateIds, "untr");
121
122     List<String> portIdsNotFollowingHeatGuidelines = Arrays.asList("vdbe_0_oam_neutronNotFollowingHeatGuidelines_2",
123         "vdbe_0_untr_vmiNotFollowingHeatGuidelines_1");
124     validatePortNetworkRole(portIdsNotFollowingHeatGuidelines, null);
125
126   }
127
128
129   @Test
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);
140
141     Assert.assertTrue(HeatToToscaUtil.isSubInterfaceResource(targetResource, this
142         .translationContext));
143   }
144
145   @Test
146   public void testTranslateVlanToNetMultiNestedConnection() throws Exception {
147     inputFilesPath =
148         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels/inputfiles";
149     outputFilesPath =
150         "/mock/services/heattotosca/subInterfaceToInterfaceConnection/nestedMultiLevels" +
151             "/expectedoutputfiles";
152     initTranslatorAndTranslate();
153     testTranslation();
154   }
155
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());
164     }
165   }
166 }