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.Collection;
20 import java.util.EnumMap;
21 import java.util.HashSet;
24 import org.junit.Assert;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.Mock;
28 import org.mockito.Mockito;
29 import org.mockito.MockitoAnnotations;
31 public class FileComputeConsolidationDataTest {
33 private static final String COMPUTE_NODE_TEMPLATE_ID_1 = "computeNodeTemplateId1";
34 private static final String COMPUTE_NODE_TEMPLATE_ID_2 = "computeNodeTemplateId2";
35 private final FileComputeConsolidationData consolidationData = new FileComputeConsolidationData();
37 private enum ComputeNodeTypeEnum {
42 private final EnumMap<ComputeNodeTypeEnum, TypeComputeConsolidationData> mockMap =
43 new EnumMap<>(ComputeNodeTypeEnum.class);
46 private TypeComputeConsolidationData mockTypeComputeConsolidationData1;
48 private TypeComputeConsolidationData mockTypeComputeConsolidationData2;
51 TypeComputeConsolidationData typeComputeConsolidationDataMock;
55 MockitoAnnotations.openMocks(this);
60 public void testAddComputeTemplateConsolidationData() {
61 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
62 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
63 Set<String> expectedComputeNodeTypes = new HashSet<>();
64 expectedComputeNodeTypes.add(computeNodeType);
65 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
69 public void testAddSameConsolidationDataTwice_noNewCreated() {
70 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
71 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
72 TypeComputeConsolidationData firstTypeComputeConsolidationData =
73 consolidationData.getTypeComputeConsolidationData(computeNodeType);
75 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
76 TypeComputeConsolidationData secondTypeComputeConsolidationData =
77 consolidationData.getTypeComputeConsolidationData(computeNodeType);
78 Assert.assertEquals(firstTypeComputeConsolidationData, secondTypeComputeConsolidationData);
82 public void testAddConsolidationData_diffNodeType() {
83 String computeNodeType1 = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
84 consolidationData.addComputeTemplateConsolidationData(computeNodeType1, COMPUTE_NODE_TEMPLATE_ID_1);
85 Set<String> expectedComputeNodeTypes = new HashSet<>();
86 expectedComputeNodeTypes.add(computeNodeType1);
87 checkComputeConsolidationData(consolidationData, computeNodeType1, expectedComputeNodeTypes);
89 String computeNodeType2 = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_2.name();
90 consolidationData.addComputeTemplateConsolidationData(computeNodeType2, COMPUTE_NODE_TEMPLATE_ID_2);
91 expectedComputeNodeTypes.add(computeNodeType2);
92 checkComputeConsolidationData(consolidationData, computeNodeType2, expectedComputeNodeTypes);
96 public void testAddConsolidationData_diffNodeTemplateId() {
97 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
98 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
99 Set<String> expectedComputeNodeTypes = new HashSet<>();
100 expectedComputeNodeTypes.add(computeNodeType);
101 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
103 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
104 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
108 public void testAddSameConsolidationDataTwice_testWithMock() throws Exception {
109 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
110 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
111 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1, 2);
115 public void testAddConsolidationData_diffNodeType_testWithMock() throws Exception {
116 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
117 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
118 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
122 public void testAddConsolidationData_diffNodeTemplateId_testWithMock() throws Exception {
123 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
124 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
125 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
129 public void isNumberOfComputeTypesLegalPositive() {
130 FileComputeConsolidationData fileComputeConsolidationData = new FileComputeConsolidationData();
131 fileComputeConsolidationData.setTypeComputeConsolidationData("server_oam",
132 typeComputeConsolidationDataMock);
134 Mockito.when(typeComputeConsolidationDataMock.isNumberOfComputeConsolidationDataPerTypeLegal())
137 Assert.assertTrue(fileComputeConsolidationData.isNumberOfComputeTypesLegal());
141 public void isNumberOfComputeTypesLegalNegative() {
142 TypeComputeConsolidationData typeComputeConsolidationData = new TypeComputeConsolidationData();
143 typeComputeConsolidationData.setComputeTemplateConsolidationData(
144 "server_oam_1", new ComputeTemplateConsolidationData());
145 typeComputeConsolidationData.setComputeTemplateConsolidationData(
146 "server_oam_2", new ComputeTemplateConsolidationData());
149 FileComputeConsolidationData fileComputeConsolidationData = new FileComputeConsolidationData();
150 fileComputeConsolidationData.setTypeComputeConsolidationData("server_oam", typeComputeConsolidationData);
152 Assert.assertFalse(fileComputeConsolidationData.isNumberOfComputeTypesLegal());
155 private void checkComputeConsolidationData(FileComputeConsolidationData fileComputeConsolidationData,
156 String computeNodeType, Set<String> expectedComputeNodeTypes) {
157 TypeComputeConsolidationData typeComputeConsolidationData =
158 fileComputeConsolidationData.getTypeComputeConsolidationData(computeNodeType);
159 Assert.assertNotNull(typeComputeConsolidationData);
160 checkGetAllComputeTypes(fileComputeConsolidationData, expectedComputeNodeTypes);
163 private void checkGetAllComputeTypes(FileComputeConsolidationData fileComputeConsolidationData,
164 Set<String> expectedComputeNodeTypes) {
165 Collection<String> allComputeTypes = fileComputeConsolidationData.getAllComputeTypes();
166 Assert.assertNotNull(allComputeTypes);
167 Assert.assertEquals(allComputeTypes.size(), expectedComputeNodeTypes.size());
168 Assert.assertTrue(allComputeTypes.containsAll(expectedComputeNodeTypes));
171 private void addAndCheckComputeTemplateConsolidationData(
172 String computeNodeType, String computeNodeTemplateId) throws Exception {
173 addAndCheckComputeTemplateConsolidationData(computeNodeType,
174 computeNodeTemplateId, 1);
177 private void addAndCheckComputeTemplateConsolidationData(String computeNodeType,
178 String computeNodeTemplateId, int expectedTime) throws Exception {
179 TypeComputeConsolidationData fileComputeConsolidationDataMock =
180 setTypeComputeConsolidationDataMock(computeNodeType);
182 consolidationData.addComputeTemplateConsolidationData(
183 computeNodeType, computeNodeTemplateId);
185 Mockito.verify(fileComputeConsolidationDataMock, Mockito.times(expectedTime))
186 .addComputeTemplateConsolidationData(computeNodeTemplateId);
189 private void addMocksToMap() {
190 mockMap.put(ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1, mockTypeComputeConsolidationData1);
191 mockMap.put(ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_2, mockTypeComputeConsolidationData2);
194 private TypeComputeConsolidationData setTypeComputeConsolidationDataMock(
195 String computeType) throws Exception {
196 TypeComputeConsolidationData typeComputeConsolidationDataMock =
197 getFileComputeConsolidationDataMock(computeType);
198 consolidationData.setTypeComputeConsolidationData(computeType, typeComputeConsolidationDataMock);
199 return typeComputeConsolidationDataMock;
202 private TypeComputeConsolidationData getFileComputeConsolidationDataMock(String computeType) throws Exception {
203 ComputeNodeTypeEnum enumValue = ComputeNodeTypeEnum.valueOf(computeType);
204 TypeComputeConsolidationData mock = mockMap.get(enumValue);
206 throw new Exception("This compute Type doesn't support. "
207 + "Please add it to ComputeNodeTypeEnum enum");