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.Ignore;
44 import org.junit.Test;
45 import org.openecomp.mso.bpmn.common.BPMNUtil;
46 import org.openecomp.mso.bpmn.mock.FileUtil;
48 public class CreateVcpeResCustServiceTest extends AbstractTestBase {
50 private static final String PROCNAME = "CreateVcpeResCustService";
51 private static final String Prefix = "CVRCS_";
53 private final CallbackSet callbacks = new CallbackSet();
54 private final String request;
56 public CreateVcpeResCustServiceTest() throws IOException {
57 callbacks.put("assign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyAssignCallback.xml"));
58 callbacks.put("create", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyCreateCallback.xml"));
59 callbacks.put("activate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyActivateCallback.xml"));
60 callbacks.put("queryTXC", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml"));
61 callbacks.put("queryBRG", FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml"));
62 callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
63 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
64 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
66 request = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSIName.json");
71 @Deployment(resources = {
72 "process/CreateVcpeResCustService.bpmn",
73 "subprocess/SDNCAdapterV1.bpmn",
74 "subprocess/FalloutHandler.bpmn",
75 "subprocess/GenericGetService.bpmn",
76 "subprocess/GenericPutService.bpmn",
77 "subprocess/BuildingBlock/DecomposeService.bpmn",
78 "subprocess/DoCreateServiceInstance.bpmn",
79 "subprocess/DoCreateAllottedResourceTXC.bpmn",
80 "subprocess/DoCreateAllottedResourceBRG.bpmn",
81 "subprocess/CompleteMsoProcess.bpmn",
84 "VCPE/stubprocess/Homing.bpmn",
85 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
87 public void testCreateVcpeResCustService_Success() throws Exception {
89 System.out.println("starting: testCreateVcpeResCustService_Success\n");
90 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
91 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
92 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
94 // TODO: the SI should NOT have to be URL-encoded yet again!
95 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
96 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
98 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
99 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
100 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
101 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
102 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
103 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
105 mockSDNCAdapter(200);
106 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
108 Map<String, Object> variables = setupVariables();
110 String businessKey = UUID.randomUUID().toString();
111 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
114 injectSDNCCallbacks(callbacks, "assign");
117 injectSDNCCallbacks(callbacks, "assign");
118 injectSDNCCallbacks(callbacks, "create");
119 injectSDNCCallbacks(callbacks, "activate");
120 injectSDNCCallbacks(callbacks, "queryTXC");
123 injectSDNCCallbacks(callbacks, "assign");
124 injectSDNCCallbacks(callbacks, "create");
125 injectSDNCCallbacks(callbacks, "activate");
126 injectSDNCCallbacks(callbacks, "queryBRG");
128 waitForProcessEnd(businessKey, 10000);
130 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
131 System.out.println("workflowException:\n" + workflowException);
133 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
134 System.out.println("completionReq:\n" + completionReq);
136 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
137 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
138 assertEquals(null, workflowException);
139 assertTrue(completionReq.contains("request-id>testRequestId<"));
140 assertTrue(completionReq.contains("action>CREATE<"));
141 assertTrue(completionReq.contains("source>VID<"));
143 assertEquals("1", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
147 @Ignore // 1802 merge
148 @Deployment(resources = {
149 "process/CreateVcpeResCustService.bpmn",
150 "subprocess/SDNCAdapterV1.bpmn",
151 "subprocess/FalloutHandler.bpmn",
152 "subprocess/GenericGetService.bpmn",
153 "subprocess/GenericPutService.bpmn",
154 "subprocess/BuildingBlock/DecomposeService.bpmn",
155 "subprocess/DoCreateServiceInstance.bpmn",
156 "subprocess/DoCreateAllottedResourceTXC.bpmn",
157 "subprocess/DoCreateAllottedResourceBRG.bpmn",
158 "subprocess/CompleteMsoProcess.bpmn",
161 "VCPE/stubprocess/Homing.bpmn",
162 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
164 public void testCreateVcpeResCustService_NoParts() throws Exception {
166 System.out.println("starting: testCreateVcpeResCustService_NoParts\n" );
167 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
168 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesNoData.json");
169 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
171 // TODO: the SI should NOT have to be URL-encoded yet again!
172 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
173 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
175 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
176 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
177 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
178 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
180 // TODO: should these really be PARENT_INST, or should they be INST?
181 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
182 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
184 mockSDNCAdapter(200);
185 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
187 Map<String, Object> variables = setupVariables();
189 String businessKey = UUID.randomUUID().toString();
190 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
193 injectSDNCCallbacks(callbacks, "assign");
195 waitForProcessEnd(businessKey, 10000);
197 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
198 System.out.println("workflowException:\n" + workflowException);
200 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
201 System.out.println("completionReq:\n" + completionReq);
203 assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
204 assertEquals("200", BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
205 assertEquals(null, workflowException);
206 assertTrue(completionReq.contains("request-id>testRequestId<"));
207 assertTrue(completionReq.contains("action>CREATE<"));
208 assertTrue(completionReq.contains("source>VID<"));
210 assertEquals("0", BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+"VnfsCreatedCount"));
214 @Ignore // 1802 merge
215 @Deployment(resources = {
216 "process/CreateVcpeResCustService.bpmn",
217 "subprocess/SDNCAdapterV1.bpmn",
218 "subprocess/FalloutHandler.bpmn",
219 "subprocess/GenericGetService.bpmn",
220 "subprocess/GenericPutService.bpmn",
221 "subprocess/BuildingBlock/DecomposeService.bpmn",
222 "subprocess/DoCreateServiceInstance.bpmn",
223 "subprocess/DoCreateAllottedResourceBRG.bpmn",
224 "subprocess/CompleteMsoProcess.bpmn",
226 // this stub will trigger a fault
227 "VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn",
230 "VCPE/stubprocess/Homing.bpmn",
231 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
233 public void testCreateVcpeResCustService_Fault_NoRollback() throws Exception {
235 System.out.println("starting: testCreateVcpeResCustService_Fault_NoRollback\n");
236 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
237 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
238 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
240 // TODO: the SI should NOT have to be URL-encoded yet again!
241 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
242 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
244 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
245 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
246 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
247 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
248 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
249 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
251 mockSDNCAdapter(200);
252 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
254 Map<String, Object> variables = setupVariables();
256 String req = FileUtil.readResourceFile("__files/VCPE/CreateVcpeResCustService/requestNoSINameNoRollback.json");
258 String businessKey = UUID.randomUUID().toString();
259 invokeAsyncProcess(PROCNAME, "v1", businessKey, req, variables);
262 injectSDNCCallbacks(callbacks, "assign");
264 waitForProcessEnd(businessKey, 10000);
266 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
267 System.out.println("workflowException:\n" + workflowException);
269 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
270 System.out.println("completionReq:\n" + completionReq);
272 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
273 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
274 assertNotNull(workflowException);
276 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceBRGRollback");
277 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateVnfAndModulesRollback");
278 BPMNUtil.assertNoProcessInstance(processEngineRule, "DoCreateAllottedResourceTXCRollback");
282 @Ignore // 1802 merge
283 @Deployment(resources = {
284 "process/CreateVcpeResCustService.bpmn",
285 "subprocess/SDNCAdapterV1.bpmn",
286 "subprocess/FalloutHandler.bpmn",
287 "subprocess/GenericGetService.bpmn",
288 "subprocess/GenericPutService.bpmn",
289 "subprocess/BuildingBlock/DecomposeService.bpmn",
290 "subprocess/DoCreateServiceInstance.bpmn",
291 "subprocess/DoCreateAllottedResourceTXC.bpmn",
292 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
293 "subprocess/CompleteMsoProcess.bpmn",
295 // this stub will trigger a fault
296 "VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn",
299 "VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn",
300 "VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn",
301 "VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn",
302 "VCPE/stubprocess/Homing.bpmn",
303 "VCPE/stubprocess/DoCreateVnfAndModules.bpmn"})
305 public void testCreateVcpeResCustService_Fault_Rollback() throws Exception {
307 System.out.println("starting: testCreateVcpeResCustService_Fault_Rollback\n");
308 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
309 MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/CreateVcpeResCustService/getCatalogServiceResourcesData.json");
310 MockGetCustomer(CUST, "VCPE/CreateVcpeResCustService/getCustomer.xml");
312 // TODO: the SI should NOT have to be URL-encoded yet again!
313 MockPutServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
314 MockGetServiceInstance(CUST, SVC, INST.replace("%", "%25"), "GenericFlows/getServiceInstance.xml");
316 MockNodeQueryServiceInstanceById(INST, "GenericFlows/getSIUrlById.xml");
317 MockNodeQueryServiceInstanceById(PARENT_INST, "GenericFlows/getParentSIUrlById.xml");
318 MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml");
319 MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml");
320 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
321 MockGetAllottedResource(CUST, SVC, PARENT_INST, ARID, "VCPE/CreateVcpeResCustService/arGetById.xml");
322 MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID);
323 MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID);
324 MockDeleteAllottedResource(CUST, SVC, PARENT_INST, ARID, ARVERS);
326 mockSDNCAdapter(200);
327 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
329 Map<String, Object> variables = setupVariables();
331 String businessKey = UUID.randomUUID().toString();
332 invokeAsyncProcess(PROCNAME, "v1", businessKey, request, variables);
335 injectSDNCCallbacks(callbacks, "assign");
338 injectSDNCCallbacks(callbacks, "assign");
339 injectSDNCCallbacks(callbacks, "create");
340 injectSDNCCallbacks(callbacks, "activate");
341 injectSDNCCallbacks(callbacks, "queryTXC");
343 // BRG is a stub so don't need SDNC callbacks
346 injectSDNCCallbacks(callbacks, "deactivate");
347 injectSDNCCallbacks(callbacks, "delete");
348 injectSDNCCallbacks(callbacks, "unassign");
350 waitForProcessEnd(businessKey, 10000);
352 String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
353 System.out.println("workflowException:\n" + workflowException);
355 String completionReq = BPMNUtil.getVariable(processEngineRule, PROCNAME, Prefix+VAR_COMP_REQ);
356 System.out.println("completionReq:\n" + completionReq);
358 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, PROCNAME+VAR_SUCCESS_IND));
359 assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_RESP_CODE));
360 assertEquals(null, completionReq);
361 assertNotNull(workflowException);
363 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceBRGRollback");
364 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateVnfAndModulesRollback");
365 BPMNUtil.assertAnyProcessInstanceFinished(processEngineRule, "DoCreateAllottedResourceTXCRollback");
373 private Map<String, Object> setupVariables() {
374 Map<String, Object> variables = new HashMap<>();
375 variables.put("requestId", "testRequestId");
376 variables.put("request-id", "testRequestId");
377 variables.put("serviceInstanceId", DEC_INST);
378 variables.put("allottedResourceId", ARID);