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";
35 private static final String MAIN_SERVICE_TEMPLATE = "MainServiceTemplate.yaml";
38 private FileComputeConsolidationData fileComputeConsolidationDataMock;
40 private final EnumMap<ServiceTemplateFileNameEnum, FileComputeConsolidationData> mockMap =
41 new EnumMap<>(ServiceTemplateFileNameEnum.class);
44 private FileComputeConsolidationData mockFileComputeConsolidationData1;
46 private FileComputeConsolidationData mockFileComputeConsolidationData2;
48 private final ComputeConsolidationData consolidationData = new ComputeConsolidationData();
52 MockitoAnnotations.initMocks(this);
57 public void testAddComputeTemplateConsolidationData() {
58 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
59 consolidationData.addComputeTemplateConsolidationData(
60 serviceTemplate, COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
62 Set<String> expectedServiceTemplateNames = new HashSet<>();
63 expectedServiceTemplateNames.add(serviceTemplate);
64 checkComputeConsolidationData(consolidationData, serviceTemplate,
65 expectedServiceTemplateNames);
69 public void testAddSameConsolidationDataTwice_noNewCreated() {
70 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
71 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
72 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
73 Set<String> expectedServiceTemplateNames = new HashSet<>();
74 expectedServiceTemplateNames.add(serviceTemplate);
75 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
77 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
78 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
79 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
83 public void testAddDiffConsolidationData_diffNodeTypes() {
84 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
85 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
86 COMPUTE_NODE_TYPE_1, COMPUTE_NODE_TEMPLATE_ID_1);
87 Set<String> expectedServiceTemplateNames = new HashSet<>();
88 expectedServiceTemplateNames.add(serviceTemplate);
89 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
91 consolidationData.addComputeTemplateConsolidationData(serviceTemplate,
92 COMPUTE_NODE_TYPE_2, COMPUTE_NODE_TEMPLATE_ID_2);
93 checkComputeConsolidationData(consolidationData, serviceTemplate, expectedServiceTemplateNames);
97 public void testAddDiffConsolidationData_diffServiceTemplate() {
98 String serviceTemplate1 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
99 consolidationData.addComputeTemplateConsolidationData(serviceTemplate1, COMPUTE_NODE_TYPE_1,
100 COMPUTE_NODE_TEMPLATE_ID_1);
101 Set<String> expectedServiceTemplateNames = new HashSet<>();
102 expectedServiceTemplateNames.add(serviceTemplate1);
103 checkComputeConsolidationData(consolidationData, serviceTemplate1, expectedServiceTemplateNames);
105 String serviceTemplate2 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2.name();
106 consolidationData.addComputeTemplateConsolidationData(serviceTemplate2, COMPUTE_NODE_TYPE_2,
107 COMPUTE_NODE_TEMPLATE_ID_2);
108 expectedServiceTemplateNames.add(serviceTemplate2);
109 checkComputeConsolidationData(consolidationData, serviceTemplate2, expectedServiceTemplateNames);
113 public void testAddSameConsolidationDataTwice_testWithMock() throws Exception {
114 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
115 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
116 COMPUTE_NODE_TEMPLATE_ID_1);
117 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
118 COMPUTE_NODE_TEMPLATE_ID_1, 2);
122 public void testAddDiffConsolidationData_diffNodeTypes_testWithMock() throws Exception {
123 String serviceTemplate = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
124 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_1,
125 COMPUTE_NODE_TEMPLATE_ID_1);
126 addAndCheckComputeTemplateConsolidationData(serviceTemplate, COMPUTE_NODE_TYPE_2,
127 COMPUTE_NODE_TEMPLATE_ID_2);
131 public void testAddDiffConsolidationData_diffServiceTemplate_testWithMock() throws Exception {
132 String serviceTemplate1 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
133 addAndCheckComputeTemplateConsolidationData(serviceTemplate1, COMPUTE_NODE_TYPE_1,
134 COMPUTE_NODE_TEMPLATE_ID_1);
135 String serviceTemplate2 = ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1.name();
136 addAndCheckComputeTemplateConsolidationData(serviceTemplate2, COMPUTE_NODE_TYPE_2,
137 COMPUTE_NODE_TEMPLATE_ID_2);
140 private void checkComputeConsolidationData(ComputeConsolidationData consolidationData,
141 String serviceTemplateFileName, Set<String> expectedServiceTemplateNames) {
142 FileComputeConsolidationData fileComputeConsolidationData = consolidationData
143 .getFileComputeConsolidationData(serviceTemplateFileName);
144 Assert.assertNotNull(fileComputeConsolidationData);
145 checkGetAllServiceTemplateFileNames(consolidationData, expectedServiceTemplateNames);
148 private void checkGetAllServiceTemplateFileNames(ComputeConsolidationData consolidationData,
149 Set<String> expectedServiceTemplateNames) {
150 Set<String> allServiceTemplateFileNames = consolidationData.getAllServiceTemplateFileNames();
151 Assert.assertNotNull(allServiceTemplateFileNames);
152 Assert.assertEquals(allServiceTemplateFileNames.size(), expectedServiceTemplateNames.size());
153 Assert.assertTrue(allServiceTemplateFileNames.containsAll(expectedServiceTemplateNames));
156 private void addAndCheckComputeTemplateConsolidationData(String serviceTemplateFileName,
157 String computeNodeType, String computeNodeTemplateId) throws Exception {
158 addAndCheckComputeTemplateConsolidationData(serviceTemplateFileName, computeNodeType,
159 computeNodeTemplateId, 1);
162 private void addAndCheckComputeTemplateConsolidationData(String serviceTemplateFileName,
163 String computeNodeType, String computeNodeTemplateId, int expectedTime) throws Exception {
164 FileComputeConsolidationData fileComputeConsolidationDataMock =
165 setFileComputeConsolidationDataMock(serviceTemplateFileName);
166 consolidationData.addComputeTemplateConsolidationData(
167 serviceTemplateFileName, computeNodeType, computeNodeTemplateId);
169 Mockito.verify(fileComputeConsolidationDataMock, Mockito.times(expectedTime))
170 .addComputeTemplateConsolidationData(computeNodeType, computeNodeTemplateId);
173 private FileComputeConsolidationData setFileComputeConsolidationDataMock(
174 String serviceTemplateName) throws Exception {
175 FileComputeConsolidationData mock = getFileComputeConsolidationDataMock(serviceTemplateName);
176 consolidationData.setFileComputeConsolidationData(serviceTemplateName, mock);
180 private void addMocksToMap() {
181 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_1, mockFileComputeConsolidationData1);
182 mockMap.put(ServiceTemplateFileNameEnum.SERVICE_TEMPLATE_FILE_NAME_2, mockFileComputeConsolidationData2);
185 private FileComputeConsolidationData getFileComputeConsolidationDataMock(String serviceTemplateName)
187 ServiceTemplateFileNameEnum enumValue = ServiceTemplateFileNameEnum.valueOf(serviceTemplateName);
188 FileComputeConsolidationData mock = mockMap.get(enumValue);
190 throw new Exception("This service Template File Name doesn't supported. "
191 + "Please add it to ServiceTemplateFileName enum");
197 public void isNumberOfComputeTypesLegal() {
198 ComputeConsolidationData computeConsolidationData = new ComputeConsolidationData();
199 computeConsolidationData.setFileComputeConsolidationData(MAIN_SERVICE_TEMPLATE,
200 fileComputeConsolidationDataMock);
202 computeConsolidationData.isNumberOfComputeTypesLegal(MAIN_SERVICE_TEMPLATE);
203 Mockito.verify(fileComputeConsolidationDataMock).isNumberOfComputeTypesLegal();
207 public void isNumberOfComputeTypesLegalNegative() {
208 ComputeConsolidationData computeConsolidationData = new ComputeConsolidationData();
210 Assert.assertFalse(computeConsolidationData.isNumberOfComputeTypesLegal(MAIN_SERVICE_TEMPLATE));