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;
29 public class ComputeConsolidationDataTest {
31 private static final String COMPUTE_NODE_TEMPLATE_ID_1 = "computeNodeTemplateId1";
32 private static final String COMPUTE_NODE_TEMPLATE_ID_2 = "computeNodeTemplateId2";
33 private static final String COMPUTE_NODE_TYPE_1 = "computeNodeType1";
34 private static final String COMPUTE_NODE_TYPE_2 = "computeNodeType2";
36 private final EnumMap<ServiceTemplateFileNameEnum, FileComputeConsolidationData> mockMap =
37 new EnumMap<>(ServiceTemplateFileNameEnum.class);
40 private FileComputeConsolidationData mockFileComputeConsolidationData1;
42 private FileComputeConsolidationData mockFileComputeConsolidationData2;
44 private final ComputeConsolidationData consolidationData = new ComputeConsolidationData();
48 MockitoAnnotations.initMocks(this);
53 public void testAddComputeTemplateConsolidationData() {
54 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
55 consolidationData.addComputeTemplateConsolidationData(
56 serviceTemplate, COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
58 Set<String> expectedServiceTemplateNames = new HashSet<>();
59 expectedServiceTemplateNames.add(serviceTemplate);
60 checkComputeConsolidationData(consolidationData, serviceTemplate,
61 expectedServiceTemplateNames);
65 public void testAddSameConsolidationDataTwice_noNewCreated() {
66 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
67 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
68 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
69 Set<String> expectedServiceTemplateNames = new HashSet<>();
70 expectedServiceTemplateNames.add(serviceTemplate);
71 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
73 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
74 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
75 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
79 public void testAddDiffConsolidationData_diffNodeTypes() {
80 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
81 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
82 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
83 Set<String> expectedServiceTemplateNames = new HashSet<>();
84 expectedServiceTemplateNames.add(serviceTemplate);
85 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
87 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
88 COMPUTE_NODE_TYPE_2, COMPUTE_NODE_TEMPLATE_ID_2);
89 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
93 public void testAddDiffConsolidationData_diffServiceTemplate() {
94 String serviceTemplate1 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
95 consolidationData.addComputeTemplateConsolidationData(serviceTemplate1, COMPUTE_NODE_TYPE_1,
96 COMPUTE_NODE_TEMPLATE_ID_1);
97 Set<String> expectedServiceTemplateNames = new HashSet<>();
98 expectedServiceTemplateNames.add(serviceTemplate1);
99 checkComputeConsolidationData(consolidationData, serviceTemplate1, expectedServiceTemplateNames);
101 String serviceTemplate2 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2.name();
102 consolidationData.addComputeTemplateConsolidationData(serviceTemplate2, COMPUTE_NODE_TYPE_2,
103 COMPUTE_NODE_TEMPLATE_ID_2);
104 expectedServiceTemplateNames.add(serviceTemplate2);
105 checkComputeConsolidationData(consolidationData, serviceTemplate2, expectedServiceTemplateNames);
109 public void testAddSameConsolidationDataTwice_testWithMock() throws Exception {
110 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
111 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
112 COMPUTE_NODE_TEMPLATE_ID_1);
113 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
114 COMPUTE_NODE_TEMPLATE_ID_1, 2);
118 public void testAddDiffConsolidationData_diffNodeTypes_testWithMock() throws Exception {
119 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
120 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
121 COMPUTE_NODE_TEMPLATE_ID_1);
122 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_2,
123 COMPUTE_NODE_TEMPLATE_ID_2);
127 public void testAddDiffConsolidationData_diffServiceTemplate_testWithMock() throws Exception {
128 String serviceTemplate1 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
129 addAndCheckComputeTemplateConsolidationData(serviceTemplate1, COMPUTE_NODE_TYPE_1,
130 COMPUTE_NODE_TEMPLATE_ID_1);
131 String serviceTemplate2 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
132 addAndCheckComputeTemplateConsolidationData(serviceTemplate2, COMPUTE_NODE_TYPE_2,
133 COMPUTE_NODE_TEMPLATE_ID_2);
136 private void checkComputeConsolidationData(ComputeConsolidationData consolidationData,
137 String serviceTemplateFileName, Set<String> expectedServiceTemplateNames) {
138 FileComputeConsolidationData fileComputeConsolidationData = consolidationData
139 .getFileComputeConsolidationData(serviceTemplateFileName);
140 Assert.assertNotNull(fileComputeConsolidationData);
141 checkGetAllServiceTemplateFileNames(consolidationData, expectedServiceTemplateNames);
144 private void checkGetAllServiceTemplateFileNames(ComputeConsolidationData consolidationData,
145 Set<String> expectedServiceTemplateNames) {
146 Set<String> allServiceTemplateFileNames = consolidationData.getAllServiceTemplateFileNames();
147 Assert.assertNotNull(allServiceTemplateFileNames);
148 Assert.assertEquals(allServiceTemplateFileNames.size(), expectedServiceTemplateNames.size());
149 Assert.assertTrue(allServiceTemplateFileNames.containsAll(expectedServiceTemplateNames));
152 private void addAndCheckComputeTemplateConsolidationData(String serviceTemplateFileName,
153 String computeNodeType, String computeNodeTemplateId) throws Exception {
154 addAndCheckComputeTemplateConsolidationData(serviceTemplateFileName, computeNodeType,
155 computeNodeTemplateId, 1);
158 private void addAndCheckComputeTemplateConsolidationData(String serviceTemplateFileName,
159 String computeNodeType, String computeNodeTemplateId, int expectedTime) throws Exception {
160 FileComputeConsolidationData fileComputeConsolidationDataMock =
161 setFileComputeConsolidationDataMock(serviceTemplateFileName);
162 consolidationData.addComputeTemplateConsolidationData(
163 serviceTemplateFileName, computeNodeType, computeNodeTemplateId);
165 Mockito.verify(fileComputeConsolidationDataMock, Mockito.times(expectedTime))
166 .addComputeTemplateConsolidationData(computeNodeType, computeNodeTemplateId);
169 private FileComputeConsolidationData setFileComputeConsolidationDataMock(
170 String serviceTemplateName) throws Exception {
171 FileComputeConsolidationData mock = getFileComputeConsolidationDataMock(serviceTemplateName);
172 consolidationData.setFileComputeConsolidationData(serviceTemplateName, mock);
176 private void addMocksToMap() {
177 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1, mockFileComputeConsolidationData1);
178 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2, mockFileComputeConsolidationData2);
181 private FileComputeConsolidationData getFileComputeConsolidationDataMock(String serviceTemplateName)
183 ServiceTemplateFileNameEnum enumValue = ServiceTemplateFileNameEnum.valueOf(serviceTemplateName);
184 FileComputeConsolidationData mock = mockMap.get(enumValue);
186 throw new Exception("This service Template File Name doesn't supported. "
187 + "Please add it to ServiceTemplateFileName enum");