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;
52 MockitoAnnotations.initMocks(this);
57 public void testAddComputeTemplateConsolidationData() {
58 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
59 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
60 Set<String> expectedComputeNodeTypes = new HashSet<>();
61 expectedComputeNodeTypes.add(computeNodeType);
62 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
66 public void testAddSameConsolidationDataTwice_noNewCreated() {
67 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
68 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
69 TypeComputeConsolidationData firstTypeComputeConsolidationData =
70 consolidationData.getTypeComputeConsolidationData(computeNodeType);
72 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
73 TypeComputeConsolidationData secondTypeComputeConsolidationData =
74 consolidationData.getTypeComputeConsolidationData(computeNodeType);
75 Assert.assertEquals(firstTypeComputeConsolidationData, secondTypeComputeConsolidationData);
79 public void testAddConsolidationData_diffNodeType() {
80 String computeNodeType1 = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
81 consolidationData.addComputeTemplateConsolidationData(computeNodeType1, COMPUTE_NODE_TEMPLATE_ID_1);
82 Set<String> expectedComputeNodeTypes = new HashSet<>();
83 expectedComputeNodeTypes.add(computeNodeType1);
84 checkComputeConsolidationData(consolidationData, computeNodeType1, expectedComputeNodeTypes);
86 String computeNodeType2 = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_2.name();
87 consolidationData.addComputeTemplateConsolidationData(computeNodeType2, COMPUTE_NODE_TEMPLATE_ID_2);
88 expectedComputeNodeTypes.add(computeNodeType2);
89 checkComputeConsolidationData(consolidationData, computeNodeType2, expectedComputeNodeTypes);
93 public void testAddConsolidationData_diffNodeTemplateId() {
94 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
95 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
96 Set<String> expectedComputeNodeTypes = new HashSet<>();
97 expectedComputeNodeTypes.add(computeNodeType);
98 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
100 consolidationData.addComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
101 checkComputeConsolidationData(consolidationData, computeNodeType, expectedComputeNodeTypes);
105 public void testAddSameConsolidationDataTwice_testWithMock() throws Exception {
106 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
107 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
108 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1, 2);
112 public void testAddConsolidationData_diffNodeType_testWithMock() throws Exception {
113 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
114 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
115 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
119 public void testAddConsolidationData_diffNodeTemplateId_testWithMock() throws Exception {
120 String computeNodeType = ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1.name();
121 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_1);
122 addAndCheckComputeTemplateConsolidationData(computeNodeType, COMPUTE_NODE_TEMPLATE_ID_2);
125 private void checkComputeConsolidationData(FileComputeConsolidationData fileComputeConsolidationData,
126 String computeNodeType, Set<String> expectedComputeNodeTypes) {
127 TypeComputeConsolidationData typeComputeConsolidationData =
128 fileComputeConsolidationData.getTypeComputeConsolidationData(computeNodeType);
129 Assert.assertNotNull(typeComputeConsolidationData);
130 checkGetAllComputeTypes(fileComputeConsolidationData, expectedComputeNodeTypes);
133 private void checkGetAllComputeTypes(FileComputeConsolidationData fileComputeConsolidationData,
134 Set<String> expectedComputeNodeTypes) {
135 Collection<String> allComputeTypes = fileComputeConsolidationData.getAllComputeTypes();
136 Assert.assertNotNull(allComputeTypes);
137 Assert.assertEquals(allComputeTypes.size(), expectedComputeNodeTypes.size());
138 Assert.assertTrue(allComputeTypes.containsAll(expectedComputeNodeTypes));
141 private void addAndCheckComputeTemplateConsolidationData(
142 String computeNodeType, String computeNodeTemplateId) throws Exception {
143 addAndCheckComputeTemplateConsolidationData(computeNodeType,
144 computeNodeTemplateId, 1);
147 private void addAndCheckComputeTemplateConsolidationData(String computeNodeType,
148 String computeNodeTemplateId, int expectedTime) throws Exception {
149 TypeComputeConsolidationData fileComputeConsolidationDataMock =
150 setTypeComputeConsolidationDataMock(computeNodeType);
152 consolidationData.addComputeTemplateConsolidationData(
153 computeNodeType, computeNodeTemplateId);
155 Mockito.verify(fileComputeConsolidationDataMock, Mockito.times(expectedTime))
156 .addComputeTemplateConsolidationData(computeNodeTemplateId);
159 private void addMocksToMap() {
160 mockMap.put(ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_1, mockTypeComputeConsolidationData1);
161 mockMap.put(ComputeNodeTypeEnum.COMPUTE_NODE_TYPE_2, mockTypeComputeConsolidationData2);
164 private TypeComputeConsolidationData setTypeComputeConsolidationDataMock(
165 String computeType) throws Exception {
166 TypeComputeConsolidationData typeComputeConsolidationDataMock =
167 getFileComputeConsolidationDataMock(computeType);
168 consolidationData.setTypeComputeConsolidationData(computeType, typeComputeConsolidationDataMock);
169 return typeComputeConsolidationDataMock;
172 private TypeComputeConsolidationData getFileComputeConsolidationDataMock(String computeType) throws Exception {
173 ComputeNodeTypeEnum enumValue = ComputeNodeTypeEnum.valueOf(computeType);
174 TypeComputeConsolidationData mock = mockMap.get(enumValue);
176 throw new Exception("This compute Type doesn't support. "
177 + "Please add it to ComputeNodeTypeEnum enum");