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;
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertTrue;
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer;
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance;
33 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
34 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
35 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
37 import java.io.IOException;
38 import java.util.HashMap;
40 import java.util.UUID;
42 import org.camunda.bpm.engine.test.Deployment;
43 import org.junit.Test;
44 import org.openecomp.mso.bpmn.common.BPMNUtil;
45 import org.openecomp.mso.bpmn.mock.FileUtil;
47 public class CreateVcpeResCustServiceTest extends AbstractTestBase {
49 private static final String PROCNAME = "CreateVcpeResCustService";
50 private static final String Prefix = "CVRCS_";
52 private final CallbackSet callbacks = new CallbackSet();
53 private final String request;
55 public CreateVcpeResCustServiceTest() throws IOException {
56 callbacks.put("assign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyAssignCallback.xml"));
57 callbacks.put("create", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyCreateCallback.xml"));
58 callbacks.put("activate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyActivateCallback.xml"));
59 callbacks.put("queryTXC", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml"));
60 callbacks.put("queryBRG", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml"));
61 callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
62 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
63 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
65 request = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSIName.json");
69 @Deployment(resources = {
70 "process/CreateVcpeResCustService.bpmn",
71 "subprocess/SDNCAdapterV1.bpmn",
72 "subprocess/FalloutHandler.bpmn",
73 "subprocess/GenericGetService.bpmn",
74 "subprocess/GenericPutService.bpmn",
75 "subprocess/BuildingBlock/DecomposeService.bpmn",
76 "subprocess/DoCreateServiceInstance.bpmn",
77 "subprocess/DoCreateAllottedResourceTXC.bpmn",
78 "subprocess/DoCreateAllottedResourceBRG.bpmn",
79 "subprocess/CompleteMsoProcess.bpmn",
82 "VCPE/stubprocess/Homing.bpmn",
83 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
85 public void testCreateVcpeResCustService_Success() throws Exception {
87 System.out.println("starting: testCreateVcpeResCustService_Success\n");
88 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
89 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
90 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
92 // TODO: the SI should NOT have to be URL-encoded yet again!
93 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
94 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
96 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
97 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
98 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
99 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
100 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
101 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
103 mockSDNCAdapter(200);
104 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
106 Map<String, Object> variables = setupVariables();
108 String businessKey = UUID.randomUUID().toString();
109 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
112 injectSDNCCallbacks(callbacks, "assign");
115 injectSDNCCallbacks(callbacks, "assign");
116 injectSDNCCallbacks(callbacks, "create");
117 injectSDNCCallbacks(callbacks, "activate");
118 injectSDNCCallbacks(callbacks, "queryTXC");
121 injectSDNCCallbacks(callbacks, "assign");
122 injectSDNCCallbacks(callbacks, "create");
123 injectSDNCCallbacks(callbacks, "activate");
124 injectSDNCCallbacks(callbacks, "queryBRG");
126 waitForProcessEnd(businessKey, 10000);
128 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
129 System.out.println("workflowException:\n" + workflowException);
131 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
132 System.out.println("completionReq:\n" + completionReq);
134 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
135 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
136 assertEquals(null, workflowException);
137 assertTrue(completionReq.contains("request-id>testRequestId<"));
138 assertTrue(completionReq.contains("action>CREATE<"));
139 assertTrue(completionReq.contains("source>VID<"));
141 assertEquals("1", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
145 @Deployment(resources = {
146 "process/CreateVcpeResCustService.bpmn",
147 "subprocess/SDNCAdapterV1.bpmn",
148 "subprocess/FalloutHandler.bpmn",
149 "subprocess/GenericGetService.bpmn",
150 "subprocess/GenericPutService.bpmn",
151 "subprocess/BuildingBlock/DecomposeService.bpmn",
152 "subprocess/DoCreateServiceInstance.bpmn",
153 "subprocess/DoCreateAllottedResourceTXC.bpmn",
154 "subprocess/DoCreateAllottedResourceBRG.bpmn",
155 "subprocess/CompleteMsoProcess.bpmn",
158 "VCPE/stubprocess/Homing.bpmn",
159 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
161 public void testCreateVcpeResCustService_NoParts() throws Exception {
163 System.out.println("starting: testCreateVcpeResCustService_NoParts\n" );
164 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
165 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
166 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
168 // TODO: the SI should NOT have to be URL-encoded yet again!
169 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
170 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
172 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
173 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
174 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
175 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
177 // TODO: should these really be PARENT_INST, or should they be INST?
178 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
179 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
181 mockSDNCAdapter(200);
182 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
184 Map<String, Object> variables = setupVariables();
186 String businessKey = UUID.randomUUID().toString();
187 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
190 injectSDNCCallbacks(callbacks, "assign");
192 waitForProcessEnd(businessKey, 10000);
194 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
195 System.out.println("workflowException:\n" + workflowException);
197 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
198 System.out.println("completionReq:\n" + completionReq);
200 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
201 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
202 assertEquals(null, workflowException);
203 assertTrue(completionReq.contains("request-id>testRequestId<"));
204 assertTrue(completionReq.contains("action>CREATE<"));
205 assertTrue(completionReq.contains("source>VID<"));
207 assertEquals("0", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
211 @Deployment(resources = {
212 "process/CreateVcpeResCustService.bpmn",
213 "subprocess/SDNCAdapterV1.bpmn",
214 "subprocess/FalloutHandler.bpmn",
215 "subprocess/GenericGetService.bpmn",
216 "subprocess/GenericPutService.bpmn",
217 "subprocess/BuildingBlock/DecomposeService.bpmn",
218 "subprocess/DoCreateServiceInstance.bpmn",
219 "subprocess/DoCreateAllottedResourceBRG.bpmn",
220 "subprocess/CompleteMsoProcess.bpmn",
222 // this stub will trigger a fault
223 "VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn",
226 "VCPE/stubprocess/Homing.bpmn",
227 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
229 public void testCreateVcpeResCustService_Fault_NoRollback() throws Exception {
231 System.out.println("starting: testCreateVcpeResCustService_Fault_NoRollback\n");
232 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
233 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
234 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
236 // TODO: the SI should NOT have to be URL-encoded yet again!
237 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
238 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
240 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
241 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
242 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
243 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
244 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
245 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
247 mockSDNCAdapter(200);
248 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
250 Map<String, Object> variables = setupVariables();
252 String req = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSINameNoRollback.json");
254 String businessKey = UUID.randomUUID().toString();
255 invokeAsyncProcess(PROCNAME, "v1", businessKey, req, variables);
258 injectSDNCCallbacks(callbacks, "assign");
260 waitForProcessEnd(businessKey, 10000);
262 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
263 System.out.println("workflowException:\n" + workflowException);
265 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
266 System.out.println("completionReq:\n" + completionReq);
268 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
269 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
270 assertNotNull(workflowException);
272 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceBRGRollback");
273 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateVnfAndModulesRollback");
274 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceTXCRollback");
278 @Deployment(resources = {
279 "process/CreateVcpeResCustService.bpmn",
280 "subprocess/SDNCAdapterV1.bpmn",
281 "subprocess/FalloutHandler.bpmn",
282 "subprocess/GenericGetService.bpmn",
283 "subprocess/GenericPutService.bpmn",
284 "subprocess/BuildingBlock/DecomposeService.bpmn",
285 "subprocess/DoCreateServiceInstance.bpmn",
286 "subprocess/DoCreateAllottedResourceTXC.bpmn",
287 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
288 "subprocess/CompleteMsoProcess.bpmn",
290 // this stub will trigger a fault
291 "VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn",
294 "VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn",
295 "VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn",
296 "VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn",
297 "VCPE/stubprocess/Homing.bpmn",
298 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
300 public void testCreateVcpeResCustService_Fault_Rollback() throws Exception {
302 System.out.println("starting: testCreateVcpeResCustService_Fault_Rollback\n");
303 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
304 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
305 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
307 // TODO: the SI should NOT have to be URL-encoded yet again!
308 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
309 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
311 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
312 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
313 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
314 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
315 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
316 MockGetAllottedResource(CUST, SVC, PARENT_INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
317 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
318 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
319 MockDeleteAllottedResource(CUST, SVC, PARENT_INST, ARID, ARVERS);
321 mockSDNCAdapter(200);
322 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
324 Map<String, Object> variables = setupVariables();
326 String businessKey = UUID.randomUUID().toString();
327 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
330 injectSDNCCallbacks(callbacks, "assign");
333 injectSDNCCallbacks(callbacks, "assign");
334 injectSDNCCallbacks(callbacks, "create");
335 injectSDNCCallbacks(callbacks, "activate");
336 injectSDNCCallbacks(callbacks, "queryTXC");
338 // BRG is a stub so don't need SDNC callbacks
341 injectSDNCCallbacks(callbacks, "deactivate");
342 injectSDNCCallbacks(callbacks, "delete");
343 injectSDNCCallbacks(callbacks, "unassign");
345 waitForProcessEnd(businessKey, 10000);
347 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
348 System.out.println("workflowException:\n" + workflowException);
350 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
351 System.out.println("completionReq:\n" + completionReq);
353 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
354 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
355 assertEquals(null, completionReq);
356 assertNotNull(workflowException);
358 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceBRGRollback");
359 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateVnfAndModulesRollback");
360 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceTXCRollback");
368 private Map<String, Object> setupVariables() {
369 Map<String, Object> variables = new HashMap<>();
370 variables.put("requestId", "testRequestId");
371 variables.put("request-id", "testRequestId");
372 variables.put("serviceInstanceId", DEC_INST);
373 variables.put("allottedResourceId", ARID);