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=========================================================
21 package org.onap.so.bpmn.vcpe;
23 import org.junit.Test;
24 import org.onap.so.bpmn.common.BPMNUtil;
25 import org.onap.so.bpmn.core.RollbackData;
26 import org.onap.so.bpmn.mock.FileUtil;
28 import java.io.IOException;
29 import java.util.HashMap;
31 import java.util.UUID;
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertNotNull;
35 import static org.junit.Assert.assertNull;
36 import static org.junit.Assert.assertTrue;
37 import static org.onap.so.bpmn.common.BPMNUtil.waitForWorkflowToFinish;
38 import static org.onap.so.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
39 import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
40 import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
41 import static org.onap.so.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
42 import static org.onap.so.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
44 public class DoCreateAllottedResourceTXCRollbackIT extends AbstractTestBase {
46 private static final String PROCNAME = "DoCreateAllottedResourceTXCRollback";
47 private static final String RbType = "DCARTXC_";
48 private final CallbackSet callbacks = new CallbackSet();
50 public DoCreateAllottedResourceTXCRollbackIT() throws IOException {
51 callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
52 callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
53 callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
57 public void testDoCreateAllottedResourceTXCRollback_Success() throws Exception {
59 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
60 MockPatchAllottedResource(CUST, SVC, INST, ARID);
61 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
63 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
65 String businessKey = UUID.randomUUID().toString();
66 Map<String, Object> variables = new HashMap<>();
67 setVariablesSuccess(variables, businessKey);
69 String processId = invokeSubProcess(PROCNAME, variables);
71 injectSDNCCallbacks(callbacks, "deactivate");
72 injectSDNCCallbacks(callbacks, "delete");
73 injectSDNCCallbacks(callbacks, "unassign");
75 waitForWorkflowToFinish(processEngine,processId);
77 assertTrue(isProcessEndedByProcessInstanceId(processId));
78 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
79 System.out.println("workflowException:\n" + workflowException);
80 assertEquals(null, workflowException);
81 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
82 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
87 public void testDoCreateAllottedResourceTXCRollback_skipRollback() throws Exception {
89 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
90 MockPatchAllottedResource(CUST, SVC, INST, ARID);
91 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
93 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
95 String businessKey = UUID.randomUUID().toString();
96 Map<String, Object> variables = new HashMap<>();
97 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
99 rollbackData.put(RbType, "rollbackAAI", "false");
100 rollbackData.put(RbType, "rollbackSDNCassign", "false");
102 String processId = invokeSubProcess(PROCNAME, variables);
104 waitForWorkflowToFinish(processEngine,processId);
106 assertTrue(isProcessEndedByProcessInstanceId(processId));
107 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
108 System.out.println("workflowException:\n" + workflowException);
109 assertEquals(null, workflowException);
110 assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
111 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
116 public void testDoCreateAllottedResourceTXCRollback_DoNotRollBack() throws Exception {
118 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
119 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
120 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
122 String businessKey = UUID.randomUUID().toString();
123 Map<String, Object> variables = new HashMap<>();
124 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
126 // this will cause "rollbackSDNC" to be set to false
127 rollbackData.put(RbType, "rollbackSDNCassign", "false");
129 String processId = invokeSubProcess(PROCNAME, variables);
131 waitForWorkflowToFinish(processEngine,processId);
133 assertTrue(isProcessEndedByProcessInstanceId(processId));
134 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
135 System.out.println("workflowException:\n" + workflowException);
136 assertEquals(null, workflowException);
137 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
138 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
143 public void testDoCreateAllottedResourceTXCRollback_NoDeactivate() throws Exception {
145 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
146 MockPatchAllottedResource(CUST, SVC, INST, ARID);
147 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
148 mockSDNCAdapter(200);
149 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
151 String businessKey = UUID.randomUUID().toString();
152 Map<String, Object> variables = new HashMap<>();
153 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
155 rollbackData.put(RbType, "rollbackSDNCactivate", "false");
157 String processId = invokeSubProcess(PROCNAME, variables);
159 injectSDNCCallbacks(callbacks, "delete");
160 injectSDNCCallbacks(callbacks, "unassign");
162 waitForWorkflowToFinish(processEngine,processId);
164 assertTrue(isProcessEndedByProcessInstanceId(processId));
165 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
166 System.out.println("workflowException:\n" + workflowException);
167 assertEquals(null, workflowException);
168 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
169 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
174 public void testDoCreateAllottedResourceTXCRollback_NoDelete() throws Exception {
176 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
177 MockPatchAllottedResource(CUST, SVC, INST, ARID);
178 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
179 mockSDNCAdapter(200);
180 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
182 String businessKey = UUID.randomUUID().toString();
183 Map<String, Object> variables = new HashMap<>();
184 RollbackData rollbackData = setVariablesSuccess(variables, businessKey);
186 rollbackData.put(RbType, "rollbackSDNCcreate", "false");
188 String processId = invokeSubProcess(PROCNAME, variables);
190 injectSDNCCallbacks(callbacks, "deactivate");
191 injectSDNCCallbacks(callbacks, "unassign");
193 waitForWorkflowToFinish(processEngine,processId);
195 assertTrue(isProcessEndedByProcessInstanceId(processId));
196 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
197 System.out.println("workflowException:\n" + workflowException);
198 assertEquals(null, workflowException);
199 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
200 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
205 public void testDoCreateAllottedResourceTXCRollback_NoUnassign() throws Exception {
207 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
208 MockPatchAllottedResource(CUST, SVC, INST, ARID);
209 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
210 mockSDNCAdapter(200);
211 mockUpdateRequestDB(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
221 * "skipRollback" to false, which will cause ALL of the SDNC steps
222 * to be skipped, not just the unassign step.
225 String processId = invokeSubProcess(PROCNAME, variables);
227 waitForWorkflowToFinish(processEngine,processId);
229 assertTrue(isProcessEndedByProcessInstanceId(processId));
230 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
231 System.out.println("workflowException:\n" + workflowException);
232 assertEquals(null, workflowException);
233 assertEquals("true", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
234 assertNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
239 public void testDoCreateAllottedResourceTXCRollback_SubProcessError() throws Exception {
241 MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
242 MockPatchAllottedResource(CUST, SVC, INST, ARID);
243 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
244 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
246 mockSDNCAdapter(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(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
269 MockPatchAllottedResource(CUST, SVC, INST, ARID);
270 MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
271 mockSDNCAdapter(200);
272 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
274 String businessKey = UUID.randomUUID().toString();
275 Map<String, Object> variables = new HashMap<>();
276 setVariablesSuccess(variables, businessKey);
278 variables.put("rollbackData", "string instead of rollback data");
280 String processId = invokeSubProcess(PROCNAME, variables);
282 waitForWorkflowToFinish(processEngine,processId);
284 assertTrue(isProcessEndedByProcessInstanceId(processId));
285 String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId);
286 System.out.println("workflowException:\n" + workflowException);
287 assertEquals(null, workflowException);
288 assertEquals("false", BPMNUtil.getVariable(processEngine, PROCNAME, "rolledBack",processId));
289 assertNotNull(BPMNUtil.getVariable(processEngine, PROCNAME, "rollbackError",processId));
293 private RollbackData setVariablesSuccess(Map<String, Object> variables, String requestId) {
294 variables.put("isDebugLogEnabled", "true");
295 variables.put("failNotFound", "true");
296 variables.put("msoRequestId", requestId);
297 variables.put("mso-request-id", "requestId");
298 variables.put("allottedResourceId", ARID);
300 variables.put("serviceInstanceId", DEC_INST);
301 variables.put("parentServiceInstanceId", DEC_PARENT_INST);
303 RollbackData rollbackData = new RollbackData();
305 rollbackData.put(RbType, "serviceInstanceId", DEC_INST);
306 rollbackData.put(RbType, "serviceSubscriptionType", SVC);
307 rollbackData.put(RbType, "disablerollback", "false");
308 rollbackData.put(RbType, "rollbackAAI", "true");
309 rollbackData.put(RbType, "rollbackSDNCassign", "true");
310 rollbackData.put(RbType, "rollbackSDNCactivate", "true");
311 rollbackData.put(RbType, "rollbackSDNCcreate", "true");
312 rollbackData.put(RbType, "aaiARPath", "/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID);
314 rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
315 rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml"));
316 rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
318 variables.put("rollbackData",rollbackData);