2 * ============LICENSE_START======================================================= ONAP - SO
3 * ================================================================================ Copyright (C) 2017 AT&T Intellectual
4 * Property. All rights reserved. ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 * specific language governing permissions and limitations under the License.
13 * ============LICENSE_END=========================================================
16 package org.onap.so.bpmn.vcpe;
18 import org.junit.Test;
19 import org.onap.so.bpmn.common.BPMNUtil;
20 import org.onap.so.bpmn.core.RollbackData;
21 import org.onap.so.bpmn.mock.FileUtil;
22 import java.io.IOException;
23 import java.util.HashMap;
25 import java.util.UUID;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.assertTrue;
30 import static org.onap.so.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
31 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
32 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
33 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
34 import static org.onap.so.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
35 import static org.onap.so.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
37 public class DoCreateAllottedResourceTXCRollbackIT extends AbstractTestBase {
39 private static final String PROCNAME = "DoCreateAllottedResourceTXCRollback";
40 private static final String RbType = "DCARTXC_";
41 private final CallbackSet callbacks = new CallbackSet();
43 public DoCreateAllottedResourceTXCRollbackIT() throws IOException {
44 callbacks.put("deactivate",
45 FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
46 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
47 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
51 public void testDoCreateAllottedResourceTXCRollback_Success() throws Exception {
53 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
54 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
55 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
56 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
57 mockSDNCAdapter(wireMockServer, 200);
58 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
60 String businessKey = UUID.randomUUID().toString();
61 Map<String, Object> variables = new HashMap<>();
62 setVariablesSuccess(variables, businessKey);
64 String processId = invokeSubProcess(PROCNAME, variables);
66 injectSDNCCallbacks(callbacks, "deactivate");
67 injectSDNCCallbacks(callbacks, "delete");
68 injectSDNCCallbacks(callbacks, "unassign");
70 waitForWorkflowToFinish(processEngine, processId);
72 assertTrue(isProcessEndedByProcessInstanceId(processId));
73 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
74 System.out.println("workflowException:\n" + workflowException);
75 assertEquals(null, workflowException);
76 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
77 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
82 public void testDoCreateAllottedResourceTXCRollback_skipRollback() throws Exception {
84 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
85 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
86 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
87 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
88 mockSDNCAdapter(wireMockServer, 200);
89 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
91 String businessKey = UUID.randomUUID().toString();
92 Map<String, Object> variables = new HashMap<>();
93 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
95 rollbackData.put(RbType, "rollbackAAI", "false");
96 rollbackData.put(RbType, "rollbackSDNCassign", "false");
98 String processId = invokeSubProcess(PROCNAME, variables);
100 waitForWorkflowToFinish(processEngine, processId);
102 assertTrue(isProcessEndedByProcessInstanceId(processId));
103 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
104 System.out.println("workflowException:\n" + workflowException);
105 assertEquals(null, workflowException);
106 assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
107 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
112 public void testDoCreateAllottedResourceTXCRollback_DoNotRollBack() throws Exception {
114 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
115 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
116 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
117 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
119 String businessKey = UUID.randomUUID().toString();
120 Map<String, Object> variables = new HashMap<>();
121 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
123 // this will cause "rollbackSDNC" to be set to false
124 rollbackData.put(RbType, "rollbackSDNCassign", "false");
126 String processId = invokeSubProcess(PROCNAME, variables);
128 waitForWorkflowToFinish(processEngine, processId);
130 assertTrue(isProcessEndedByProcessInstanceId(processId));
131 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
132 System.out.println("workflowException:\n" + workflowException);
133 assertEquals(null, workflowException);
134 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
135 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
140 public void testDoCreateAllottedResourceTXCRollback_NoDeactivate() throws Exception {
142 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
143 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
144 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
145 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
146 mockSDNCAdapter(wireMockServer, 200);
147 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
149 String businessKey = UUID.randomUUID().toString();
150 Map<String, Object> variables = new HashMap<>();
151 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
153 rollbackData.put(RbType, "rollbackSDNCactivate", "false");
155 String processId = invokeSubProcess(PROCNAME, variables);
157 injectSDNCCallbacks(callbacks, "delete");
158 injectSDNCCallbacks(callbacks, "unassign");
160 waitForWorkflowToFinish(processEngine, processId);
162 assertTrue(isProcessEndedByProcessInstanceId(processId));
163 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
164 System.out.println("workflowException:\n" + workflowException);
165 assertEquals(null, workflowException);
166 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
167 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
172 public void testDoCreateAllottedResourceTXCRollback_NoDelete() throws Exception {
174 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
175 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
176 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
177 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
178 mockSDNCAdapter(wireMockServer, 200);
179 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
181 String businessKey = UUID.randomUUID().toString();
182 Map<String, Object> variables = new HashMap<>();
183 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
185 rollbackData.put(RbType, "rollbackSDNCcreate", "false");
187 String processId = invokeSubProcess(PROCNAME, variables);
189 injectSDNCCallbacks(callbacks, "deactivate");
190 injectSDNCCallbacks(callbacks, "unassign");
192 waitForWorkflowToFinish(processEngine, processId);
194 assertTrue(isProcessEndedByProcessInstanceId(processId));
195 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
196 System.out.println("workflowException:\n" + workflowException);
197 assertEquals(null, workflowException);
198 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
199 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
204 public void testDoCreateAllottedResourceTXCRollback_NoUnassign() throws Exception {
206 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
207 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
208 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
209 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
210 mockSDNCAdapter(wireMockServer, 200);
211 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
213 String businessKey = UUID.randomUUID().toString();
214 Map<String, Object> variables = new HashMap<>();
215 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
217 rollbackData.put(RbType, "rollbackSDNCassign", "false");
220 * Note: if assign == false then the flow/script will set "skipRollback" to false, which will cause ALL of the
221 * SDNC steps to be skipped, not just the unassign step.
224 String processId = invokeSubProcess(PROCNAME, variables);
226 waitForWorkflowToFinish(processEngine, processId);
228 assertTrue(isProcessEndedByProcessInstanceId(processId));
229 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
230 System.out.println("workflowException:\n" + workflowException);
231 assertEquals(null, workflowException);
232 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
233 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
238 public void testDoCreateAllottedResourceTXCRollback_SubProcessError() throws Exception {
240 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
241 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
242 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
243 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
244 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
246 mockSDNCAdapter(wireMockServer, 404);
248 String businessKey = UUID.randomUUID().toString();
249 Map<String, Object> variables = new HashMap<>();
250 setVariablesSuccess(variables, businessKey);
252 String processId = invokeSubProcess(PROCNAME, variables);
254 waitForWorkflowToFinish(processEngine, processId);
256 assertTrue(isProcessEndedByProcessInstanceId(processId));
257 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
258 System.out.println("workflowException:\n" + workflowException);
259 assertEquals(null, workflowException);
260 assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
261 assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
266 public void testDoCreateAllottedResourceTXCRollback_JavaException() throws Exception {
268 MockGetAllottedResource(wireMockServer, CUST, SVC, INST, ARID,
269 "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
270 MockPatchAllottedResource(wireMockServer, CUST, SVC, INST, ARID);
271 MockDeleteAllottedResource(wireMockServer, CUST, SVC, INST, ARID, ARVERS);
272 mockSDNCAdapter(wireMockServer, 200);
273 mockUpdateRequestDB(wireMockServer, 200, "Database/DBUpdateResponse.xml");
275 String businessKey = UUID.randomUUID().toString();
276 Map<String, Object> variables = new HashMap<>();
277 setVariablesSuccess(variables, businessKey);
279 variables.put("rollbackData", "string instead of rollback data");
281 String processId = invokeSubProcess(PROCNAME, variables);
283 waitForWorkflowToFinish(processEngine, processId);
285 assertTrue(isProcessEndedByProcessInstanceId(processId));
286 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX, processId);
287 System.out.println("workflowException:\n" + workflowException);
288 assertEquals(null, workflowException);
289 assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack", processId));
290 assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError", processId));
294 private RollbackData setVariablesSuccess(Map<String, Object> variables, String requestId) {
295 variables.put("isDebugLogEnabled", "true");
296 variables.put("failNotFound", "true");
297 variables.put("msoRequestId", requestId);
298 variables.put("mso-request-id", "requestId");
299 variables.put("allottedResourceId", ARID);
301 variables.put("serviceInstanceId", DEC_INST);
302 variables.put("parentServiceInstanceId", DEC_PARENT_INST);
304 RollbackData rollbackData = new RollbackData();
306 rollbackData.put(RbType, "serviceInstanceId", DEC_INST);
307 rollbackData.put(RbType, "serviceSubscriptionType", SVC);
308 rollbackData.put(RbType, "disablerollback", "false");
309 rollbackData.put(RbType, "rollbackAAI", "true");
310 rollbackData.put(RbType, "rollbackSDNCassign", "true");
311 rollbackData.put(RbType, "rollbackSDNCactivate", "true");
312 rollbackData.put(RbType, "rollbackSDNCcreate", "true");
313 rollbackData.put(RbType, "aaiARPath",
314 "/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC
315 + "/service-instances/service-instance/" + INST + "/allotted-resources/allotted-resource/"
318 rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil
319 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
320 rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil
321 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml"));
322 rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil
323 .readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
325 variables.put("rollbackData", rollbackData);