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.datatypes.heattotosca.unifiedmodel.consolidation;
19 import java.util.EnumMap;
20 import java.util.HashSet;
22 import org.junit.Assert;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.mockito.Mock;
26 import org.mockito.Mockito;
27 import org.mockito.MockitoAnnotations;
28 import org.openecomp.sdc.heat.datatypes.model.Resource;
30 public class PortConsolidationDataTest {
32 private static final String PORT_NODE_TYPE_1 = "portNodeType1";
33 private static final String PORT_NODE_TYPE_2 = "portNodeType2";
34 private static final String PORT_NODE_TEMPLATE_ID_1 = "portNodeTemplateId1";
35 private static final String PORT_NODE_TEMPLATE_ID_2 = "portNodeTemplateId2";
36 private static final String SUB_INTERFACE_NODE_TEMPLATE_ID_1 = "subInterfaceNodeTemplateId1";
37 private static final String SUB_INTERFACE_NODE_TEMPLATE_ID_2 = "subInterfaceNodeTemplateId2";
38 private static final String PORT_RESOURCE_ID = "portResourceId";
39 private static final String PORT_RESOURCE_TYPE = "portResourceType";
41 private final EnumMap<ServiceTemplateFileNameEnum, FilePortConsolidationData> mockMap =
42 new EnumMap<>(ServiceTemplateFileNameEnum.class);
45 private FilePortConsolidationData mockFilePortConsolidationData1;
47 private FilePortConsolidationData mockFilePortConsolidationData2;
49 private final Resource resource = new Resource();
50 private final PortConsolidationData consolidationData = new PortConsolidationData();
54 MockitoAnnotations.openMocks(this);
59 public void testAddConsolidationData_noNewCreated() {
60 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
61 consolidationData.addPortTemplateConsolidationData(serviceTemplateName, PORT_NODE_TYPE_1, PORT_NODE_TYPE_1,
62 PORT_RESOURCE_ID, PORT_RESOURCE_TYPE);
63 consolidationData.getFilePortConsolidationData(serviceTemplateName);
64 Set<String> expectedServiceTemplateNames = new HashSet<>();
65 expectedServiceTemplateNames.add(serviceTemplateName);
66 checkPortConsolidationData(consolidationData, serviceTemplateName, expectedServiceTemplateNames);
68 consolidationData.addPortTemplateConsolidationData(serviceTemplateName, PORT_NODE_TYPE_1, PORT_NODE_TYPE_1,
69 PORT_RESOURCE_ID, PORT_RESOURCE_TYPE);
70 consolidationData.getFilePortConsolidationData(serviceTemplateName);
71 checkPortConsolidationData(consolidationData, serviceTemplateName, expectedServiceTemplateNames);
75 public void testAddConsolidationData_DiffNodeTypes() {
76 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
77 consolidationData.addPortTemplateConsolidationData(serviceTemplateName, PORT_NODE_TYPE_1, PORT_NODE_TYPE_1,
78 PORT_RESOURCE_ID, PORT_RESOURCE_TYPE);
79 Set<String> expectedServiceTemplateNames = new HashSet<>();
80 expectedServiceTemplateNames.add(serviceTemplateName);
81 checkPortConsolidationData(consolidationData, serviceTemplateName, expectedServiceTemplateNames);
82 consolidationData.addPortTemplateConsolidationData(serviceTemplateName, PORT_NODE_TYPE_2, PORT_NODE_TYPE_2,
83 PORT_RESOURCE_ID, PORT_RESOURCE_TYPE);
84 checkPortConsolidationData(consolidationData, serviceTemplateName, expectedServiceTemplateNames);
88 public void testAddConsolidationData_DiffServiceTemplate() {
89 String serviceTemplateName1 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
90 consolidationData.addPortTemplateConsolidationData(
91 serviceTemplateName1, PORT_NODE_TYPE_1, PORT_RESOURCE_ID, PORT_RESOURCE_TYPE, PORT_NODE_TYPE_1);
92 Set<String> expectedServiceTemplateNames = new HashSet<>();
93 expectedServiceTemplateNames.add(serviceTemplateName1);
94 checkPortConsolidationData(consolidationData, serviceTemplateName1, expectedServiceTemplateNames);
96 String serviceTemplateName2 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2.name();
97 consolidationData.addPortTemplateConsolidationData(
98 serviceTemplateName2, PORT_NODE_TYPE_2, PORT_RESOURCE_ID, PORT_RESOURCE_TYPE, PORT_NODE_TYPE_2);
99 expectedServiceTemplateNames.add(serviceTemplateName2);
100 checkPortConsolidationData(consolidationData, serviceTemplateName2, expectedServiceTemplateNames);
104 public void testAddConsolidationData_DiffNodeTypes_testWithMock() throws Exception {
105 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
106 addAndCheckPortTemplateConsolidationData(serviceTemplateName,
108 addAndCheckPortTemplateConsolidationData(serviceTemplateName,
113 public void testAddConsolidationData_DiffServiceTemplate_testWithMock() throws Exception {
114 addAndCheckPortTemplateConsolidationData(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name(),
116 addAndCheckPortTemplateConsolidationData(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2.name(),
121 public void testAddSubInterfaceConsolidationData_Same() throws Exception {
122 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
123 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
124 SUB_INTERFACE_NODE_TEMPLATE_ID_1, PORT_NODE_TEMPLATE_ID_1);
125 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
126 SUB_INTERFACE_NODE_TEMPLATE_ID_1, PORT_NODE_TEMPLATE_ID_1, 2);
130 public void testAddSubInterfaceConsolidationData_diffNodeTempId() throws Exception {
131 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
132 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
133 SUB_INTERFACE_NODE_TEMPLATE_ID_1, PORT_NODE_TEMPLATE_ID_1);
134 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
135 SUB_INTERFACE_NODE_TEMPLATE_ID_2, PORT_NODE_TEMPLATE_ID_1);
139 public void testAddSubInterfaceConsolidationData_diffNodeTempId_diffParentPort() throws Exception {
140 String serviceTemplateName = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
141 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
142 SUB_INTERFACE_NODE_TEMPLATE_ID_1, PORT_NODE_TEMPLATE_ID_1);
143 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateName,
144 SUB_INTERFACE_NODE_TEMPLATE_ID_2, PORT_NODE_TEMPLATE_ID_2);
148 public void testAddSubInterfaceConsolidationData_diffServiceTemp() throws Exception {
149 addAndCheckSubInterfaceTemplateConsolidationData(
150 ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name(),
151 SUB_INTERFACE_NODE_TEMPLATE_ID_1, SUB_INTERFACE_NODE_TEMPLATE_ID_1);
152 addAndCheckSubInterfaceTemplateConsolidationData(
153 ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2.name(),
154 SUB_INTERFACE_NODE_TEMPLATE_ID_2, SUB_INTERFACE_NODE_TEMPLATE_ID_2);
157 private void addAndCheckPortTemplateConsolidationData(String serviceTemplateFileName,
158 String portNodeType) throws Exception {
159 FilePortConsolidationData filePortConsolidationDataMock =
160 setFilePortConsolidationDataMock(serviceTemplateFileName);
162 consolidationData.addPortTemplateConsolidationData(
163 serviceTemplateFileName, portNodeType, PORT_RESOURCE_ID, PORT_RESOURCE_TYPE, portNodeType);
165 Mockito.verify(filePortConsolidationDataMock)
166 .addPortTemplateConsolidationData(portNodeType, PORT_RESOURCE_ID, PORT_RESOURCE_TYPE, portNodeType);
169 private void addAndCheckSubInterfaceTemplateConsolidationData(String serviceTemplateFileName,
170 String subInterfaceNodeTemplateId, String subInterfaceNodeTemplateType) throws Exception {
171 addAndCheckSubInterfaceTemplateConsolidationData(serviceTemplateFileName, subInterfaceNodeTemplateId,
172 subInterfaceNodeTemplateType, 1);
175 private void addAndCheckSubInterfaceTemplateConsolidationData(String serviceTemplateFileName,
176 String subInterfaceNodeTemplateId, String parentPortNodeTemplateId, int expectedTime) throws Exception {
178 FilePortConsolidationData filePortConsolidationDataMock =
179 setFilePortConsolidationDataMock(serviceTemplateFileName);
180 consolidationData.addSubInterfaceTemplateConsolidationData(serviceTemplateFileName, resource,
181 subInterfaceNodeTemplateId, parentPortNodeTemplateId);
183 Mockito.verify(filePortConsolidationDataMock, Mockito.times(expectedTime))
184 .addSubInterfaceTemplateConsolidationData(resource, subInterfaceNodeTemplateId,
185 parentPortNodeTemplateId);
188 private void addMocksToMap() {
189 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1, mockFilePortConsolidationData1);
190 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2, mockFilePortConsolidationData2);
193 private FilePortConsolidationData setFilePortConsolidationDataMock(String serviceTemplateName) throws Exception {
194 FilePortConsolidationData filePortConsolidationDataMock =
195 getFileComputeConsolidationDataMock(serviceTemplateName);
196 consolidationData.setFilePortConsolidationData(serviceTemplateName, filePortConsolidationDataMock);
197 return filePortConsolidationDataMock;
200 private FilePortConsolidationData getFileComputeConsolidationDataMock(String serviceTemplateName) throws Exception {
201 ServiceTemplateFileNameEnum enumValue = ServiceTemplateFileNameEnum.valueOf(serviceTemplateName);
202 FilePortConsolidationData mock = mockMap.get(enumValue);
204 throw new Exception("This service Template File Name doesn't supported. "
205 + "Please add it to ServiceTemplateFileName enum");
210 private void checkPortConsolidationData(PortConsolidationData consolidationData,
211 String serviceTemplateFileName, Set<String> expectedServiceTemplateNames) {
212 FilePortConsolidationData filePortConsolidationData = consolidationData
213 .getFilePortConsolidationData(serviceTemplateFileName);
214 Assert.assertNotNull(filePortConsolidationData);
215 checkGetAllServiceTemplateFileNames(consolidationData, expectedServiceTemplateNames);
218 private void checkGetAllServiceTemplateFileNames(PortConsolidationData consolidationData,
219 Set<String> expectedServiceTemplateNames) {
220 Set<String> allServiceTemplateFileNames = consolidationData.getAllServiceTemplateFileNames();
221 Assert.assertNotNull(allServiceTemplateFileNames);
222 Assert.assertEquals(expectedServiceTemplateNames.size(), allServiceTemplateFileNames.size());
223 Assert.assertTrue(allServiceTemplateFileNames.containsAll(expectedServiceTemplateNames));