727dd5c43c07ef3addbf76e34f76cafcc3841ceb
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
18
19 import java.util.Arrays;
20 import java.util.Collection;
21 import java.util.HashMap;
22 import java.util.HashSet;
23 import java.util.List;
24 import java.util.Map;
25 import java.util.Objects;
26 import java.util.Set;
27
28 import org.apache.commons.collections4.MapUtils;
29 import org.junit.Assert;
30 import org.junit.Test;
31
32 public class TypeComputeConsolidationDataTest {
33
34     private static final String COMPUTE_NODE_TEMPLATE_ID_1 = "computeNodeTemplateId1";
35     private static final String COMPUTE_NODE_TEMPLATE_ID_2 = "computeNodeTemplateId2";
36     private static final String SERVER_NETWORK_ROLE_1_PORT = "server_network_role_1_port";
37     private static final String SERVER_NETWORK_ROLE_2_PORT = "server_network_role_2_port";
38
39     private final TypeComputeConsolidationData consolidationData = new TypeComputeConsolidationData();
40
41     @Test
42     public void testCollectAllPortsOfEachTypeFromComputesNoPorts() {
43         ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
44         consolidationData.setComputeTemplateConsolidationData("server_type",
45                 computeTemplateConsolidationData);
46
47         Map<String, List<String>> stringListMap = consolidationData.collectAllPortsOfEachTypeFromComputes();
48         Assert.assertTrue(Objects.nonNull(stringListMap) && MapUtils.isEmpty(stringListMap));
49     }
50
51     @Test
52     public void testCollectAllPortsOfEachTypeFromComputes() {
53         Map<String, List<String>> ports = new HashMap<>();
54         ports.put(SERVER_NETWORK_ROLE_1_PORT,
55                 Arrays.asList("server_0_network_role_1_port", "server_1_network_role_1_port"));
56
57         ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
58         computeTemplateConsolidationData.setPorts(ports);
59
60         consolidationData.setComputeTemplateConsolidationData("server_type",
61                 computeTemplateConsolidationData);
62
63         Map<String, List<String>> stringListMap = consolidationData.collectAllPortsOfEachTypeFromComputes();
64         Assert.assertTrue(stringListMap.containsKey(SERVER_NETWORK_ROLE_1_PORT)
65                                   && stringListMap.get(SERVER_NETWORK_ROLE_1_PORT).size() == 2);
66     }
67
68     @Test
69     public void testCollectAllPortsOfEachTypeFromComputesWithMultipleCompute() {
70         Map<String, List<String>> ports = new HashMap<>();
71         ports.put(SERVER_NETWORK_ROLE_1_PORT,
72                 Arrays.asList("server_0_network_role_1_port_1", "server_1_network_role_1_port_2"));
73
74         Map<String, List<String>> ports1 = new HashMap<>();
75         ports1.put(SERVER_NETWORK_ROLE_2_PORT,
76                 Arrays.asList("server_0_network_role_2_port_1", "server_1_network_role_2_port_2"));
77
78         ComputeTemplateConsolidationData computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
79         computeTemplateConsolidationData.setPorts(ports);
80
81         ComputeTemplateConsolidationData computeTemplateConsolidationData1 = new ComputeTemplateConsolidationData();
82         computeTemplateConsolidationData1.setPorts(ports1);
83
84         consolidationData.setComputeTemplateConsolidationData("server_type",
85                 computeTemplateConsolidationData);
86
87         consolidationData.setComputeTemplateConsolidationData("server_type1",
88                 computeTemplateConsolidationData1);
89
90         Map<String, List<String>> stringListMap = consolidationData.collectAllPortsOfEachTypeFromComputes();
91         Assert.assertTrue(stringListMap.size() == 2);
92         Assert.assertTrue(stringListMap.get(SERVER_NETWORK_ROLE_1_PORT).size() == 2);
93         Assert.assertTrue(stringListMap.get(SERVER_NETWORK_ROLE_1_PORT).contains("server_0_network_role_1_port_1")
94                 && stringListMap.get(SERVER_NETWORK_ROLE_1_PORT).contains("server_1_network_role_1_port_2"));
95
96         Assert.assertTrue(stringListMap.get(SERVER_NETWORK_ROLE_2_PORT).size() == 2);
97         Assert.assertTrue(stringListMap.get(SERVER_NETWORK_ROLE_2_PORT).contains("server_0_network_role_2_port_1")
98                 && stringListMap.get(SERVER_NETWORK_ROLE_2_PORT).contains("server_1_network_role_2_port_2"));
99     }
100
101     @Test
102     public void testAddComputeTemplateConsolidationData() {
103         consolidationData.addComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
104
105         Set<String> expectedNodeTemplateIds =  new HashSet<>();
106         expectedNodeTemplateIds.add(COMPUTE_NODE_TEMPLATE_ID_1);
107         verifyComputeTemplateConsolidationData(consolidationData, COMPUTE_NODE_TEMPLATE_ID_1, expectedNodeTemplateIds);
108     }
109
110     @Test
111     public void testAddSameConsolidationDataTwice_noNewCreated() {
112         consolidationData.addComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
113         ComputeTemplateConsolidationData firstComputeTemplateConsolidationData =
114                 consolidationData.getComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
115
116         consolidationData.addComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
117         ComputeTemplateConsolidationData secondComputeTemplateConsolidationData =
118                 consolidationData.getComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
119         Assert.assertEquals(firstComputeTemplateConsolidationData, secondComputeTemplateConsolidationData);
120     }
121
122     @Test
123     public void testAddDiffConsolidationData_DiffNodeTemplateId() {
124         final ComputeTemplateConsolidationData firstComputeTemplateConsolidationData = consolidationData
125                 .addComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_1);
126         Set<String> expectedNodeTemplateIds1 =  new HashSet<>();
127         expectedNodeTemplateIds1.add(COMPUTE_NODE_TEMPLATE_ID_1);
128         verifyComputeTemplateConsolidationData(consolidationData, COMPUTE_NODE_TEMPLATE_ID_1, expectedNodeTemplateIds1);
129
130         final ComputeTemplateConsolidationData secondComputeTemplateConsolidationData = consolidationData
131                 .addComputeTemplateConsolidationData(COMPUTE_NODE_TEMPLATE_ID_2);
132         Set<String> expectedNodeTemplateIds2 =  new HashSet<>();
133         expectedNodeTemplateIds2.add(COMPUTE_NODE_TEMPLATE_ID_2);
134         verifyComputeTemplateConsolidationData(consolidationData, COMPUTE_NODE_TEMPLATE_ID_2, expectedNodeTemplateIds2);
135
136         Assert.assertNotEquals(firstComputeTemplateConsolidationData, secondComputeTemplateConsolidationData);
137     }
138
139     private void verifyComputeTemplateConsolidationData(TypeComputeConsolidationData typeComputeConsolidationData,
140             String computeNodeTemplateId, Set<String> expectedComputeNodeTemplateIds) {
141         ComputeTemplateConsolidationData computeTemplateConsolidationData =
142                 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
143         Assert.assertNotNull(computeTemplateConsolidationData);
144         Assert.assertEquals(computeTemplateConsolidationData.getNodeTemplateId(), computeNodeTemplateId);
145
146         verifyGetAllComputeNodeTemplateId(typeComputeConsolidationData, expectedComputeNodeTemplateIds);
147     }
148
149     private void verifyGetAllComputeNodeTemplateId(TypeComputeConsolidationData typeComputeConsolidationData,
150             Set<String> expectedComputeNodeTemplateIds) {
151         Collection<String> allComputeNodeTemplateIds  = typeComputeConsolidationData.getAllComputeNodeTemplateIds();
152         Assert.assertNotNull(allComputeNodeTemplateIds);
153         Assert.assertTrue(allComputeNodeTemplateIds.containsAll(expectedComputeNodeTemplateIds));
154     }
155 }