afbace76d69c6e37bb43bd035fe7c9cd1b9655eb
[so.git] /
1 package org.onap.so.bpmn.infrastructure.scripts
2
3 import org.camunda.bpm.engine.delegate.BpmnError
4 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
5 import org.junit.Before
6 import org.junit.Test
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
14
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
19 /**
20  * Copyright 2018 ZTE Corporation.
21  *
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
25  *
26  *     http://www.apache.org/licenses/LICENSE-2.0
27  *
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.
33  */
34 class DoCompareServiceInstanceDataTest extends MsoGroovyTest {
35
36
37     public static final String uuiSoString = "{\n" +
38             "    \"service\":{\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" +
47             "\n" +
48             "            ],\n" +
49             "            \"resources\":[\n" +
50             "                {\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" +
58             "\n" +
59             "                        ],\n" +
60             "                        \"resources\":[\n" +
61             "\n" +
62             "                        ],\n" +
63             "                        \"requestInputs\":{\n" +
64             "\n" +
65             "                        }\n" +
66             "                    }\n" +
67             "                },\n" +
68             "                {\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" +
76             "\n" +
77             "                        ],\n" +
78             "                        \"resources\":[\n" +
79             "\n" +
80             "                        ],\n" +
81             "                        \"requestInputs\":{\n" +
82             "\n" +
83             "                        }\n" +
84             "                    }\n" +
85             "                },\n" +
86             "                {\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" +
94             "\n" +
95             "                        ],\n" +
96             "                        \"resources\":[\n" +
97             "\n" +
98             "                        ],\n" +
99             "                        \"requestInputs\":{\n" +
100             "\n" +
101             "                        }\n" +
102             "                    }\n" +
103             "                }\n" +
104             "            ],\n" +
105             "            \"requestInputs\":{\n" +
106             "                \"sdwanvpnresource_list\":[\n" +
107             "                    {\n" +
108             "                        \"sdwanvpn_topology\":\"hub_spoke\",\n" +
109             "                        \"sdwanvpn_name\":\"defaultvpn\",\n" +
110             "                        \"sdwansitelan_list\":[\n" +
111             "                            {\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" +
119             "                            },\n" +
120             "                            {\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" +
128             "                            }\n" +
129             "                        ]\n" +
130             "                    }\n" +
131             "                ],\n" +
132             "                \"sdwansiteresource_list\":[\n" +
133             "                    {\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" +
144             "                            {\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" +
156             "                            }\n" +
157             "                        ],\n" +
158             "                        \"sdwandevice_list\":[\n" +
159             "                            {\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" +
167             "                            }\n" +
168             "                        ]\n" +
169             "                    },\n" +
170             "                    {\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" +
181             "                            {\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" +
193             "                            }\n" +
194             "                        ],\n" +
195             "                        \"sdwandevice_list\":[\n" +
196             "                            {\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" +
204             "                            }\n" +
205             "                        ]\n" +
206             "                    }\n" +
207             "                ]\n" +
208             "            }\n" +
209             "        }\n" +
210             "    }\n" +
211             "}"
212
213     @Before
214     void setUp() {
215         super.init("DoCompareServiceInstanceData")
216     }
217
218     @Captor
219     static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
220
221     @Test
222     void testPreProcessRequest() {
223         mockData()
224         DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
225         csi.preProcessRequest(mockExecution)
226     }
227
228     @Test(expected = BpmnError.class)
229     void testPreProcessRequestException() {
230         DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
231         csi.preProcessRequest(mockExecution)
232     }
233
234     @Test
235     void testPrepareDecomposeService_Original() {
236         mockData()
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))
242     }
243
244     @Test
245     void testProcessDecomposition_Original() {
246         mockData()
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))
252     }
253
254     @Test
255     void testDoCompareUuiRquestInput() {
256         mockData()
257         DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
258         csi.doCompareUuiRquestInput(mockExecution)
259         Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
260     }
261
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}",
268             "modelVersion":""
269              }"""
270         serviceModelInfo
271     }
272
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())
283     }
284
285     private ServiceDecomposition getServiceDecomposition() {
286         ServiceDecomposition decomposition = new ServiceDecomposition()
287         List<Resource> allSR_original = new ArrayList<>()
288         decomposition.setAllottedResources(allSR_original)
289         return decomposition
290     }
291
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
300     }
301 }