2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.openecomp.mso.bpmn.vcpe.scripts
23 import org.camunda.bpm.engine.ProcessEngineServices
24 import org.camunda.bpm.engine.RepositoryService
25 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
26 import org.camunda.bpm.engine.repository.ProcessDefinition
27 import org.junit.Before
28 import org.junit.BeforeClass
31 import org.junit.Ignore
32 import org.mockito.MockitoAnnotations
33 import org.camunda.bpm.engine.delegate.BpmnError
34 import org.openecomp.mso.bpmn.core.WorkflowException
35 import org.openecomp.mso.bpmn.mock.FileUtil
37 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
38 import static com.github.tomakehurst.wiremock.client.WireMock.get
39 import static com.github.tomakehurst.wiremock.client.WireMock.patch
40 import static com.github.tomakehurst.wiremock.client.WireMock.put
41 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor
42 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
43 import static org.junit.Assert.*;
44 import static org.mockito.Mockito.*
45 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource
46 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
47 import org.openecomp.mso.bpmn.core.domain.VnfResource
48 import org.openecomp.mso.bpmn.core.domain.AllottedResource
49 import org.openecomp.mso.bpmn.core.domain.ModelInfo
50 import org.openecomp.mso.bpmn.core.domain.HomingSolution
51 import org.openecomp.mso.bpmn.core.RollbackData
52 import org.openecomp.mso.bpmn.vcpe.scripts.MapGetter
53 import org.openecomp.mso.bpmn.vcpe.scripts.MapSetter
55 import com.github.tomakehurst.wiremock.junit.WireMockRule
57 class CreateVcpeResCustServiceTest extends GroovyTestBase {
59 private static String request
62 public WireMockRule wireMockRule = new WireMockRule(PORT)
64 String Prefix = "CVRCS_"
65 String RbType = "DCRENI_"
68 public static void setUpBeforeClass() {
69 request = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/request.json")
75 MockitoAnnotations.initMocks(this)
78 public CreateVcpeResCustServiceTest() {
79 super("CreateVcpeResCustService")
83 // ***** preProcessRequest *****
87 public void preProcessRequest() {
88 ExecutionEntity mex = setupMock()
89 def map = setupMap(mex)
92 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
93 CreateVcpeResCustService.preProcessRequest(mex)
95 verify(mex).getVariable(DBGFLAG)
96 verify(mex).setVariable("prefix", Prefix)
97 verify(mex).setVariable("aaiDistDelay", "aaidelay")
98 verify(mex).setVariable("createVcpeServiceRequest", request)
99 verify(mex).setVariable("msoRequestId", "mri")
100 assertEquals("sii", map.get("serviceInstanceId"))
101 verify(mex).setVariable("requestAction", "ra")
102 verify(mex).setVariable("source", "VID")
103 verify(mex).setVariable("globalSubscriberId", CUST)
104 verify(mex).setVariable("globalCustomerId", CUST)
105 verify(mex).setVariable("subscriptionServiceType", SVC)
106 verify(mex).setVariable("disableRollback", "false")
107 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
108 assertTrue(map.containsKey("subscriberInfo"))
110 verify(mex).setVariable("brgWanMacAddress", "brgmac")
111 verify(mex).setVariable("customerLocation", ["customerLatitude":"32.897480", "customerLongitude":"-97.040443", "customerName":"some_company"])
112 assertTrue(map.containsKey("serviceInputParams"))
113 assertTrue(map.containsKey(Prefix+"requestInfo"))
115 def reqinfo = map.get(Prefix+"requestInfo")
116 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
117 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)
122 public void preProcessRequest_MissingAaiDistDelay() {
123 ExecutionEntity mex = setupMock()
124 def map = setupMap(mex)
127 when(mex.getVariable("URN_mso_workflow_aai_distribution_delay")).thenReturn(null)
129 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
131 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
135 @Ignore // 1802 merge
136 public void preProcessRequest_EmptyParts() {
137 ExecutionEntity mex = setupMock()
138 def map = setupMap(mex)
142 .replace('"source"', '"sourceXXX"')
143 .replace('"BRG_WAN_MAC_Address"', '"BRG_WAN_MAC_AddressXXX"')
144 .replace('"Customer_Location"', '"Customer_LocationXXX"')
146 when(mex.getVariable("bpmnRequest")).thenReturn(req)
147 when(mex.getVariable("serviceInstanceId")).thenReturn(null)
149 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
150 CreateVcpeResCustService.preProcessRequest(mex)
152 verify(mex).getVariable(DBGFLAG)
153 verify(mex).setVariable("prefix", Prefix)
154 verify(mex).setVariable("createVcpeServiceRequest", req)
155 verify(mex).setVariable("msoRequestId", "mri")
156 assertNotNull(map.get("serviceInstanceId"))
157 assertFalse(map.get("serviceInstanceId").isEmpty())
158 verify(mex).setVariable("requestAction", "ra")
159 verify(mex).setVariable("source", "VID")
160 verify(mex).setVariable("globalSubscriberId", CUST)
161 verify(mex).setVariable("globalCustomerId", CUST)
162 verify(mex).setVariable("subscriptionServiceType", SVC)
163 verify(mex).setVariable("disableRollback", "false")
164 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
165 assertTrue(map.containsKey("subscriberInfo"))
167 assertEquals("", map.get("brgWanMacAddress"))
168 assertEquals("", map.get("customerLocation"))
169 assertTrue(map.containsKey("serviceInputParams"))
170 assertTrue(map.containsKey(Prefix+"requestInfo"))
172 def reqinfo = map.get(Prefix+"requestInfo")
174 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
175 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)
180 public void preProcessRequest_MissingSubscriberId() {
181 ExecutionEntity mex = setupMock()
182 def map = setupMap(mex)
186 .replace('"globalSubscriberId"', '"globalSubscriberIdXXX"')
188 when(mex.getVariable("bpmnRequest")).thenReturn(req)
189 when(mex.getVariable("serviceInstanceId")).thenReturn(null)
191 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
193 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
198 public void preProcessRequest_BpmnError() {
199 ExecutionEntity mex = setupMock()
202 when(mex.getVariable("bpmnRequest")).thenThrow(new BpmnError("expected exception"))
204 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
206 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
211 public void preProcessRequest_Ex() {
212 ExecutionEntity mex = setupMock()
215 when(mex.getVariable("bpmnRequest")).thenThrow(new RuntimeException("expected exception"))
217 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
219 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
222 // ***** sendSyncResponse *****
226 public void sendSyncResponse() {
227 ExecutionEntity mex = setupMock()
228 def map = setupMap(mex)
229 initSendSyncResponse(mex)
231 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
232 CreateVcpeResCustService.sendSyncResponse(mex)
234 verify(mex, times(2)).getVariable(DBGFLAG)
236 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
238 assertEquals("202", map.get(processName+"ResponseCode"))
239 assertEquals("Success", map.get(processName+"Status"))
241 def resp = map.get(processName+"Response")
243 assertTrue(resp.indexOf('"instanceId":"sii"') >= 0)
244 assertTrue(resp.indexOf('"requestId":"mri"') >= 0)
249 public void sendSyncResponse_Ex() {
250 ExecutionEntity mex = setupMock()
251 initSendSyncResponse(mex)
253 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
255 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
257 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.sendSyncResponse(mex) }))
261 // ***** prepareDecomposeService *****
265 public void prepareDecomposeService() {
266 ExecutionEntity mex = setupMock()
267 initPrepareDecomposeService(mex)
269 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
270 CreateVcpeResCustService.prepareDecomposeService(mex)
272 verify(mex).getVariable(DBGFLAG)
273 verify(mex).setVariable("serviceModelInfo", "mi")
278 public void prepareDecomposeService_Ex() {
279 ExecutionEntity mex = setupMock()
280 initPrepareDecomposeService(mex)
282 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
284 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
286 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareDecomposeService(mex) }))
290 // ***** prepareCreateServiceInstance *****
294 public void prepareCreateServiceInstance() {
295 ExecutionEntity mex = setupMock()
296 initPrepareCreateServiceInstance(mex)
298 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
299 CreateVcpeResCustService.prepareCreateServiceInstance(mex)
301 verify(mex).getVariable(DBGFLAG)
302 verify(mex).setVariable("serviceInstanceName", "VCPE1")
303 verify(mex).setVariable("serviceDecompositionString", "mydecomp")
308 public void prepareCreateServiceInstance_Ex() {
309 ExecutionEntity mex = setupMock()
310 initPrepareCreateServiceInstance(mex)
312 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
314 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
316 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateServiceInstance(mex) }))
320 // ***** postProcessServiceInstanceCreate *****
324 public void postProcessServiceInstanceCreate() {
325 ExecutionEntity mex = setupMock()
326 def map = setupMap(mex)
327 initPostProcessServiceInstanceCreate(mex)
329 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
330 CreateVcpeResCustService.postProcessServiceInstanceCreate(mex)
332 verify(mex).getVariable(DBGFLAG)
334 def reqinfo = map.get(Prefix+"setUpdateDbInstancePayload")
336 assertTrue(reqinfo.indexOf("<requestId>mri</") >= 0)
337 assertTrue(reqinfo.indexOf("<serviceInstanceId>sii</") >= 0)
338 assertTrue(reqinfo.indexOf("<serviceInstanceName>sin</") >= 0)
343 public void postProcessServiceInstanceCreate_BpmnError() {
344 ExecutionEntity mex = setupMock()
345 initPostProcessServiceInstanceCreate(mex)
347 doThrow(new BpmnError("expected exception")).when(mex).setVariable(endsWith("setUpdateDbInstancePayload"), any())
349 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
351 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessServiceInstanceCreate(mex) }))
356 public void postProcessServiceInstanceCreate_Ex() {
357 ExecutionEntity mex = setupMock()
358 initPostProcessServiceInstanceCreate(mex)
360 doThrow(new RuntimeException("expected exception")).when(mex).setVariable(endsWith("setUpdateDbInstancePayload"), any())
362 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
364 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessServiceInstanceCreate(mex) }))
368 // ***** processDecomposition *****
372 public void processDecomposition() {
373 ExecutionEntity mex = setupMock()
374 def svcdecomp = initProcessDecomposition(mex)
376 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
377 CreateVcpeResCustService.processDecomposition(mex)
379 verify(mex).getVariable(DBGFLAG)
381 verify(mex).setVariable("vnfList", svcdecomp.getServiceVnfs())
382 verify(mex).setVariable("vnfListString", '[myvnf]')
383 verify(mex).setVariable(Prefix+"VNFsCount", 1)
385 verify(mex).setVariable("vnfModelInfo", "mymodel")
386 verify(mex).setVariable("vnfModelInfoString", "mymodel")
391 public void processDecomposition_EmptyNet_EmptyVnf() {
392 ExecutionEntity mex = setupMock()
393 def svcdecomp = initProcessDecomposition(mex)
395 when(svcdecomp.getServiceVnfs()).thenReturn(new LinkedList<VnfResource>())
397 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
398 CreateVcpeResCustService.processDecomposition(mex)
400 verify(mex).getVariable(DBGFLAG)
402 verify(mex).setVariable("vnfList", svcdecomp.getServiceVnfs())
403 verify(mex).setVariable("vnfListString", '[]')
404 verify(mex).setVariable(Prefix+"VNFsCount", 0)
406 verify(mex).setVariable("vnfModelInfo", "")
407 verify(mex).setVariable("vnfModelInfoString", "")
412 public void processDecomposition_Ex() {
413 ExecutionEntity mex = setupMock()
414 def svcdecomp = initProcessDecomposition(mex)
416 when(svcdecomp.getServiceVnfs()).thenThrow(new RuntimeException("expected exception"))
418 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
420 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processDecomposition(mex) }))
424 // ***** filterVnfs *****
428 public void filterVnfs() {
429 ExecutionEntity mex = setupMock()
430 def svcdecomp = initFilterVnfs(mex)
432 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
433 CreateVcpeResCustService.processDecomposition(mex)
435 verify(mex).setVariable("vnfListString", '[myvnf3, myvnf5]')
440 public void filterVnfs_Null() {
441 ExecutionEntity mex = setupMock()
442 def svcdecomp = initFilterVnfs(mex)
444 when(svcdecomp.getServiceVnfs()).thenReturn(null)
446 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
447 CreateVcpeResCustService.processDecomposition(mex)
449 // nothing more to check, as long as it didn't throw an exception
453 // ***** prepareCreateAllottedResourceTXC *****
457 public void prepareCreateAllottedResourceTXC() {
458 ExecutionEntity mex = setupMock()
459 initPrepareCreateAllottedResourceTXC(mex)
461 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
462 CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex)
464 verify(mex).getVariable(DBGFLAG)
466 verify(mex).setVariable("createTXCAR", true)
467 verify(mex).setVariable("allottedResourceModelInfoTXC", "modelB")
468 verify(mex).setVariable("allottedResourceRoleTXC", "TXCr")
469 verify(mex).setVariable("allottedResourceTypeTXC", "TunnelXConn")
470 verify(mex).setVariable("parentServiceInstanceIdTXC", "homeB")
475 public void prepareCreateAllottedResourceTXC_NullArList() {
476 ExecutionEntity mex = setupMock()
477 def svcdecomp = initPrepareCreateAllottedResourceTXC(mex)
479 when(svcdecomp.getServiceAllottedResources()).thenReturn(null)
481 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
482 CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex)
484 verify(mex).getVariable(DBGFLAG)
486 verify(mex, never()).setVariable("createTXCAR", true)
487 verify(mex, never()).setVariable("allottedResourceModelInfoTXC", "modelB")
488 verify(mex, never()).setVariable("allottedResourceRoleTXC", "TXCr")
489 verify(mex, never()).setVariable("allottedResourceTypeTXC", "TunnelXConn")
490 verify(mex, never()).setVariable("parentServiceInstanceIdTXC", "homeB")
495 public void prepareCreateAllottedResourceTXC_Ex() {
496 ExecutionEntity mex = setupMock()
497 initPrepareCreateAllottedResourceTXC(mex)
499 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
501 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
503 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex) }))
507 // ***** prepareCreateAllottedResourceBRG *****
511 public void prepareCreateAllottedResourceBRG() {
512 ExecutionEntity mex = setupMock()
513 initPrepareCreateAllottedResourceBRG(mex)
515 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
516 CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex)
518 verify(mex).getVariable(DBGFLAG)
520 verify(mex).setVariable("createBRGAR", true)
521 verify(mex).setVariable("allottedResourceModelInfoBRG", "modelB")
522 verify(mex).setVariable("allottedResourceRoleBRG", "BRGr")
523 verify(mex).setVariable("allottedResourceTypeBRG", "BRG")
524 verify(mex).setVariable("parentServiceInstanceIdBRG", "homeB")
529 public void prepareCreateAllottedResourceBRG_NullArList() {
530 ExecutionEntity mex = setupMock()
531 def svcdecomp = initPrepareCreateAllottedResourceBRG(mex)
533 when(svcdecomp.getServiceAllottedResources()).thenReturn(null)
535 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
536 CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex)
538 verify(mex).getVariable(DBGFLAG)
540 verify(mex, never()).setVariable("createBRGAR", true)
541 verify(mex, never()).setVariable("allottedResourceModelInfoBRG", "modelB")
542 verify(mex, never()).setVariable("allottedResourceRoleBRG", "BRGr")
543 verify(mex, never()).setVariable("allottedResourceTypeBRG", "BRG")
544 verify(mex, never()).setVariable("parentServiceInstanceIdBRG", "homeB")
549 public void prepareCreateAllottedResourceBRG_Ex() {
550 ExecutionEntity mex = setupMock()
551 initPrepareCreateAllottedResourceBRG(mex)
553 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
555 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
557 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex) }))
561 // ***** prepareVnfAndModulesCreate *****
565 public void prepareVnfAndModulesCreate() {
566 ExecutionEntity mex = setupMock()
567 initPrepareVnfAndModulesCreate(mex)
569 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
570 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
572 verify(mex).getVariable(DBGFLAG)
574 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
575 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
576 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
581 public void prepareVnfAndModulesCreate_EmptyList() {
582 ExecutionEntity mex = setupMock()
583 initPrepareVnfAndModulesCreate(mex)
585 when(mex.getVariable("vnfList")).thenReturn(new LinkedList<VnfResource>())
587 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
588 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
590 verify(mex).getVariable(DBGFLAG)
592 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
593 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
594 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
599 public void prepareVnfAndModulesCreate_NullList() {
600 ExecutionEntity mex = setupMock()
601 initPrepareVnfAndModulesCreate(mex)
603 when(mex.getVariable("vnfList")).thenReturn(null)
605 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
606 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
608 verify(mex).getVariable(DBGFLAG)
610 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
611 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
612 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
617 public void prepareVnfAndModulesCreate_Ex() {
618 ExecutionEntity mex = setupMock()
619 initPrepareVnfAndModulesCreate(mex)
621 when(mex.getVariable("vnfList")).thenThrow(new RuntimeException("expected exception"))
623 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
625 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareVnfAndModulesCreate(mex) }))
629 // ***** validateVnfCreate *****
633 public void validateVnfCreate() {
634 ExecutionEntity mex = setupMock()
635 initValidateVnfCreate(mex)
637 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
638 CreateVcpeResCustService.validateVnfCreate(mex)
640 verify(mex).getVariable(DBGFLAG)
642 verify(mex).setVariable(Prefix+"VnfsCreatedCount", 3)
647 public void validateVnfCreate_Ex() {
648 ExecutionEntity mex = setupMock()
649 initValidateVnfCreate(mex)
651 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenThrow(new RuntimeException("expected exception"))
653 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
655 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.validateVnfCreate(mex) }))
659 // ***** postProcessResponse *****
663 public void postProcessResponse() {
664 ExecutionEntity mex = setupMock()
665 def map = setupMap(mex)
666 initPostProcessResponse(mex)
668 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
669 CreateVcpeResCustService.postProcessResponse(mex)
671 verify(mex).getVariable(DBGFLAG)
673 verify(mex).setVariable(Prefix+"Success", true)
675 def reqinfo = map.get(Prefix+"CompleteMsoProcessRequest")
677 assertTrue(reqinfo.indexOf("request-id>mri</") >= 0)
678 assertTrue(reqinfo.indexOf("source>mysrc</") >= 0)
679 assertTrue(reqinfo.indexOf("serviceInstanceId>sii</") >= 0)
684 public void postProcessResponse_BpmnError() {
685 ExecutionEntity mex = setupMock()
686 def map = setupMap(mex)
687 initPostProcessResponse(mex)
689 when(mex.getVariable("source")).thenThrow(new BpmnError("expected exception"))
691 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
693 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessResponse(mex) }))
698 public void postProcessResponse_Ex() {
699 ExecutionEntity mex = setupMock()
700 def map = setupMap(mex)
701 initPostProcessResponse(mex)
703 when(mex.getVariable("source")).thenThrow(new RuntimeException("expected exception"))
705 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
707 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessResponse(mex) }))
711 // ***** preProcessRollback *****
715 public void preProcessRollback() {
716 ExecutionEntity mex = setupMock()
717 def wfe = initPreProcessRollback(mex)
719 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
720 CreateVcpeResCustService.preProcessRollback(mex)
722 verify(mex).getVariable(DBGFLAG)
724 verify(mex).setVariable("prevWorkflowException", wfe)
729 public void preProcessRollback_NullWfe() {
730 ExecutionEntity mex = setupMock()
731 def map = setupMap(mex)
732 def wfe = initPreProcessRollback(mex)
734 when(mex.getVariable("WorkflowException")).thenReturn(null)
736 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
737 CreateVcpeResCustService.preProcessRollback(mex)
739 verify(mex).getVariable(DBGFLAG)
741 assertFalse(map.containsKey("prevWorkflowException"))
746 public void preProcessRollback_BpmnError() {
747 ExecutionEntity mex = setupMock()
748 def map = setupMap(mex)
749 def wfe = initPreProcessRollback(mex)
751 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
753 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
754 CreateVcpeResCustService.preProcessRollback(mex)
756 verify(mex).getVariable(DBGFLAG)
758 assertFalse(map.containsKey("prevWorkflowException"))
763 public void preProcessRollback_Ex() {
764 ExecutionEntity mex = setupMock()
765 def map = setupMap(mex)
766 def wfe = initPreProcessRollback(mex)
768 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
770 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
771 CreateVcpeResCustService.preProcessRollback(mex)
773 verify(mex).getVariable(DBGFLAG)
775 assertFalse(map.containsKey("prevWorkflowException"))
779 // ***** postProcessRollback *****
783 public void postProcessRollback() {
784 ExecutionEntity mex = setupMock()
785 def wfe = initPostProcessRollback(mex)
787 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
788 CreateVcpeResCustService.postProcessRollback(mex)
790 verify(mex).getVariable(DBGFLAG)
792 verify(mex).setVariable("WorkflowException", wfe)
797 public void postProcessRollback_NullWfe() {
798 ExecutionEntity mex = setupMock()
799 def map = setupMap(mex)
800 def wfe = initPostProcessRollback(mex)
802 when(mex.getVariable("prevWorkflowException")).thenReturn(null)
804 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
805 CreateVcpeResCustService.postProcessRollback(mex)
807 verify(mex).getVariable(DBGFLAG)
809 assertFalse(map.containsKey("WorkflowException"))
814 public void postProcessRollback_BpmnError() {
815 ExecutionEntity mex = setupMock()
816 def map = setupMap(mex)
817 def wfe = initPostProcessRollback(mex)
819 when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
821 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
822 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessRollback(mex) }))
827 public void postProcessRollback_Ex() {
828 ExecutionEntity mex = setupMock()
829 def map = setupMap(mex)
830 def wfe = initPostProcessRollback(mex)
832 when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
834 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
835 CreateVcpeResCustService.postProcessRollback(mex)
837 verify(mex).getVariable(DBGFLAG)
839 assertFalse(map.containsKey("WorkflowException"))
843 // ***** prepareFalloutRequest *****
847 public void prepareFalloutRequest() {
848 ExecutionEntity mex = setupMock()
849 def map = setupMap(mex)
850 initPrepareFalloutRequest(mex)
852 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
853 CreateVcpeResCustService.prepareFalloutRequest(mex)
855 verify(mex, times(2)).getVariable(DBGFLAG)
857 def fo = map.get(Prefix+"falloutRequest")
859 assertTrue(fo.indexOf("<hello>world</") >= 0)
860 assertTrue(fo.indexOf("ErrorMessage>mymsg</") >= 0)
861 assertTrue(fo.indexOf("ErrorCode>999</") >= 0)
866 public void prepareFalloutRequest_Ex() {
867 ExecutionEntity mex = setupMock()
868 def map = setupMap(mex)
869 initPrepareFalloutRequest(mex)
871 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
873 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
875 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareFalloutRequest(mex) }))
878 // ***** sendSyncError *****
882 public void sendSyncError() {
883 ExecutionEntity mex = setupMock()
884 def map = setupMap(mex)
885 initSendSyncError(mex)
887 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
888 CreateVcpeResCustService.sendSyncError(mex)
890 verify(mex, times(2)).getVariable(DBGFLAG)
892 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
894 assertEquals("500", map.get(processName+"ResponseCode"))
895 assertEquals("Fail", map.get(processName+"Status"))
897 def resp = map.get(processName+"Response")
899 assertTrue(resp.indexOf("ErrorMessage>mymsg</") >= 0)
901 verify(mex).setVariable("WorkflowResponse", resp)
906 public void sendSyncError_NotWfe() {
907 ExecutionEntity mex = setupMock()
908 def map = setupMap(mex)
909 initSendSyncError(mex)
911 when(mex.getVariable("WorkflowException")).thenReturn("not a WFE")
913 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
914 CreateVcpeResCustService.sendSyncError(mex)
916 verify(mex, times(2)).getVariable(DBGFLAG)
918 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
920 assertEquals("500", map.get(processName+"ResponseCode"))
921 assertEquals("Fail", map.get(processName+"Status"))
923 def resp = map.get(processName+"Response")
925 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
927 verify(mex).setVariable("WorkflowResponse", resp)
932 public void sendSyncError_NullWfe() {
933 ExecutionEntity mex = setupMock()
934 def map = setupMap(mex)
935 initSendSyncError(mex)
937 when(mex.getVariable("WorkflowException")).thenReturn(null)
939 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
940 CreateVcpeResCustService.sendSyncError(mex)
942 verify(mex, times(2)).getVariable(DBGFLAG)
944 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
946 assertEquals("500", map.get(processName+"ResponseCode"))
947 assertEquals("Fail", map.get(processName+"Status"))
949 def resp = map.get(processName+"Response")
951 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
953 verify(mex).setVariable("WorkflowResponse", resp)
958 public void sendSyncError_Ex() {
959 ExecutionEntity mex = setupMock()
960 def map = setupMap(mex)
961 initSendSyncError(mex)
963 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
965 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
967 CreateVcpeResCustService.sendSyncError(mex)
969 assertFalse(map.containsKey(processName+"ResponseCode"))
973 // ***** processJavaException *****
977 public void processJavaException() {
978 ExecutionEntity mex = setupMock()
979 def map = setupMap(mex)
980 initProcessJavaException(mex)
982 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
984 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
986 verify(mex, times(2)).getVariable(DBGFLAG)
988 verify(mex).setVariable("prefix", Prefix)
990 def wfe = map.get("WorkflowException")
992 assertEquals("Caught a Java Lang Exception", wfe.getErrorMessage())
997 public void processJavaException_BpmnError() {
998 ExecutionEntity mex = setupMock()
999 def map = setupMap(mex)
1000 initProcessJavaException(mex)
1002 when(mex.getVariables()).thenThrow(new BpmnError("expected exception"))
1004 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
1006 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
1008 assertFalse(map.containsKey("WorkflowException"))
1013 public void processJavaException_Ex() {
1014 ExecutionEntity mex = setupMock()
1015 def map = setupMap(mex)
1016 initProcessJavaException(mex)
1018 when(mex.getVariables()).thenThrow(new RuntimeException("expected exception"))
1020 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
1022 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
1024 def wfe = map.get("WorkflowException")
1026 assertEquals("Exception in processJavaException method", wfe.getErrorMessage())
1030 private void initPreProcess(ExecutionEntity mex) {
1031 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1032 when(mex.getVariable("bpmnRequest")).thenReturn(request)
1033 when(mex.getVariable("URN_mso_workflow_aai_distribution_delay")).thenReturn("aaidelay")
1034 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1035 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1036 when(mex.getVariable("requestAction")).thenReturn("ra")
1039 private initSendSyncResponse(ExecutionEntity mex) {
1040 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1041 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1042 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1045 private void initPrepareDecomposeService(ExecutionEntity mex) {
1046 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1047 when(mex.getVariable("createVcpeServiceRequest")).thenReturn('{"requestDetails":{"modelInfo":"mi"}}')
1050 private void initPrepareCreateServiceInstance(ExecutionEntity mex) {
1051 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1053 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1054 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1055 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1057 when(svcdecomp.toJsonStringNoRootName()).thenReturn("mydecomp")
1060 private void initPostProcessServiceInstanceCreate(ExecutionEntity mex) {
1061 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1062 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1063 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1064 when(mex.getVariable("serviceInstanceName")).thenReturn("sin")
1067 private ServiceDecomposition initProcessDecomposition(ExecutionEntity mex) {
1068 List<VnfResource> vnflst = new LinkedList<>()
1069 vnflst.add(makeVnf("", ""))
1070 vnflst.add(makeVnf("2", "BRG"))
1071 vnflst.add(makeVnf("3", "BRG"))
1073 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1074 when(svcdecomp.getServiceVnfs()).thenReturn(vnflst)
1076 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1077 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1078 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1079 when(mex.getVariable("serviceInstanceName")).thenReturn("sin")
1084 private ServiceDecomposition initFilterVnfs(ExecutionEntity mex) {
1085 List<VnfResource> vnflst = new LinkedList<>()
1086 vnflst.add(makeVnf("", "BRG"))
1087 vnflst.add(makeVnf("2", "TunnelXConn"))
1088 vnflst.add(makeVnf("3", ""))
1089 vnflst.add(makeVnf("4", "BRG"))
1090 vnflst.add(makeVnf("5", "other"))
1092 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1093 when(svcdecomp.getServiceVnfs()).thenReturn(vnflst)
1095 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1096 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1097 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1098 when(mex.getVariable("serviceInstanceName")).thenReturn("sin")
1103 private initAwaitAaiDistribution(ExecutionEntity mex) {
1104 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1107 private ServiceDecomposition initPrepareCreateAllottedResourceTXC(ExecutionEntity mex) {
1108 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1109 List<AllottedResource> arlst = new LinkedList<>()
1111 arlst.add(makeArBRG("A"))
1112 arlst.add(makeArTXC("B"))
1113 arlst.add(makeArBRG("C"))
1115 when(svcdecomp.getServiceAllottedResources()).thenReturn(arlst)
1117 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1118 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1119 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1120 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
1125 private ServiceDecomposition initPrepareCreateAllottedResourceBRG(ExecutionEntity mex) {
1126 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1127 List<AllottedResource> arlst = new LinkedList<>()
1129 arlst.add(makeArTXC("A"))
1130 arlst.add(makeArBRG("B"))
1131 arlst.add(makeArTXC("C"))
1133 when(svcdecomp.getServiceAllottedResources()).thenReturn(arlst)
1135 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1136 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1137 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1138 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
1143 private AllottedResource makeArTXC(String id) {
1144 AllottedResource ar = mock(AllottedResource.class)
1145 ModelInfo mod = mock(ModelInfo.class)
1146 HomingSolution home = mock(HomingSolution.class)
1148 when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
1149 when(ar.getAllottedResourceType()).thenReturn("TunnelXConn")
1150 when(ar.getModelInfo()).thenReturn(mod)
1151 when(ar.getAllottedResourceRole()).thenReturn("TXCr")
1152 when(ar.getHomingSolution()).thenReturn(home)
1154 when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
1156 when(home.getServiceInstanceId()).thenReturn("home"+id)
1161 private AllottedResource makeArBRG(String id) {
1162 AllottedResource ar = mock(AllottedResource.class)
1163 ModelInfo mod = mock(ModelInfo.class)
1164 HomingSolution home = mock(HomingSolution.class)
1166 when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
1167 when(ar.getAllottedResourceType()).thenReturn("BRG")
1168 when(ar.getModelInfo()).thenReturn(mod)
1169 when(ar.getAllottedResourceRole()).thenReturn("BRGr")
1170 when(ar.getHomingSolution()).thenReturn(home)
1172 when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
1174 when(home.getServiceInstanceId()).thenReturn("home"+id)
1179 private initPrepareVnfAndModulesCreate(ExecutionEntity mex) {
1181 List<VnfResource> vnflst = new LinkedList<>()
1183 vnflst.add(makeVnf("A", "BRG"))
1184 vnflst.add(makeVnf("B", ""))
1185 vnflst.add(makeVnf("C", ""))
1186 vnflst.add(makeVnf("D", "TunnelXConn"))
1188 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1189 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1190 when(mex.getVariable("vnfList")).thenReturn(vnflst)
1191 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenReturn(2)
1192 when(mex.getVariable("vnfModelInfo")).thenReturn("nomodel")
1193 when(mex.getVariable("sdncVersion")).thenReturn("myvers")
1196 private VnfResource makeVnf(String id, String role) {
1197 ModelInfo mod = mock(ModelInfo.class)
1198 VnfResource vnf = mock(VnfResource.class)
1200 when(mod.toString()).thenReturn('{"modelInfo":"mymodel'+id+'"}')
1202 when(vnf.toString()).thenReturn("myvnf"+id)
1203 when(vnf.getModelInfo()).thenReturn(mod)
1204 when(vnf.getNfRole()).thenReturn(role)
1209 private initValidateVnfCreate(ExecutionEntity mex) {
1210 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1211 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenReturn(2)
1214 private initPostProcessResponse(ExecutionEntity mex) {
1215 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1216 when(mex.getVariable("source")).thenReturn("mysrc")
1217 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1218 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1221 private WorkflowException initPreProcessRollback(ExecutionEntity mex) {
1222 WorkflowException wfe = mock(WorkflowException.class)
1224 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1225 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1230 private WorkflowException initPostProcessRollback(ExecutionEntity mex) {
1231 WorkflowException wfe = mock(WorkflowException.class)
1233 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1234 when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
1239 private initPrepareFalloutRequest(ExecutionEntity mex) {
1240 WorkflowException wfe = mock(WorkflowException.class)
1242 when(wfe.getErrorMessage()).thenReturn("mymsg")
1243 when(wfe.getErrorCode()).thenReturn(999)
1245 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1246 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1247 when(mex.getVariable(Prefix+"requestInfo")).thenReturn("<hello>world</hello>")
1252 private initSendSyncError(ExecutionEntity mex) {
1253 WorkflowException wfe = mock(WorkflowException.class)
1255 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1256 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1257 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1259 when(wfe.getErrorMessage()).thenReturn("mymsg")
1262 private initProcessJavaException(ExecutionEntity mex) {
1263 when(mex.getVariable(DBGFLAG)).thenReturn("true")