1 package org.onap.so.bpmn.infrastructure.scripts
3 import org.camunda.bpm.engine.delegate.BpmnError
4 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
5 import org.junit.Before
7 import org.mockito.ArgumentCaptor
8 import org.mockito.Captor
9 import org.mockito.Mockito
10 import org.onap.aai.domain.yang.ServiceInstance
11 import org.onap.so.bpmn.common.scripts.MsoGroovyTest
12 import org.onap.so.bpmn.core.domain.Resource
13 import org.onap.so.bpmn.core.domain.ServiceDecomposition
15 import static com.shazam.shazamcrest.MatcherAssert.assertThat
16 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs
17 import static org.mockito.Mockito.times
18 import static org.mockito.Mockito.when
20 * Copyright 2018 ZTE Corporation.
22 * Licensed under the Apache License, Version 2.0 (the "License");
23 * you may not use this file except in compliance with the License.
24 * You may obtain a copy of the License at
26 * http://www.apache.org/licenses/LICENSE-2.0
28 * Unless required by applicable law or agreed to in writing, software
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 class DoCompareServiceInstanceDataTest extends MsoGroovyTest {
37 public static final String uuiSoString = "{\n" +
39 " \"name\":\"SiteService\",\n" +
40 " \"description\":\"SiteService\",\n" +
41 " \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n" +
42 " \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n" +
43 " \"globalSubscriberId\":\"test_custormer\",\n" +
44 " \"serviceType\":\"example-service-type\",\n" +
45 " \"parameters\":{\n" +
46 " \"locationConstraints\":[\n" +
49 " \"resources\":[\n" +
51 " \"resourceIndex\":\"1\",\n" +
52 " \"resourceName\":\"sdwanvpnresource\",\n" +
53 " \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n" +
54 " \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n" +
55 " \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n" +
56 " \"parameters\":{\n" +
57 " \"locationConstraints\":[\n" +
60 " \"resources\":[\n" +
63 " \"requestInputs\":{\n" +
69 " \"resourceIndex\":\"1\",\n" +
70 " \"resourceName\":\"sdwansiteresource\",\n" +
71 " \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n" +
72 " \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n" +
73 " \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n" +
74 " \"parameters\":{\n" +
75 " \"locationConstraints\":[\n" +
78 " \"resources\":[\n" +
81 " \"requestInputs\":{\n" +
87 " \"resourceIndex\":\"2\",\n" +
88 " \"resourceName\":\"sdwansiteresource\",\n" +
89 " \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n" +
90 " \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n" +
91 " \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n" +
92 " \"parameters\":{\n" +
93 " \"locationConstraints\":[\n" +
96 " \"resources\":[\n" +
99 " \"requestInputs\":{\n" +
105 " \"requestInputs\":{\n" +
106 " \"sdwanvpnresource_list\":[\n" +
108 " \"sdwanvpn_topology\":\"hub_spoke\",\n" +
109 " \"sdwanvpn_name\":\"defaultvpn\",\n" +
110 " \"sdwansitelan_list\":[\n" +
112 " \"role\":\"Hub\",\n" +
113 " \"portType\":\"GE\",\n" +
114 " \"portSwitch\":\"layer3-port\",\n" +
115 " \"vlanId\":\"\",\n" +
116 " \"ipAddress\":\"192.168.10.1\",\n" +
117 " \"deviceName\":\"vCPE\",\n" +
118 " \"portNumer\":\"0/0/1\"\n" +
121 " \"role\":\"Hub\",\n" +
122 " \"portType\":\"GE\",\n" +
123 " \"portSwitch\":\"layer2-port\",\n" +
124 " \"vlanId\":\"55\",\n" +
125 " \"ipAddress\":\"192.168.11.1\",\n" +
126 " \"deviceName\":\"CPE_Beijing\",\n" +
127 " \"portNumer\":\"0/0/1\"\n" +
132 " \"sdwansiteresource_list\":[\n" +
134 " \"sdwansite_emails\":\"chenchuanyu@huawei.com\",\n" +
135 " \"sdwansite_address\":\"Huawei Public Cloud\",\n" +
136 " \"sdwansite_description\":\"DC Site\",\n" +
137 " \"sdwansite_role\":\"dsvpn_hub\",\n" +
138 " \"sdwansite_postcode\":\"20000\",\n" +
139 " \"sdwansite_type\":\"single_gateway\",\n" +
140 " \"sdwansite_latitude\":\"\",\n" +
141 " \"sdwansite_controlPoint\":\"\",\n" +
142 " \"sdwansite_longitude\":\"\",\n" +
143 " \"sdwansitewan_list\":[\n" +
145 " \"providerIpAddress\":\"\",\n" +
146 " \"portType\":\"GE\",\n" +
147 " \"inputBandwidth\":\"1000\",\n" +
148 " \"ipAddress\":\"\",\n" +
149 " \"name\":\"10000\",\n" +
150 " \"transportNetworkName\":\"internet\",\n" +
151 " \"outputBandwidth\":\"10000\",\n" +
152 " \"deviceName\":\"vCPE\",\n" +
153 " \"portNumber\":\"0/0/0\",\n" +
154 " \"ipMode\":\"DHCP\",\n" +
155 " \"publicIP\":\"119.3.7.113\"\n" +
158 " \"sdwandevice_list\":[\n" +
160 " \"esn\":\"XXXXXXX\",\n" +
161 " \"vendor\":\"Huawei\",\n" +
162 " \"name\":\"vCPE\",\n" +
163 " \"type\":\"AR1000V\",\n" +
164 " \"version\":\"1.0\",\n" +
165 " \"class\":\"VNF\",\n" +
166 " \"systemIp\":\"20.20.20.1\"\n" +
171 " \"sdwansite_emails\":\"chenchuanyu@huawei.com\",\n" +
172 " \"sdwansite_address\":\"Huawei Public Cloud\",\n" +
173 " \"sdwansite_description\":\"DC Site\",\n" +
174 " \"sdwansite_role\":\"dsvpn_hub\",\n" +
175 " \"sdwansite_postcode\":\"20000\",\n" +
176 " \"sdwansite_type\":\"single_gateway\",\n" +
177 " \"sdwansite_latitude\":\"\",\n" +
178 " \"sdwansite_controlPoint\":\"\",\n" +
179 " \"sdwansite_longitude\":\"\",\n" +
180 " \"sdwansitewan_list\":[\n" +
182 " \"providerIpAddress\":\"\",\n" +
183 " \"portType\":\"GE\",\n" +
184 " \"inputBandwidth\":\"1000\",\n" +
185 " \"ipAddress\":\"172.18.1.2/24\",\n" +
186 " \"name\":\"10000\",\n" +
187 " \"transportNetworkName\":\"internet\",\n" +
188 " \"outputBandwidth\":\"10000\",\n" +
189 " \"deviceName\":\"CPE_Beijing\",\n" +
190 " \"portNumber\":\"0/0/0\",\n" +
191 " \"ipMode\":\"Static\",\n" +
192 " \"publicIP\":\"\"\n" +
195 " \"sdwandevice_list\":[\n" +
197 " \"esn\":\"XXXXXXX\",\n" +
198 " \"vendor\":\"Huawei\",\n" +
199 " \"name\":\"CPE_Beijing\",\n" +
200 " \"type\":\"AR161\",\n" +
201 " \"version\":\"1.0\",\n" +
202 " \"class\":\"PNF\",\n" +
203 " \"systemIp\":\"20.20.20.2\"\n" +
215 super.init("DoCompareServiceInstanceData")
219 static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
222 void testPreProcessRequest() {
224 DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
225 csi.preProcessRequest(mockExecution)
228 @Test(expected = BpmnError.class)
229 void testPreProcessRequestException() {
230 DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
231 csi.preProcessRequest(mockExecution)
235 void testPrepareDecomposeService_Original() {
237 DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
238 csi.prepareDecomposeService_Original(mockExecution)
239 Mockito.verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
240 String serviceModelInfo = getServiceModelInfo()
241 assertThat(captor.getValue(), sameBeanAs(serviceModelInfo))
245 void testProcessDecomposition_Original() {
247 DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
248 csi.processDecomposition_Original(mockExecution)
249 Mockito.verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
250 ServiceDecomposition serviceDecomposition = getServiceDecomposition()
251 assertThat(captor.getValue(), sameBeanAs(serviceDecomposition))
255 void testDoCompareUuiRquestInput() {
257 DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
258 csi.doCompareUuiRquestInput(mockExecution)
259 Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
262 private String getServiceModelInfo() {
263 String modelInvariantUuid = mockExecution.getVariable("model-invariant-id-original")
264 String modelUuid = mockExecution.getVariable("model-version-id-original")
265 String serviceModelInfo = """{
266 "modelInvariantUuid":"${modelInvariantUuid}",
267 "modelUuid":"${modelUuid}",
273 private void mockData() {
274 when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
275 when(mockExecution.getVariable("msoRequestId")).thenReturn("12345")
276 when(mockExecution.getVariable("model-version-id-original")).thenReturn("12345")
277 when(mockExecution.getVariable("model-invariant-id-original")).thenReturn("12345")
278 when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiSoString)
279 when(mockExecution.getVariable("serviceInstanceId")).thenReturn("1234")
280 when(mockExecution.getVariable("serviceInstanceData-original")).thenReturn(getExpectedServiceInstance())
281 when(mockExecution.getVariable("serviceDecomposition")).thenReturn(getServiceDecomposition())
282 when(mockExecution.getVariable("serviceDecomposition_Original")).thenReturn(getServiceDecomposition())
285 private ServiceDecomposition getServiceDecomposition() {
286 ServiceDecomposition decomposition = new ServiceDecomposition()
287 List<Resource> allSR_original = new ArrayList<>()
288 decomposition.setAllottedResources(allSR_original)
292 private ServiceInstance getExpectedServiceInstance() {
293 ServiceInstance expectedServiceInstanceData = new ServiceInstance()
294 expectedServiceInstanceData.setServiceInstanceId("1234")
295 expectedServiceInstanceData.setServiceInstanceName("volte-service")
296 expectedServiceInstanceData.setServiceType("E2E Service")
297 expectedServiceInstanceData.setServiceRole("E2E Service")
298 expectedServiceInstanceData.setInputParameters(uuiSoString)
299 return expectedServiceInstanceData