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
\r
24 import org.camunda.bpm.engine.RepositoryService
\r
25 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
\r
26 import org.camunda.bpm.engine.repository.ProcessDefinition
\r
27 import org.camunda.bpm.engine.runtime.Execution
\r
28 import org.junit.Before
29 import org.junit.BeforeClass
\r
30 import org.junit.Rule
\r
32 import org.junit.Ignore
\r
33 import org.mockito.MockitoAnnotations
34 import org.camunda.bpm.engine.delegate.BpmnError
\r
35 import org.openecomp.mso.bpmn.core.WorkflowException
36 import org.openecomp.mso.bpmn.mock.FileUtil
38 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
39 import static com.github.tomakehurst.wiremock.client.WireMock.get
40 import static com.github.tomakehurst.wiremock.client.WireMock.patch
41 import static com.github.tomakehurst.wiremock.client.WireMock.put
42 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor
43 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
44 import static org.junit.Assert.*;
\r
45 import static org.mockito.Mockito.*
46 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource
47 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
48 import org.openecomp.mso.bpmn.core.domain.VnfResource
49 import org.openecomp.mso.bpmn.core.domain.AllottedResource
50 import org.openecomp.mso.bpmn.core.domain.ModelInfo
51 import org.openecomp.mso.bpmn.core.domain.HomingSolution
52 import org.openecomp.mso.bpmn.core.RollbackData
53 import org.openecomp.mso.bpmn.vcpe.scripts.MapGetter
54 import org.openecomp.mso.bpmn.vcpe.scripts.MapSetter
56 import com.github.tomakehurst.wiremock.junit.WireMockRule
\r
58 class CreateVcpeResCustServiceTest extends GroovyTestBase {
60 private static String request
\r
63 public WireMockRule wireMockRule = new WireMockRule(PORT)
65 String Prefix = "CVRCS_"
66 String RbType = "DCRENI_"
\r
69 public static void setUpBeforeClass() {
70 super.setUpBeforeClass()
71 request = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/request.json")
77 MockitoAnnotations.initMocks(this)
\r
80 public CreateVcpeResCustServiceTest() {
81 super("CreateVcpeResCustService")
85 // ***** preProcessRequest *****
\r
89 public void preProcessRequest() {
\r
90 ExecutionEntity mex = setupMock()
91 def map = setupMap(mex)
94 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
\r
95 CreateVcpeResCustService.preProcessRequest(mex)
\r
97 verify(mex).getVariable(DBGFLAG)
\r
98 verify(mex).setVariable("prefix", Prefix)
99 verify(mex).setVariable("aaiDistDelay", "aaidelay")
100 verify(mex).setVariable("createVcpeServiceRequest", request)
101 verify(mex).setVariable("msoRequestId", "mri")
102 assertEquals("sii", map.get("serviceInstanceId"))
103 verify(mex).setVariable("requestAction", "ra")
104 verify(mex).setVariable("source", "VID")
105 verify(mex).setVariable("globalSubscriberId", CUST)
106 verify(mex).setVariable("globalCustomerId", CUST)
107 verify(mex).setVariable("subscriptionServiceType", SVC)
108 verify(mex).setVariable("disableRollback", "false")
109 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
110 assertTrue(map.containsKey("subscriberInfo"))
112 verify(mex).setVariable("brgWanMacAddress", "brgmac")
113 assertTrue(map.containsKey("serviceInputParams"))
114 assertTrue(map.containsKey(Prefix+"requestInfo"))
116 def reqinfo = map.get(Prefix+"requestInfo")
117 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
118 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)
\r
123 public void preProcessRequest_MissingAaiDistDelay() {
124 ExecutionEntity mex = setupMock()
125 def map = setupMap(mex)
128 when(mex.getVariable("URN_mso_workflow_aai_distribution_delay")).thenReturn(null)
130 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
132 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
137 public void preProcessRequest_EmptyParts() {
138 ExecutionEntity mex = setupMock()
139 def map = setupMap(mex)
143 .replace('"source"', '"sourceXXX"')
144 .replace('"BRG_WAN_MAC_Address"', '"BRG_WAN_MAC_AddressXXX"')
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 assertTrue(map.containsKey("serviceInputParams"))
169 assertTrue(map.containsKey(Prefix+"requestInfo"))
171 def reqinfo = map.get(Prefix+"requestInfo")
173 assertTrue(reqinfo.indexOf("<request-id>mri</") >= 0)
174 assertTrue(reqinfo.indexOf("<source>VID</") >= 0)
179 public void preProcessRequest_MissingSubscriberId() {
180 ExecutionEntity mex = setupMock()
181 def map = setupMap(mex)
185 .replace('"globalSubscriberId"', '"globalSubscriberIdXXX"')
187 when(mex.getVariable("bpmnRequest")).thenReturn(req)
188 when(mex.getVariable("serviceInstanceId")).thenReturn(null)
190 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
192 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
197 public void preProcessRequest_BpmnError() {
198 ExecutionEntity mex = setupMock()
201 when(mex.getVariable("bpmnRequest")).thenThrow(new BpmnError("expected exception"))
203 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
205 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
210 public void preProcessRequest_Ex() {
211 ExecutionEntity mex = setupMock()
214 when(mex.getVariable("bpmnRequest")).thenThrow(new RuntimeException("expected exception"))
216 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
218 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.preProcessRequest(mex) }))
221 // ***** sendSyncResponse *****
225 public void sendSyncResponse() {
226 ExecutionEntity mex = setupMock()
227 def map = setupMap(mex)
228 initSendSyncResponse(mex)
230 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
231 CreateVcpeResCustService.sendSyncResponse(mex)
233 verify(mex, times(2)).getVariable(DBGFLAG)
235 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
237 assertEquals("202", map.get(processName+"ResponseCode"))
238 assertEquals("Success", map.get(processName+"Status"))
240 def resp = map.get(processName+"Response")
242 assertTrue(resp.indexOf('"instanceId":"sii"') >= 0)
243 assertTrue(resp.indexOf('"requestId":"mri"') >= 0)
248 public void sendSyncResponse_Ex() {
249 ExecutionEntity mex = setupMock()
250 initSendSyncResponse(mex)
252 when(mex.getVariable("serviceInstanceId")).thenThrow(new RuntimeException("expected exception"))
254 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
256 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.sendSyncResponse(mex) }))
260 // ***** prepareDecomposeService *****
264 public void prepareDecomposeService() {
265 ExecutionEntity mex = setupMock()
266 initPrepareDecomposeService(mex)
268 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
269 CreateVcpeResCustService.prepareDecomposeService(mex)
271 verify(mex).getVariable(DBGFLAG)
272 verify(mex).setVariable("serviceModelInfo", "mi")
277 public void prepareDecomposeService_Ex() {
278 ExecutionEntity mex = setupMock()
279 initPrepareDecomposeService(mex)
281 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
283 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
285 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareDecomposeService(mex) }))
289 // ***** prepareCreateServiceInstance *****
293 public void prepareCreateServiceInstance() {
294 ExecutionEntity mex = setupMock()
295 initPrepareCreateServiceInstance(mex)
297 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
298 CreateVcpeResCustService.prepareCreateServiceInstance(mex)
300 verify(mex).getVariable(DBGFLAG)
301 verify(mex).setVariable("serviceInstanceName", "VCPE1")
302 verify(mex).setVariable("serviceDecompositionString", "mydecomp")
307 public void prepareCreateServiceInstance_Ex() {
308 ExecutionEntity mex = setupMock()
309 initPrepareCreateServiceInstance(mex)
311 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
313 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
315 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateServiceInstance(mex) }))
319 // ***** postProcessServiceInstanceCreate *****
323 public void postProcessServiceInstanceCreate() {
324 ExecutionEntity mex = setupMock()
325 def map = setupMap(mex)
326 initPostProcessServiceInstanceCreate(mex)
328 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
329 CreateVcpeResCustService.postProcessServiceInstanceCreate(mex)
331 verify(mex).getVariable(DBGFLAG)
333 def reqinfo = map.get(Prefix+"setUpdateDbInstancePayload")
335 assertTrue(reqinfo.indexOf("<requestId>mri</") >= 0)
336 assertTrue(reqinfo.indexOf("<serviceInstanceId>sii</") >= 0)
337 assertTrue(reqinfo.indexOf("<serviceInstanceName>sin</") >= 0)
342 public void postProcessServiceInstanceCreate_BpmnError() {
343 ExecutionEntity mex = setupMock()
344 initPostProcessServiceInstanceCreate(mex)
346 doThrow(new BpmnError("expected exception")).when(mex).setVariable(endsWith("setUpdateDbInstancePayload"), any())
348 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
350 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessServiceInstanceCreate(mex) }))
355 public void postProcessServiceInstanceCreate_Ex() {
356 ExecutionEntity mex = setupMock()
357 initPostProcessServiceInstanceCreate(mex)
359 doThrow(new RuntimeException("expected exception")).when(mex).setVariable(endsWith("setUpdateDbInstancePayload"), any())
361 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
363 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessServiceInstanceCreate(mex) }))
367 // ***** processDecomposition *****
371 public void processDecomposition() {
372 ExecutionEntity mex = setupMock()
373 def svcdecomp = initProcessDecomposition(mex, true, true)
375 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
376 CreateVcpeResCustService.processDecomposition(mex)
378 verify(mex).getVariable(DBGFLAG)
380 verify(mex).setVariable("vnfList", svcdecomp.getServiceVnfs())
381 verify(mex).setVariable("vnfListString", '[myvnf, myvnf2, myvnf3]')
382 verify(mex).setVariable(Prefix+"VNFsCount", 3)
384 verify(mex).setVariable("vnfModelInfo", "mymodel")
385 verify(mex).setVariable("vnfModelInfoString", "mymodel")
390 public void processDecomposition_EmptyNet_EmptyVnf() {
391 ExecutionEntity mex = setupMock()
392 def svcdecomp = initProcessDecomposition(mex, true, true)
394 when(svcdecomp.getServiceVnfs()).thenReturn(new LinkedList<VnfResource>())
396 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
397 CreateVcpeResCustService.processDecomposition(mex)
399 verify(mex).getVariable(DBGFLAG)
401 verify(mex).setVariable("vnfList", svcdecomp.getServiceVnfs())
402 verify(mex).setVariable("vnfListString", '[]')
403 verify(mex).setVariable(Prefix+"VNFsCount", 0)
405 verify(mex).setVariable("vnfModelInfo", "")
406 verify(mex).setVariable("vnfModelInfoString", "")
411 public void processDecomposition_Ex() {
412 ExecutionEntity mex = setupMock()
413 def svcdecomp = initProcessDecomposition(mex, true, true)
415 when(svcdecomp.getServiceVnfs()).thenThrow(new RuntimeException("expected exception"))
417 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
419 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processDecomposition(mex) }))
423 // ***** prepareCreateAllottedResourceTXC *****
427 public void prepareCreateAllottedResourceTXC() {
428 ExecutionEntity mex = setupMock()
429 initPrepareCreateAllottedResourceTXC(mex)
431 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
432 CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex)
434 verify(mex).getVariable(DBGFLAG)
436 verify(mex).setVariable("createTXCAR", true)
437 verify(mex).setVariable("allottedResourceModelInfoTXC", "modelB")
438 verify(mex).setVariable("allottedResourceRoleTXC", "TXCr")
439 verify(mex).setVariable("allottedResourceTypeTXC", "TunnelXConn")
440 verify(mex).setVariable("parentServiceInstanceIdTXC", "homeB")
445 public void prepareCreateAllottedResourceTXC_NullArList() {
446 ExecutionEntity mex = setupMock()
447 def svcdecomp = initPrepareCreateAllottedResourceTXC(mex)
449 when(svcdecomp.getServiceAllottedResources()).thenReturn(null)
451 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
452 CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex)
454 verify(mex).getVariable(DBGFLAG)
456 verify(mex, never()).setVariable("createTXCAR", true)
457 verify(mex, never()).setVariable("allottedResourceModelInfoTXC", "modelB")
458 verify(mex, never()).setVariable("allottedResourceRoleTXC", "TXCr")
459 verify(mex, never()).setVariable("allottedResourceTypeTXC", "TunnelXConn")
460 verify(mex, never()).setVariable("parentServiceInstanceIdTXC", "homeB")
465 public void prepareCreateAllottedResourceTXC_Ex() {
466 ExecutionEntity mex = setupMock()
467 initPrepareCreateAllottedResourceTXC(mex)
469 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
471 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
473 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateAllottedResourceTXC(mex) }))
477 // ***** prepareCreateAllottedResourceBRG *****
481 public void prepareCreateAllottedResourceBRG() {
482 ExecutionEntity mex = setupMock()
483 initPrepareCreateAllottedResourceBRG(mex)
485 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
486 CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex)
488 verify(mex).getVariable(DBGFLAG)
490 verify(mex).setVariable("createBRGAR", true)
491 verify(mex).setVariable("allottedResourceModelInfoBRG", "modelB")
492 verify(mex).setVariable("allottedResourceRoleBRG", "BRGr")
493 verify(mex).setVariable("allottedResourceTypeBRG", "BRG")
494 verify(mex).setVariable("parentServiceInstanceIdBRG", "homeB")
499 public void prepareCreateAllottedResourceBRG_NullArList() {
500 ExecutionEntity mex = setupMock()
501 def svcdecomp = initPrepareCreateAllottedResourceBRG(mex)
503 when(svcdecomp.getServiceAllottedResources()).thenReturn(null)
505 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
506 CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex)
508 verify(mex).getVariable(DBGFLAG)
510 verify(mex, never()).setVariable("createBRGAR", true)
511 verify(mex, never()).setVariable("allottedResourceModelInfoBRG", "modelB")
512 verify(mex, never()).setVariable("allottedResourceRoleBRG", "BRGr")
513 verify(mex, never()).setVariable("allottedResourceTypeBRG", "BRG")
514 verify(mex, never()).setVariable("parentServiceInstanceIdBRG", "homeB")
519 public void prepareCreateAllottedResourceBRG_Ex() {
520 ExecutionEntity mex = setupMock()
521 initPrepareCreateAllottedResourceBRG(mex)
523 when(mex.getVariable("createVcpeServiceRequest")).thenThrow(new RuntimeException("expected exception"))
525 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
527 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareCreateAllottedResourceBRG(mex) }))
531 // ***** prepareVnfAndModulesCreate *****
535 public void prepareVnfAndModulesCreate() {
536 ExecutionEntity mex = setupMock()
537 initPrepareVnfAndModulesCreate(mex)
539 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
540 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
542 verify(mex).getVariable(DBGFLAG)
544 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
545 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
546 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
551 public void prepareVnfAndModulesCreate_EmptyList() {
552 ExecutionEntity mex = setupMock()
553 initPrepareVnfAndModulesCreate(mex)
555 when(mex.getVariable("vnfList")).thenReturn(new LinkedList<VnfResource>())
557 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
558 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
560 verify(mex).getVariable(DBGFLAG)
562 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
563 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
564 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
569 public void prepareVnfAndModulesCreate_NullList() {
570 ExecutionEntity mex = setupMock()
571 initPrepareVnfAndModulesCreate(mex)
573 when(mex.getVariable("vnfList")).thenReturn(null)
575 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
576 CreateVcpeResCustService.prepareVnfAndModulesCreate(mex)
578 verify(mex).getVariable(DBGFLAG)
580 verify(mex).setVariable("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb")
581 verify(mex).setVariable("lcpCloudRegionId", "mdt1")
582 verify(mex).setVariable("tenantId", "8b1df54faa3b49078e3416e21370a3ba")
587 public void prepareVnfAndModulesCreate_Ex() {
588 ExecutionEntity mex = setupMock()
589 initPrepareVnfAndModulesCreate(mex)
591 when(mex.getVariable("vnfList")).thenThrow(new RuntimeException("expected exception"))
593 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
595 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareVnfAndModulesCreate(mex) }))
599 // ***** validateVnfCreate *****
603 public void validateVnfCreate() {
604 ExecutionEntity mex = setupMock()
605 initValidateVnfCreate(mex)
607 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
608 CreateVcpeResCustService.validateVnfCreate(mex)
610 verify(mex).getVariable(DBGFLAG)
612 verify(mex).setVariable(Prefix+"VnfsCreatedCount", 3)
617 public void validateVnfCreate_Ex() {
618 ExecutionEntity mex = setupMock()
619 initValidateVnfCreate(mex)
621 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenThrow(new RuntimeException("expected exception"))
623 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
625 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.validateVnfCreate(mex) }))
629 // ***** postProcessResponse *****
633 public void postProcessResponse() {
634 ExecutionEntity mex = setupMock()
635 def map = setupMap(mex)
636 initPostProcessResponse(mex)
638 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
639 CreateVcpeResCustService.postProcessResponse(mex)
641 verify(mex).getVariable(DBGFLAG)
643 verify(mex).setVariable(Prefix+"Success", true)
645 def reqinfo = map.get(Prefix+"CompleteMsoProcessRequest")
647 assertTrue(reqinfo.indexOf("request-id>mri</") >= 0)
648 assertTrue(reqinfo.indexOf("source>mysrc</") >= 0)
649 assertTrue(reqinfo.indexOf("serviceInstanceId>sii</") >= 0)
654 public void postProcessResponse_BpmnError() {
655 ExecutionEntity mex = setupMock()
656 def map = setupMap(mex)
657 initPostProcessResponse(mex)
659 when(mex.getVariable("source")).thenThrow(new BpmnError("expected exception"))
661 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
663 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessResponse(mex) }))
668 public void postProcessResponse_Ex() {
669 ExecutionEntity mex = setupMock()
670 def map = setupMap(mex)
671 initPostProcessResponse(mex)
673 when(mex.getVariable("source")).thenThrow(new RuntimeException("expected exception"))
675 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
677 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessResponse(mex) }))
681 // ***** preProcessRollback *****
685 public void preProcessRollback() {
686 ExecutionEntity mex = setupMock()
687 def wfe = initPreProcessRollback(mex)
689 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
690 CreateVcpeResCustService.preProcessRollback(mex)
692 verify(mex).getVariable(DBGFLAG)
694 verify(mex).setVariable("prevWorkflowException", wfe)
699 public void preProcessRollback_NullWfe() {
700 ExecutionEntity mex = setupMock()
701 def map = setupMap(mex)
702 def wfe = initPreProcessRollback(mex)
704 when(mex.getVariable("WorkflowException")).thenReturn(null)
706 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
707 CreateVcpeResCustService.preProcessRollback(mex)
709 verify(mex).getVariable(DBGFLAG)
711 assertFalse(map.containsKey("prevWorkflowException"))
716 public void preProcessRollback_BpmnError() {
717 ExecutionEntity mex = setupMock()
718 def map = setupMap(mex)
719 def wfe = initPreProcessRollback(mex)
721 when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
723 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
724 CreateVcpeResCustService.preProcessRollback(mex)
726 verify(mex).getVariable(DBGFLAG)
728 assertFalse(map.containsKey("prevWorkflowException"))
733 public void preProcessRollback_Ex() {
734 ExecutionEntity mex = setupMock()
735 def map = setupMap(mex)
736 def wfe = initPreProcessRollback(mex)
738 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
740 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
741 CreateVcpeResCustService.preProcessRollback(mex)
743 verify(mex).getVariable(DBGFLAG)
745 assertFalse(map.containsKey("prevWorkflowException"))
749 // ***** postProcessRollback *****
753 public void postProcessRollback() {
754 ExecutionEntity mex = setupMock()
755 def wfe = initPostProcessRollback(mex)
757 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
758 CreateVcpeResCustService.postProcessRollback(mex)
760 verify(mex).getVariable(DBGFLAG)
762 verify(mex).setVariable("WorkflowException", wfe)
767 public void postProcessRollback_NullWfe() {
768 ExecutionEntity mex = setupMock()
769 def map = setupMap(mex)
770 def wfe = initPostProcessRollback(mex)
772 when(mex.getVariable("prevWorkflowException")).thenReturn(null)
774 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
775 CreateVcpeResCustService.postProcessRollback(mex)
777 verify(mex).getVariable(DBGFLAG)
779 assertFalse(map.containsKey("WorkflowException"))
784 public void postProcessRollback_BpmnError() {
785 ExecutionEntity mex = setupMock()
786 def map = setupMap(mex)
787 def wfe = initPostProcessRollback(mex)
789 when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
791 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
792 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.postProcessRollback(mex) }))
797 public void postProcessRollback_Ex() {
798 ExecutionEntity mex = setupMock()
799 def map = setupMap(mex)
800 def wfe = initPostProcessRollback(mex)
802 when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
804 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
805 CreateVcpeResCustService.postProcessRollback(mex)
807 verify(mex).getVariable(DBGFLAG)
809 assertFalse(map.containsKey("WorkflowException"))
813 // ***** prepareFalloutRequest *****
817 public void prepareFalloutRequest() {
818 ExecutionEntity mex = setupMock()
819 def map = setupMap(mex)
820 initPrepareFalloutRequest(mex)
822 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
823 CreateVcpeResCustService.prepareFalloutRequest(mex)
825 verify(mex, times(2)).getVariable(DBGFLAG)
827 def fo = map.get(Prefix+"falloutRequest")
829 assertTrue(fo.indexOf("<hello>world</") >= 0)
830 assertTrue(fo.indexOf("ErrorMessage>mymsg</") >= 0)
831 assertTrue(fo.indexOf("ErrorCode>999</") >= 0)
836 public void prepareFalloutRequest_Ex() {
837 ExecutionEntity mex = setupMock()
838 def map = setupMap(mex)
839 initPrepareFalloutRequest(mex)
841 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
843 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
845 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.prepareFalloutRequest(mex) }))
848 // ***** sendSyncError *****
852 public void sendSyncError() {
853 ExecutionEntity mex = setupMock()
854 def map = setupMap(mex)
855 initSendSyncError(mex)
857 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
858 CreateVcpeResCustService.sendSyncError(mex)
860 verify(mex, times(2)).getVariable(DBGFLAG)
862 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
864 assertEquals("500", map.get(processName+"ResponseCode"))
865 assertEquals("Fail", map.get(processName+"Status"))
867 def resp = map.get(processName+"Response")
869 assertTrue(resp.indexOf("ErrorMessage>mymsg</") >= 0)
871 verify(mex).setVariable("WorkflowResponse", resp)
876 public void sendSyncError_NotWfe() {
877 ExecutionEntity mex = setupMock()
878 def map = setupMap(mex)
879 initSendSyncError(mex)
881 when(mex.getVariable("WorkflowException")).thenReturn("not a WFE")
883 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
884 CreateVcpeResCustService.sendSyncError(mex)
886 verify(mex, times(2)).getVariable(DBGFLAG)
888 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
890 assertEquals("500", map.get(processName+"ResponseCode"))
891 assertEquals("Fail", map.get(processName+"Status"))
893 def resp = map.get(processName+"Response")
895 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
897 verify(mex).setVariable("WorkflowResponse", resp)
902 public void sendSyncError_NullWfe() {
903 ExecutionEntity mex = setupMock()
904 def map = setupMap(mex)
905 initSendSyncError(mex)
907 when(mex.getVariable("WorkflowException")).thenReturn(null)
909 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
910 CreateVcpeResCustService.sendSyncError(mex)
912 verify(mex, times(2)).getVariable(DBGFLAG)
914 verify(mex).setVariable(processName+"WorkflowResponseSent", "true")
916 assertEquals("500", map.get(processName+"ResponseCode"))
917 assertEquals("Fail", map.get(processName+"Status"))
919 def resp = map.get(processName+"Response")
921 assertTrue(resp.indexOf("ErrorMessage>Sending Sync Error.</") >= 0)
923 verify(mex).setVariable("WorkflowResponse", resp)
928 public void sendSyncError_Ex() {
929 ExecutionEntity mex = setupMock()
930 def map = setupMap(mex)
931 initSendSyncError(mex)
933 when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
935 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
937 CreateVcpeResCustService.sendSyncError(mex)
939 assertFalse(map.containsKey(processName+"ResponseCode"))
943 // ***** processJavaException *****
947 public void processJavaException() {
948 ExecutionEntity mex = setupMock()
949 def map = setupMap(mex)
950 initProcessJavaException(mex)
952 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
954 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
956 verify(mex, times(2)).getVariable(DBGFLAG)
958 verify(mex).setVariable("prefix", Prefix)
960 def wfe = map.get("WorkflowException")
962 assertEquals("Caught a Java Lang Exception", wfe.getErrorMessage())
967 public void processJavaException_BpmnError() {
968 ExecutionEntity mex = setupMock()
969 def map = setupMap(mex)
970 initProcessJavaException(mex)
972 when(mex.getVariables()).thenThrow(new BpmnError("expected exception"))
974 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
976 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
978 assertFalse(map.containsKey("WorkflowException"))
983 public void processJavaException_Ex() {
984 ExecutionEntity mex = setupMock()
985 def map = setupMap(mex)
986 initProcessJavaException(mex)
988 when(mex.getVariables()).thenThrow(new RuntimeException("expected exception"))
990 CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
992 assertTrue(doBpmnError( { _ -> CreateVcpeResCustService.processJavaException(mex) }))
994 def wfe = map.get("WorkflowException")
996 assertEquals("Exception in processJavaException method", wfe.getErrorMessage())
1000 private void initPreProcess(ExecutionEntity mex) {
1001 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1002 when(mex.getVariable("bpmnRequest")).thenReturn(request)
1003 when(mex.getVariable("URN_mso_workflow_aai_distribution_delay")).thenReturn("aaidelay")
1004 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1005 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1006 when(mex.getVariable("requestAction")).thenReturn("ra")
1009 private initSendSyncResponse(ExecutionEntity mex) {
1010 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1011 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1012 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1015 private void initPrepareDecomposeService(ExecutionEntity mex) {
1016 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1017 when(mex.getVariable("createVcpeServiceRequest")).thenReturn('{"requestDetails":{"modelInfo":"mi"}}')
1020 private void initPrepareCreateServiceInstance(ExecutionEntity mex) {
1021 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1023 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1024 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1025 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1027 when(svcdecomp.toJsonStringNoRootName()).thenReturn("mydecomp")
1030 private void initPostProcessServiceInstanceCreate(ExecutionEntity mex) {
1031 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1032 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1033 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1034 when(mex.getVariable("serviceInstanceName")).thenReturn("sin")
1037 private ServiceDecomposition initProcessDecomposition(ExecutionEntity mex, boolean haveNet, boolean haveVnf) {
1038 List<VnfResource> vnflst = new LinkedList<>()
1040 vnflst.add(makeVnf(""))
1041 vnflst.add(makeVnf("2"))
1042 vnflst.add(makeVnf("3"))
1045 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1046 when(svcdecomp.getServiceVnfs()).thenReturn(vnflst)
1048 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1049 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1050 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1051 when(mex.getVariable("serviceInstanceName")).thenReturn("sin")
1056 private initAwaitAaiDistribution(ExecutionEntity mex) {
1057 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1060 private ServiceDecomposition initPrepareCreateAllottedResourceTXC(ExecutionEntity mex) {
1061 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1062 List<AllottedResource> arlst = new LinkedList<>()
1064 arlst.add(makeArBRG("A"))
1065 arlst.add(makeArTXC("B"))
1066 arlst.add(makeArBRG("C"))
1068 when(svcdecomp.getServiceAllottedResources()).thenReturn(arlst)
1070 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1071 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1072 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1073 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
1078 private ServiceDecomposition initPrepareCreateAllottedResourceBRG(ExecutionEntity mex) {
1079 ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
1080 List<AllottedResource> arlst = new LinkedList<>()
1082 arlst.add(makeArTXC("A"))
1083 arlst.add(makeArBRG("B"))
1084 arlst.add(makeArTXC("C"))
1086 when(svcdecomp.getServiceAllottedResources()).thenReturn(arlst)
1088 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1089 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1090 when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
1091 when(mex.getVariable("allottedResourceId")).thenReturn(ARID)
1096 private AllottedResource makeArTXC(String id) {
1097 AllottedResource ar = mock(AllottedResource.class)
1098 ModelInfo mod = mock(ModelInfo.class)
1099 HomingSolution home = mock(HomingSolution.class)
1101 when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
1102 when(ar.getAllottedResourceType()).thenReturn("TunnelXConn")
1103 when(ar.getModelInfo()).thenReturn(mod)
1104 when(ar.getAllottedResourceRole()).thenReturn("TXCr")
1105 when(ar.getHomingSolution()).thenReturn(home)
1107 when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
1109 when(home.getServiceInstanceId()).thenReturn("home"+id)
1114 private AllottedResource makeArBRG(String id) {
1115 AllottedResource ar = mock(AllottedResource.class)
1116 ModelInfo mod = mock(ModelInfo.class)
1117 HomingSolution home = mock(HomingSolution.class)
1119 when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
1120 when(ar.getAllottedResourceType()).thenReturn("BRG")
1121 when(ar.getModelInfo()).thenReturn(mod)
1122 when(ar.getAllottedResourceRole()).thenReturn("BRGr")
1123 when(ar.getHomingSolution()).thenReturn(home)
1125 when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
1127 when(home.getServiceInstanceId()).thenReturn("home"+id)
1132 private initPrepareVnfAndModulesCreate(ExecutionEntity mex) {
1134 List<VnfResource> vnflst = new LinkedList<>()
1136 vnflst.add(makeVnf("A"))
1137 vnflst.add(makeVnf("B"))
1138 vnflst.add(makeVnf("C"))
1139 vnflst.add(makeVnf("D"))
1141 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1142 when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
1143 when(mex.getVariable("vnfList")).thenReturn(vnflst)
1144 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenReturn(2)
1145 when(mex.getVariable("vnfModelInfo")).thenReturn("nomodel")
1146 when(mex.getVariable("sdncVersion")).thenReturn("myvers")
1149 private VnfResource makeVnf(String id) {
1150 ModelInfo mod = mock(ModelInfo.class)
1151 VnfResource vnf = mock(VnfResource.class)
1153 when(mod.toString()).thenReturn('{"modelInfo":"mymodel'+id+'"}')
1155 when(vnf.toString()).thenReturn("myvnf"+id)
1156 when(vnf.getModelInfo()).thenReturn(mod)
1161 private initValidateVnfCreate(ExecutionEntity mex) {
1162 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1163 when(mex.getVariable(Prefix+"VnfsCreatedCount")).thenReturn(2)
1166 private initPostProcessResponse(ExecutionEntity mex) {
1167 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1168 when(mex.getVariable("source")).thenReturn("mysrc")
1169 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1170 when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
1173 private WorkflowException initPreProcessRollback(ExecutionEntity mex) {
1174 WorkflowException wfe = mock(WorkflowException.class)
1176 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1177 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1182 private WorkflowException initPostProcessRollback(ExecutionEntity mex) {
1183 WorkflowException wfe = mock(WorkflowException.class)
1185 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1186 when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
1191 private initPrepareFalloutRequest(ExecutionEntity mex) {
1192 WorkflowException wfe = mock(WorkflowException.class)
1194 when(wfe.getErrorMessage()).thenReturn("mymsg")
1195 when(wfe.getErrorCode()).thenReturn(999)
1197 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1198 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1199 when(mex.getVariable(Prefix+"requestInfo")).thenReturn("<hello>world</hello>")
1204 private initSendSyncError(ExecutionEntity mex) {
1205 WorkflowException wfe = mock(WorkflowException.class)
1207 when(mex.getVariable(DBGFLAG)).thenReturn("true")
1208 when(mex.getVariable("mso-request-id")).thenReturn("mri")
1209 when(mex.getVariable("WorkflowException")).thenReturn(wfe)
1211 when(wfe.getErrorMessage()).thenReturn("mymsg")
1214 private initProcessJavaException(ExecutionEntity mex) {
1215 when(mex.getVariable(DBGFLAG)).thenReturn("true")