2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2020 Nokia
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.workflow.tasks;
25 import org.camunda.bpm.engine.delegate.BpmnError;
26 import org.camunda.bpm.engine.delegate.DelegateExecution;
27 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
28 import org.junit.Before;
29 import org.junit.Rule;
30 import org.junit.Test;
31 import org.junit.rules.ExpectedException;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.Spy;
36 import org.onap.aai.domain.yang.Configuration;
37 import org.onap.aai.domain.yang.GenericVnf;
38 import org.onap.aai.domain.yang.InstanceGroup;
39 import org.onap.aai.domain.yang.L3Network;
40 import org.onap.aai.domain.yang.ServiceInstance;
41 import org.onap.aai.domain.yang.VfModule;
42 import org.onap.aai.domain.yang.VolumeGroup;
43 import org.onap.so.bpmn.BaseTaskTest;
44 import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulatorListenerRunner;
45 import org.onap.so.bpmn.core.WorkflowException;
46 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
47 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
48 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
49 import org.onap.so.db.request.beans.InfraActiveRequests;
50 import org.onap.so.serviceinstancebeans.ModelInfo;
51 import org.onap.so.serviceinstancebeans.RequestDetails;
52 import org.springframework.core.env.Environment;
53 import java.util.ArrayList;
54 import java.util.List;
55 import java.util.Optional;
56 import static org.junit.Assert.assertEquals;
57 import static org.junit.Assert.assertFalse;
58 import static org.junit.Assert.assertTrue;
59 import static org.mockito.ArgumentMatchers.anyObject;
60 import static org.mockito.ArgumentMatchers.anyString;
61 import static org.mockito.ArgumentMatchers.isA;
62 import static org.mockito.Mockito.doNothing;
63 import static org.mockito.Mockito.doReturn;
64 import static org.mockito.Mockito.when;
66 public class WorkflowActionBBTasksTest extends BaseTaskTest {
68 private static final String SAMPLE_MSO_REQUEST_ID = "00f704ca-c5e5-4f95-a72c-6889db7b0688";
69 private static final String SAMPLE_REQUEST_ACTION = "Delete-Network-Collection";
70 private static final int SAMPLE_SEQUENCE = 0;
71 private static final String EMPTY_STRING = "";
73 protected WorkflowAction workflowAction;
76 protected WorkflowActionBBFailure workflowActionBBFailure;
80 protected WorkflowActionBBTasks workflowActionBBTasks;
83 InfraActiveRequests reqMock;
85 private DelegateExecution execution;
88 protected Environment environment;
91 private FlowManipulatorListenerRunner flowManipulatorListenerRunner;
94 public ExpectedException thrown = ExpectedException.none();
97 public void before() throws Exception {
98 execution = new DelegateExecutionFake();
99 ServiceInstance servInstance = new ServiceInstance();
100 servInstance.setServiceInstanceId("TEST");
101 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
102 workflowAction.setBbInputSetupUtils(bbSetupUtils);
103 workflowAction.setBbInputSetup(bbInputSetup);
107 public void selectBBTest() {
108 String vnfCustomizationUUID = "1234567";
109 String modelUuid = "1234567";
110 prepareDelegateExecution();
111 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
113 BuildingBlock buildingBlock =
114 new BuildingBlock().setBpmnFlowName("ConfigAssignVnfBB").setKey(vnfCustomizationUUID);
115 RequestDetails rd = new RequestDetails();
116 ModelInfo mi = new ModelInfo();
117 mi.setModelUuid(modelUuid);
119 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
120 flowsToExecute.add(ebb);
122 List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
123 VnfResourceCustomization vrc = new VnfResourceCustomization();
124 vrc.setSkipPostInstConf(false);
125 vrc.setModelCustomizationUUID(vnfCustomizationUUID);
126 vnfResourceCustomizations.add(vrc);
127 GenericVnf genericVnf = new GenericVnf();
128 genericVnf.setModelCustomizationId(vnfCustomizationUUID);
129 doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
130 doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
131 vnfResourceCustomizations);
133 execution.setVariable("flowsToExecute", flowsToExecute);
134 workflowActionBBTasks.selectBB(execution);
135 boolean success = (boolean) execution.getVariable("completed");
136 int currentSequence = (int) execution.getVariable("gCurrentSequence");
138 assertEquals(1, currentSequence);
142 public void select2BBTest() {
143 String vnfCustomizationUUID = "1234567";
144 String modelUuid = "1234567";
146 prepareDelegateExecution();
147 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
148 BuildingBlock buildingBlock =
149 new BuildingBlock().setBpmnFlowName("ConfigDeployVnfBB").setKey(vnfCustomizationUUID);
150 RequestDetails rd = new RequestDetails();
151 ModelInfo mi = new ModelInfo();
152 mi.setModelUuid(modelUuid);
154 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
155 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
157 flowsToExecute.add(ebb);
159 List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
160 VnfResourceCustomization vrc = new VnfResourceCustomization();
162 vrc.setSkipPostInstConf(false);
163 vrc.setModelCustomizationUUID(vnfCustomizationUUID);
164 vnfResourceCustomizations.add(vrc);
165 GenericVnf genericVnf = new GenericVnf();
166 genericVnf.setModelCustomizationId(vnfCustomizationUUID);
168 doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
169 doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
170 vnfResourceCustomizations);
172 flowsToExecute.add(ebb2);
173 execution.setVariable("flowsToExecute", flowsToExecute);
174 workflowActionBBTasks.selectBB(execution);
175 boolean success = (boolean) execution.getVariable("completed");
176 int currentSequence = (int) execution.getVariable("gCurrentSequence");
177 assertFalse(success);
178 assertEquals(1, currentSequence);
182 public void updateRequestStatusToCompleteTest() {
183 String reqId = "reqId123";
184 execution.setVariable("mso-request-id", reqId);
185 execution.setVariable("requestAction", "createInstance");
186 execution.setVariable("resourceName", "Service");
187 execution.setVariable("aLaCarte", true);
188 InfraActiveRequests req = new InfraActiveRequests();
189 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
190 doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
191 workflowActionBBTasks.updateRequestStatusToComplete(execution);
192 assertEquals("ALaCarte-Service-createInstance request was executed correctly.",
193 execution.getVariable("finalStatusMessage"));
197 public void rollbackExecutionPathTest() {
198 execution.setVariable("handlingCode", "Rollback");
199 execution.setVariable("isRollback", false);
200 execution.setVariable("requestAction", EMPTY_STRING);
201 execution.setVariable("resourceName", EMPTY_STRING);
202 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
203 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
204 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
205 flowsToExecute.add(ebb1);
207 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
208 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
209 flowsToExecute.add(ebb2);
211 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
212 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
213 flowsToExecute.add(ebb3);
215 execution.setVariable("flowsToExecute", flowsToExecute);
216 execution.setVariable("gCurrentSequence", 3);
217 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
219 workflowActionBBTasks.rollbackExecutionPath(execution);
220 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
221 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateVfModuleBB");
222 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
223 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
224 assertEquals(0, execution.getVariable("gCurrentSequence"));
228 public void rollbackExecutionPathUnfinishedFlowTest() {
229 execution.setVariable("handlingCode", "Rollback");
230 execution.setVariable("isRollback", false);
231 execution.setVariable("requestAction", EMPTY_STRING);
232 execution.setVariable("resourceName", EMPTY_STRING);
233 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
234 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
235 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
236 flowsToExecute.add(ebb1);
238 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
239 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
240 flowsToExecute.add(ebb2);
242 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
243 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
244 flowsToExecute.add(ebb3);
246 execution.setVariable("flowsToExecute", flowsToExecute);
247 execution.setVariable("gCurrentSequence", 2);
248 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
250 workflowActionBBTasks.rollbackExecutionPath(execution);
251 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
252 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
253 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
254 assertEquals(0, execution.getVariable("gCurrentSequence"));
255 assertEquals(0, execution.getVariable("retryCount"));
259 public void rollbackExecutionTest() {
260 execution.setVariable("handlingCode", "Rollback");
261 execution.setVariable("isRollback", false);
262 execution.setVariable("requestAction", EMPTY_STRING);
263 execution.setVariable("resourceName", EMPTY_STRING);
264 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
265 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
266 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
267 flowsToExecute.add(ebb1);
269 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateNetworkCollectionBB");
270 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
271 flowsToExecute.add(ebb2);
273 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB");
274 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
275 flowsToExecute.add(ebb3);
277 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB");
278 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
279 flowsToExecute.add(ebb4);
281 execution.setVariable("flowsToExecute", flowsToExecute);
282 execution.setVariable("gCurrentSequence", 3);
283 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
285 workflowActionBBTasks.rollbackExecutionPath(execution);
286 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
287 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "UnassignNetworkBB");
288 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteNetworkCollectionBB");
289 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignServiceInstanceBB");
290 assertEquals(0, execution.getVariable("gCurrentSequence"));
294 public void rollbackExecutionRollbackToAssignedTest() {
295 execution.setVariable("isRollback", false);
296 execution.setVariable("handlingCode", "RollbackToAssigned");
297 execution.setVariable("requestAction", EMPTY_STRING);
298 execution.setVariable("resourceName", EMPTY_STRING);
299 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
301 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
302 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
303 flowsToExecute.add(ebb1);
305 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
306 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
307 flowsToExecute.add(ebb2);
309 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
310 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
311 flowsToExecute.add(ebb3);
313 execution.setVariable("flowsToExecute", flowsToExecute);
314 execution.setVariable("gCurrentSequence", 2);
316 workflowActionBBTasks.rollbackExecutionPath(execution);
317 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
318 assertEquals("DeleteVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
319 assertEquals(0, execution.getVariable("gCurrentSequence"));
320 assertEquals(1, ebbs.size());
324 public void rollbackExecutionPathChangeBBForReplaceVFModuleTest() {
325 execution.setVariable("handlingCode", "Rollback");
326 execution.setVariable("isRollback", false);
327 execution.setVariable("requestAction", "replaceInstance");
328 execution.setVariable("resourceName", "VfModule");
329 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
330 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
331 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
332 flowsToExecute.add(ebb1);
334 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
335 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
336 flowsToExecute.add(ebb2);
338 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
339 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
340 flowsToExecute.add(ebb3);
343 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("ChangeModelVnfBB");
344 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
345 flowsToExecute.add(ebb4);
347 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("ChangeModelServiceInstanceBB");
348 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
349 flowsToExecute.add(ebb5);
351 execution.setVariable("flowsToExecute", flowsToExecute);
352 execution.setVariable("gCurrentSequence", 5);
353 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
355 workflowActionBBTasks.rollbackExecutionPath(execution);
356 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
357 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "ChangeModelVnfBB");
358 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "ChangeModelServiceInstanceBB");
359 assertEquals(0, execution.getVariable("gCurrentSequence"));
363 public void rollbackExecutionRollbackToAssignedWithFabricTest() {
364 execution.setVariable("isRollback", false);
365 execution.setVariable("handlingCode", "RollbackToAssigned");
366 execution.setVariable("requestAction", EMPTY_STRING);
367 execution.setVariable("resourceName", EMPTY_STRING);
368 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
370 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
371 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
372 flowsToExecute.add(ebb1);
374 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
375 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
376 flowsToExecute.add(ebb2);
378 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
379 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
380 flowsToExecute.add(ebb3);
382 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("AddFabricConfigurationBB");
383 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
384 flowsToExecute.add(ebb4);
386 execution.setVariable("flowsToExecute", flowsToExecute);
387 execution.setVariable("gCurrentSequence", 4);
389 workflowActionBBTasks.rollbackExecutionPath(execution);
390 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
391 assertEquals(0, execution.getVariable("gCurrentSequence"));
392 assertEquals(3, ebbs.size());
393 assertEquals("DeleteFabricConfigurationBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
394 assertEquals("DeactivateVfModuleBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
395 assertEquals("DeleteVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
400 public void rollbackExecutionRollbackToCreatedTest() {
401 execution.setVariable("isRollback", false);
402 execution.setVariable("handlingCode", "RollbackToCreated");
403 execution.setVariable("requestAction", EMPTY_STRING);
404 execution.setVariable("resourceName", EMPTY_STRING);
405 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
406 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
407 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
408 flowsToExecute.add(ebb1);
410 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
411 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
412 flowsToExecute.add(ebb2);
414 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
415 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
416 flowsToExecute.add(ebb3);
418 execution.setVariable("flowsToExecute", flowsToExecute);
419 execution.setVariable("gCurrentSequence", 3);
421 workflowActionBBTasks.rollbackExecutionPath(execution);
422 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
423 assertEquals("DeactivateVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
424 assertEquals(0, execution.getVariable("gCurrentSequence"));
425 assertEquals(1, ebbs.size());
429 public void rollbackExecutionRollbackInPlaceSoftwareUpdateTest() {
430 execution.setVariable("isRollback", false);
431 execution.setVariable("handlingCode", "Rollback");
432 execution.setVariable("requestAction", EMPTY_STRING);
433 execution.setVariable("resourceName", EMPTY_STRING);
434 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
435 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("VNFCheckPserversLockedFlagActivity");
436 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
437 flowsToExecute.add(ebb1);
439 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("VNFCheckInMaintFlagActivity");
440 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
441 flowsToExecute.add(ebb2);
443 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("VNFSetInMaintFlagActivity");
444 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
445 flowsToExecute.add(ebb3);
447 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("VNFCheckClosedLoopDisabledFlagActivity");
448 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
449 flowsToExecute.add(ebb4);
451 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("VNFSetClosedLoopDisabledFlagActivity");
452 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
453 flowsToExecute.add(ebb5);
455 BuildingBlock buildingBlock6 = new BuildingBlock().setBpmnFlowName("VNFLockActivity");
456 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock6);
457 flowsToExecute.add(ebb6);
459 BuildingBlock buildingBlock7 = new BuildingBlock().setBpmnFlowName("VNFUpgradePreCheckActivity");
460 ExecuteBuildingBlock ebb7 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock7);
461 flowsToExecute.add(ebb7);
463 BuildingBlock buildingBlock8 = new BuildingBlock().setBpmnFlowName("VNFQuiesceTrafficActivity");
464 ExecuteBuildingBlock ebb8 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock8);
465 flowsToExecute.add(ebb8);
467 BuildingBlock buildingBlock9 = new BuildingBlock().setBpmnFlowName("VNFStopActivity");
468 ExecuteBuildingBlock ebb9 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock9);
469 flowsToExecute.add(ebb9);
471 BuildingBlock buildingBlock10 = new BuildingBlock().setBpmnFlowName("VNFSnapShotActivity");
472 ExecuteBuildingBlock ebb10 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock10);
473 flowsToExecute.add(ebb10);
475 execution.setVariable("flowsToExecute", flowsToExecute);
476 execution.setVariable("gCurrentSequence", 10);
478 workflowActionBBTasks.rollbackExecutionPath(execution);
479 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
480 assertEquals("VNFStartActivity", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
481 assertEquals("VNFResumeTrafficActivity", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
482 assertEquals("VNFUnlockActivity", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
483 assertEquals("VNFUnsetClosedLoopDisabledFlagActivity", ebbs.get(3).getBuildingBlock().getBpmnFlowName());
484 assertEquals("VNFUnsetInMaintFlagActivity", ebbs.get(4).getBuildingBlock().getBpmnFlowName());
485 assertEquals(0, execution.getVariable("gCurrentSequence"));
486 assertEquals(5, ebbs.size());
490 public void rollbackExecutionRollbackConfigModifyTest() {
491 execution.setVariable("isRollback", false);
492 execution.setVariable("handlingCode", "Rollback");
493 execution.setVariable("requestAction", EMPTY_STRING);
494 execution.setVariable("resourceName", EMPTY_STRING);
495 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
496 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("VNFCheckPserversLockedFlagActivity");
497 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
498 flowsToExecute.add(ebb1);
500 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("VNFCheckInMaintFlagActivity");
501 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
502 flowsToExecute.add(ebb2);
504 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("VNFSetInMaintFlagActivity");
505 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
506 flowsToExecute.add(ebb3);
508 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("VNFCheckClosedLoopDisabledFlagActivity");
509 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
510 flowsToExecute.add(ebb4);
512 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("VNFSetClosedLoopDisabledFlagActivity");
513 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
514 flowsToExecute.add(ebb5);
516 BuildingBlock buildingBlock6 = new BuildingBlock().setBpmnFlowName("VNFHealthCheckActivity");
517 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock6);
518 flowsToExecute.add(ebb6);
520 execution.setVariable("flowsToExecute", flowsToExecute);
521 execution.setVariable("gCurrentSequence", 6);
523 workflowActionBBTasks.rollbackExecutionPath(execution);
524 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
525 assertEquals("VNFUnsetClosedLoopDisabledFlagActivity", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
526 assertEquals("VNFUnsetInMaintFlagActivity", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
527 assertEquals(0, execution.getVariable("gCurrentSequence"));
528 assertEquals(2, ebbs.size());
533 public void checkRetryStatusTest() {
534 String reqId = "reqId123";
535 execution.setVariable("mso-request-id", reqId);
536 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
537 doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
538 execution.setVariable("handlingCode", "Retry");
539 execution.setVariable("retryCount", 1);
540 execution.setVariable("gCurrentSequence", 1);
541 InfraActiveRequests req = new InfraActiveRequests();
542 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
543 workflowActionBBTasks.checkRetryStatus(execution);
544 assertEquals(0, execution.getVariable("gCurrentSequence"));
548 public void checkRetryStatusTestExceededMaxRetries() {
549 String reqId = "reqId123";
550 execution.setVariable("mso-request-id", reqId);
551 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
552 doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
553 execution.setVariable("handlingCode", "Retry");
554 execution.setVariable("retryCount", 6);
555 execution.setVariable("gCurrentSequence", 1);
556 InfraActiveRequests req = new InfraActiveRequests();
557 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
559 workflowActionBBTasks.checkRetryStatus(execution);
560 } catch (BpmnError e) {
561 WorkflowException exception = (WorkflowException) execution.getVariable("WorkflowException");
562 assertEquals("Exceeded maximum retries. Ending flow with status Abort", exception.getErrorMessage());
567 public void checkRetryStatusNoRetryTest() {
568 String reqId = "reqId123";
569 execution.setVariable("mso-request-id", reqId);
570 execution.setVariable("retryCount", 3);
571 execution.setVariable("handlingCode", "Success");
572 execution.setVariable("gCurrentSequence", 1);
573 InfraActiveRequests req = new InfraActiveRequests();
574 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
575 workflowActionBBTasks.checkRetryStatus(execution);
576 assertEquals(0, execution.getVariable("retryCount"));
580 public void updateInstanceId() {
581 String reqId = "req123";
582 String instanceId = "123123123";
583 execution.setVariable("mso-request-id", reqId);
584 execution.setVariable("resourceId", instanceId);
585 execution.setVariable("resourceType", WorkflowType.SERVICE);
586 doReturn(reqMock).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
587 doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
588 workflowActionBBTasks.updateInstanceId(execution);
589 Mockito.verify(reqMock, Mockito.times(1)).setServiceInstanceId(instanceId);
593 public void getConfigurationId() {
594 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
595 vnfc.setModelInvariantId("modelInvariantId");
596 vnfc.setVnfcName("testVnfcName");
597 List<Configuration> configurations = new ArrayList<>();
598 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
599 configuration.setConfigurationId("configurationId");
600 configuration.setModelCustomizationId("modelCustimizationId");
601 configuration.setConfigurationName("testConfigurationName");
602 configurations.add(configuration);
603 doReturn(configurations.get(0).getConfigurationId()).when(workflowActionBBTasks).getConfigurationId(vnfc);
604 assertEquals(workflowActionBBTasks.getConfigurationId(vnfc), "configurationId");
608 public void setServiceInstanceNameTest() {
609 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
610 WorkflowType resourceType = WorkflowType.SERVICE;
611 InfraActiveRequests request = new InfraActiveRequests();
612 ServiceInstance service = new ServiceInstance();
613 service.setServiceInstanceName("serviceInstanceName");
614 doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
616 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
617 assertEquals("serviceInstanceName", request.getServiceInstanceName());
621 public void setVnfNameTest() {
622 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
623 WorkflowType resourceType = WorkflowType.VNF;
624 InfraActiveRequests request = new InfraActiveRequests();
625 GenericVnf vnf = new GenericVnf();
626 vnf.setVnfName("vnfName");
627 doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf(resourceId);
629 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
630 assertEquals("vnfName", request.getVnfName());
634 public void setVfModuleNameTest() {
635 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
636 WorkflowType resourceType = WorkflowType.VFMODULE;
637 InfraActiveRequests request = new InfraActiveRequests();
638 request.setVnfId("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e");
639 VfModule vfModule = new VfModule();
640 vfModule.setVfModuleName("vfModuleName");
641 doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e", resourceId);
643 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
644 assertEquals("vfModuleName", request.getVfModuleName());
648 public void setNetworkNameTest() {
649 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
650 WorkflowType resourceType = WorkflowType.NETWORK;
651 InfraActiveRequests request = new InfraActiveRequests();
652 L3Network network = new L3Network();
653 network.setNetworkName("networkName");
654 doReturn(network).when(bbSetupUtils).getAAIL3Network(resourceId);
656 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
657 assertEquals("networkName", request.getNetworkName());
661 public void setConfigurationNameTest() {
662 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
663 WorkflowType resourceType = WorkflowType.CONFIGURATION;
664 InfraActiveRequests request = new InfraActiveRequests();
665 Configuration configuration = new Configuration();
666 configuration.setConfigurationName("configurationName");
667 doReturn(configuration).when(bbSetupUtils).getAAIConfiguration(resourceId);
669 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
670 assertEquals("configurationName", request.getConfigurationName());
674 public void setInstanceGroupNameTest() {
675 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
676 WorkflowType resourceType = WorkflowType.INSTANCE_GROUP;
677 InfraActiveRequests request = new InfraActiveRequests();
678 InstanceGroup instanceGroup = new InstanceGroup();
679 instanceGroup.setInstanceGroupName("instanceGroupName");
680 doReturn(instanceGroup).when(bbSetupUtils).getAAIInstanceGroup(resourceId);
682 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
683 assertEquals("instanceGroupName", request.getInstanceGroupName());
687 public void setVolumeGroupNameTest() {
688 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
689 WorkflowType resourceType = WorkflowType.VOLUMEGROUP;
690 InfraActiveRequests request = new InfraActiveRequests();
691 request.setVnfId("4aa72c90-21eb-4465-8847-997e27af6c3e");
692 VolumeGroup volumeGroup = new VolumeGroup();
693 volumeGroup.setVolumeGroupName("volumeGroupName");
694 Optional<VolumeGroup> returnVolumeGroup = Optional.of(volumeGroup);
696 doReturn(returnVolumeGroup).when(bbSetupUtils).getRelatedVolumeGroupByIdFromVnf(request.getVnfId(), resourceId);
697 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
699 assertEquals("volumeGroupName", request.getVolumeGroupName());
702 private void prepareDelegateExecution() {
703 execution.setVariable("mso-request-id", SAMPLE_MSO_REQUEST_ID);
704 execution.setVariable("requestAction", SAMPLE_REQUEST_ACTION);
705 execution.setVariable("gCurrentSequence", SAMPLE_SEQUENCE);
706 execution.setVariable("homing", false);
707 execution.setVariable("calledHoming", false);