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.assertTrue;
58 import static org.mockito.ArgumentMatchers.anyObject;
59 import static org.mockito.ArgumentMatchers.anyString;
60 import static org.mockito.ArgumentMatchers.isA;
61 import static org.mockito.Mockito.doNothing;
62 import static org.mockito.Mockito.doReturn;
63 import static org.mockito.Mockito.when;
65 public class WorkflowActionBBTasksTest extends BaseTaskTest {
67 private static final String SAMPLE_MSO_REQUEST_ID = "00f704ca-c5e5-4f95-a72c-6889db7b0688";
68 private static final String SAMPLE_REQUEST_ACTION = "Delete-Network-Collection";
69 private static final int SAMPLE_SEQUENCE = 0;
70 private static final String EMPTY_STRING = "";
72 protected WorkflowAction workflowAction;
75 protected WorkflowActionBBFailure workflowActionBBFailure;
79 protected WorkflowActionBBTasks workflowActionBBTasks;
82 InfraActiveRequests reqMock;
84 private DelegateExecution execution;
87 protected Environment environment;
90 private FlowManipulatorListenerRunner flowManipulatorListenerRunner;
93 public ExpectedException thrown = ExpectedException.none();
96 public void before() throws Exception {
97 execution = new DelegateExecutionFake();
98 ServiceInstance servInstance = new ServiceInstance();
99 servInstance.setServiceInstanceId("TEST");
100 when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
101 workflowAction.setBbInputSetupUtils(bbSetupUtils);
102 workflowAction.setBbInputSetup(bbInputSetup);
106 public void selectBBTest() {
107 String vnfCustomizationUUID = "1234567";
108 String modelUuid = "1234567";
109 prepareDelegateExecution();
110 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
112 BuildingBlock buildingBlock =
113 new BuildingBlock().setBpmnFlowName("ConfigAssignVnfBB").setKey(vnfCustomizationUUID);
114 RequestDetails rd = new RequestDetails();
115 ModelInfo mi = new ModelInfo();
116 mi.setModelUuid(modelUuid);
118 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
119 flowsToExecute.add(ebb);
121 List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
122 VnfResourceCustomization vrc = new VnfResourceCustomization();
123 vrc.setSkipPostInstConf(false);
124 vrc.setModelCustomizationUUID(vnfCustomizationUUID);
125 vnfResourceCustomizations.add(vrc);
126 GenericVnf genericVnf = new GenericVnf();
127 genericVnf.setModelCustomizationId(vnfCustomizationUUID);
128 doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
129 doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
130 vnfResourceCustomizations);
132 execution.setVariable("flowsToExecute", flowsToExecute);
133 workflowActionBBTasks.selectBB(execution);
134 boolean success = (boolean) execution.getVariable("completed");
135 int currentSequence = (int) execution.getVariable("gCurrentSequence");
137 assertEquals(1, currentSequence);
141 public void select2BBTest() {
142 String vnfCustomizationUUID = "1234567";
143 String modelUuid = "1234567";
145 prepareDelegateExecution();
146 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
147 BuildingBlock buildingBlock =
148 new BuildingBlock().setBpmnFlowName("ConfigDeployVnfBB").setKey(vnfCustomizationUUID);
149 RequestDetails rd = new RequestDetails();
150 ModelInfo mi = new ModelInfo();
151 mi.setModelUuid(modelUuid);
153 ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
154 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
156 flowsToExecute.add(ebb);
158 List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
159 VnfResourceCustomization vrc = new VnfResourceCustomization();
161 vrc.setSkipPostInstConf(false);
162 vrc.setModelCustomizationUUID(vnfCustomizationUUID);
163 vnfResourceCustomizations.add(vrc);
164 GenericVnf genericVnf = new GenericVnf();
165 genericVnf.setModelCustomizationId(vnfCustomizationUUID);
167 doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
168 doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
169 vnfResourceCustomizations);
171 flowsToExecute.add(ebb2);
172 execution.setVariable("flowsToExecute", flowsToExecute);
173 workflowActionBBTasks.selectBB(execution);
174 boolean success = (boolean) execution.getVariable("completed");
175 int currentSequence = (int) execution.getVariable("gCurrentSequence");
176 assertEquals(false, success);
177 assertEquals(1, currentSequence);
181 public void updateRequestStatusToCompleteTest() {
182 String reqId = "reqId123";
183 execution.setVariable("mso-request-id", reqId);
184 execution.setVariable("requestAction", "createInstance");
185 execution.setVariable("resourceName", "Service");
186 execution.setVariable("aLaCarte", true);
187 InfraActiveRequests req = new InfraActiveRequests();
188 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
189 doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
190 workflowActionBBTasks.updateRequestStatusToComplete(execution);
191 assertEquals("ALaCarte-Service-createInstance request was executed correctly.",
192 execution.getVariable("finalStatusMessage"));
196 public void rollbackExecutionPathTest() {
197 execution.setVariable("handlingCode", "Rollback");
198 execution.setVariable("isRollback", false);
199 execution.setVariable("requestAction", EMPTY_STRING);
200 execution.setVariable("resourceName", EMPTY_STRING);
201 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
202 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
203 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
204 flowsToExecute.add(ebb1);
206 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
207 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
208 flowsToExecute.add(ebb2);
210 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
211 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
212 flowsToExecute.add(ebb3);
214 execution.setVariable("flowsToExecute", flowsToExecute);
215 execution.setVariable("gCurrentSequence", 3);
216 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
218 workflowActionBBTasks.rollbackExecutionPath(execution);
219 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
220 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateVfModuleBB");
221 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
222 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
223 assertEquals(0, execution.getVariable("gCurrentSequence"));
227 public void rollbackExecutionPathUnfinishedFlowTest() {
228 execution.setVariable("handlingCode", "Rollback");
229 execution.setVariable("isRollback", false);
230 execution.setVariable("requestAction", EMPTY_STRING);
231 execution.setVariable("resourceName", EMPTY_STRING);
232 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
233 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
234 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
235 flowsToExecute.add(ebb1);
237 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
238 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
239 flowsToExecute.add(ebb2);
241 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
242 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
243 flowsToExecute.add(ebb3);
245 execution.setVariable("flowsToExecute", flowsToExecute);
246 execution.setVariable("gCurrentSequence", 2);
247 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
249 workflowActionBBTasks.rollbackExecutionPath(execution);
250 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
251 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
252 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
253 assertEquals(0, execution.getVariable("gCurrentSequence"));
254 assertEquals(0, execution.getVariable("retryCount"));
258 public void rollbackExecutionTest() {
259 execution.setVariable("handlingCode", "Rollback");
260 execution.setVariable("isRollback", false);
261 execution.setVariable("requestAction", EMPTY_STRING);
262 execution.setVariable("resourceName", EMPTY_STRING);
263 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
264 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
265 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
266 flowsToExecute.add(ebb1);
268 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateNetworkCollectionBB");
269 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
270 flowsToExecute.add(ebb2);
272 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB");
273 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
274 flowsToExecute.add(ebb3);
276 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB");
277 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
278 flowsToExecute.add(ebb4);
280 execution.setVariable("flowsToExecute", flowsToExecute);
281 execution.setVariable("gCurrentSequence", 3);
282 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
284 workflowActionBBTasks.rollbackExecutionPath(execution);
285 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
286 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "UnassignNetworkBB");
287 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteNetworkCollectionBB");
288 assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignServiceInstanceBB");
289 assertEquals(0, execution.getVariable("gCurrentSequence"));
293 public void rollbackExecutionRollbackToAssignedTest() {
294 execution.setVariable("isRollback", false);
295 execution.setVariable("handlingCode", "RollbackToAssigned");
296 execution.setVariable("requestAction", EMPTY_STRING);
297 execution.setVariable("resourceName", EMPTY_STRING);
298 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
300 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
301 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
302 flowsToExecute.add(ebb1);
304 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
305 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
306 flowsToExecute.add(ebb2);
308 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
309 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
310 flowsToExecute.add(ebb3);
312 execution.setVariable("flowsToExecute", flowsToExecute);
313 execution.setVariable("gCurrentSequence", 2);
315 workflowActionBBTasks.rollbackExecutionPath(execution);
316 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
317 assertEquals("DeleteVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
318 assertEquals(0, execution.getVariable("gCurrentSequence"));
319 assertEquals(1, ebbs.size());
323 public void rollbackExecutionPathChangeBBForReplaceVFModuleTest() {
324 execution.setVariable("handlingCode", "Rollback");
325 execution.setVariable("isRollback", false);
326 execution.setVariable("requestAction", "replaceInstance");
327 execution.setVariable("resourceName", "VfModule");
328 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
329 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
330 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
331 flowsToExecute.add(ebb1);
333 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
334 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
335 flowsToExecute.add(ebb2);
337 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
338 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
339 flowsToExecute.add(ebb3);
342 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("ChangeModelVnfBB");
343 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
344 flowsToExecute.add(ebb4);
346 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("ChangeModelServiceInstanceBB");
347 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
348 flowsToExecute.add(ebb5);
350 execution.setVariable("flowsToExecute", flowsToExecute);
351 execution.setVariable("gCurrentSequence", 5);
352 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
354 workflowActionBBTasks.rollbackExecutionPath(execution);
355 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
356 assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "ChangeModelVnfBB");
357 assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "ChangeModelServiceInstanceBB");
358 assertEquals(0, execution.getVariable("gCurrentSequence"));
362 public void rollbackExecutionRollbackToAssignedWithFabricTest() {
363 execution.setVariable("isRollback", false);
364 execution.setVariable("handlingCode", "RollbackToAssigned");
365 execution.setVariable("requestAction", EMPTY_STRING);
366 execution.setVariable("resourceName", EMPTY_STRING);
367 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
369 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
370 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
371 flowsToExecute.add(ebb1);
373 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
374 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
375 flowsToExecute.add(ebb2);
377 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
378 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
379 flowsToExecute.add(ebb3);
381 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("AddFabricConfigurationBB");
382 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
383 flowsToExecute.add(ebb4);
385 execution.setVariable("flowsToExecute", flowsToExecute);
386 execution.setVariable("gCurrentSequence", 4);
388 workflowActionBBTasks.rollbackExecutionPath(execution);
389 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
390 assertEquals(0, execution.getVariable("gCurrentSequence"));
391 assertEquals(3, ebbs.size());
392 assertEquals("DeleteFabricConfigurationBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
393 assertEquals("DeactivateVfModuleBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
394 assertEquals("DeleteVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
399 public void rollbackExecutionRollbackToCreatedTest() {
400 execution.setVariable("isRollback", false);
401 execution.setVariable("handlingCode", "RollbackToCreated");
402 execution.setVariable("requestAction", EMPTY_STRING);
403 execution.setVariable("resourceName", EMPTY_STRING);
404 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
405 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
406 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
407 flowsToExecute.add(ebb1);
409 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
410 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
411 flowsToExecute.add(ebb2);
413 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
414 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
415 flowsToExecute.add(ebb3);
417 execution.setVariable("flowsToExecute", flowsToExecute);
418 execution.setVariable("gCurrentSequence", 3);
420 workflowActionBBTasks.rollbackExecutionPath(execution);
421 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
422 assertEquals("DeactivateVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
423 assertEquals(0, execution.getVariable("gCurrentSequence"));
424 assertEquals(1, ebbs.size());
428 public void rollbackExecutionRollbackInPlaceSoftwareUpdateTest() {
429 execution.setVariable("isRollback", false);
430 execution.setVariable("handlingCode", "Rollback");
431 execution.setVariable("requestAction", EMPTY_STRING);
432 execution.setVariable("resourceName", EMPTY_STRING);
433 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
434 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("VNFCheckPserversLockedFlagActivity");
435 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
436 flowsToExecute.add(ebb1);
438 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("VNFCheckInMaintFlagActivity");
439 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
440 flowsToExecute.add(ebb2);
442 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("VNFSetInMaintFlagActivity");
443 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
444 flowsToExecute.add(ebb3);
446 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("VNFCheckClosedLoopDisabledFlagActivity");
447 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
448 flowsToExecute.add(ebb4);
450 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("VNFSetClosedLoopDisabledFlagActivity");
451 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
452 flowsToExecute.add(ebb5);
454 BuildingBlock buildingBlock6 = new BuildingBlock().setBpmnFlowName("VNFLockActivity");
455 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock6);
456 flowsToExecute.add(ebb6);
458 BuildingBlock buildingBlock7 = new BuildingBlock().setBpmnFlowName("VNFUpgradePreCheckActivity");
459 ExecuteBuildingBlock ebb7 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock7);
460 flowsToExecute.add(ebb7);
462 BuildingBlock buildingBlock8 = new BuildingBlock().setBpmnFlowName("VNFQuiesceTrafficActivity");
463 ExecuteBuildingBlock ebb8 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock8);
464 flowsToExecute.add(ebb8);
466 BuildingBlock buildingBlock9 = new BuildingBlock().setBpmnFlowName("VNFStopActivity");
467 ExecuteBuildingBlock ebb9 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock9);
468 flowsToExecute.add(ebb9);
470 BuildingBlock buildingBlock10 = new BuildingBlock().setBpmnFlowName("VNFSnapShotActivity");
471 ExecuteBuildingBlock ebb10 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock10);
472 flowsToExecute.add(ebb10);
474 execution.setVariable("flowsToExecute", flowsToExecute);
475 execution.setVariable("gCurrentSequence", 10);
477 workflowActionBBTasks.rollbackExecutionPath(execution);
478 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
479 assertEquals("VNFStartActivity", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
480 assertEquals("VNFResumeTrafficActivity", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
481 assertEquals("VNFUnlockActivity", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
482 assertEquals("VNFUnsetClosedLoopDisabledFlagActivity", ebbs.get(3).getBuildingBlock().getBpmnFlowName());
483 assertEquals("VNFUnsetInMaintFlagActivity", ebbs.get(4).getBuildingBlock().getBpmnFlowName());
484 assertEquals(0, execution.getVariable("gCurrentSequence"));
485 assertEquals(5, ebbs.size());
489 public void rollbackExecutionRollbackConfigModifyTest() {
490 execution.setVariable("isRollback", false);
491 execution.setVariable("handlingCode", "Rollback");
492 execution.setVariable("requestAction", EMPTY_STRING);
493 execution.setVariable("resourceName", EMPTY_STRING);
494 List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
495 BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("VNFCheckPserversLockedFlagActivity");
496 ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
497 flowsToExecute.add(ebb1);
499 BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("VNFCheckInMaintFlagActivity");
500 ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
501 flowsToExecute.add(ebb2);
503 BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("VNFSetInMaintFlagActivity");
504 ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
505 flowsToExecute.add(ebb3);
507 BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("VNFCheckClosedLoopDisabledFlagActivity");
508 ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
509 flowsToExecute.add(ebb4);
511 BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("VNFSetClosedLoopDisabledFlagActivity");
512 ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
513 flowsToExecute.add(ebb5);
515 BuildingBlock buildingBlock6 = new BuildingBlock().setBpmnFlowName("VNFHealthCheckActivity");
516 ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock6);
517 flowsToExecute.add(ebb6);
519 execution.setVariable("flowsToExecute", flowsToExecute);
520 execution.setVariable("gCurrentSequence", 6);
522 workflowActionBBTasks.rollbackExecutionPath(execution);
523 List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
524 assertEquals("VNFUnsetClosedLoopDisabledFlagActivity", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
525 assertEquals("VNFUnsetInMaintFlagActivity", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
526 assertEquals(0, execution.getVariable("gCurrentSequence"));
527 assertEquals(2, ebbs.size());
532 public void checkRetryStatusTest() {
533 String reqId = "reqId123";
534 execution.setVariable("mso-request-id", reqId);
535 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
536 doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
537 execution.setVariable("handlingCode", "Retry");
538 execution.setVariable("retryCount", 1);
539 execution.setVariable("gCurrentSequence", 1);
540 InfraActiveRequests req = new InfraActiveRequests();
541 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
542 workflowActionBBTasks.checkRetryStatus(execution);
543 assertEquals(0, execution.getVariable("gCurrentSequence"));
547 public void checkRetryStatusTestExceededMaxRetries() {
548 String reqId = "reqId123";
549 execution.setVariable("mso-request-id", reqId);
550 doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
551 doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
552 execution.setVariable("handlingCode", "Retry");
553 execution.setVariable("retryCount", 6);
554 execution.setVariable("gCurrentSequence", 1);
555 InfraActiveRequests req = new InfraActiveRequests();
556 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
558 workflowActionBBTasks.checkRetryStatus(execution);
559 } catch (BpmnError e) {
560 WorkflowException exception = (WorkflowException) execution.getVariable("WorkflowException");
561 assertEquals("Exceeded maximum retries. Ending flow with status Abort", exception.getErrorMessage());
566 public void checkRetryStatusNoRetryTest() {
567 String reqId = "reqId123";
568 execution.setVariable("mso-request-id", reqId);
569 execution.setVariable("retryCount", 3);
570 execution.setVariable("handlingCode", "Success");
571 execution.setVariable("gCurrentSequence", 1);
572 InfraActiveRequests req = new InfraActiveRequests();
573 doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
574 workflowActionBBTasks.checkRetryStatus(execution);
575 assertEquals(0, execution.getVariable("retryCount"));
579 public void updateInstanceId() {
580 String reqId = "req123";
581 String instanceId = "123123123";
582 execution.setVariable("mso-request-id", reqId);
583 execution.setVariable("resourceId", instanceId);
584 execution.setVariable("resourceType", WorkflowType.SERVICE);
585 doReturn(reqMock).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
586 doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
587 workflowActionBBTasks.updateInstanceId(execution);
588 Mockito.verify(reqMock, Mockito.times(1)).setServiceInstanceId(instanceId);
592 public void getConfigurationId() {
593 org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
594 vnfc.setModelInvariantId("modelInvariantId");
595 vnfc.setVnfcName("testVnfcName");
596 List<Configuration> configurations = new ArrayList<>();
597 org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
598 configuration.setConfigurationId("configurationId");
599 configuration.setModelCustomizationId("modelCustimizationId");
600 configuration.setConfigurationName("testConfigurationName");
601 configurations.add(configuration);
602 doReturn(configurations.get(0).getConfigurationId()).when(workflowActionBBTasks).getConfigurationId(vnfc);
603 assertEquals(workflowActionBBTasks.getConfigurationId(vnfc), "configurationId");
607 public void setServiceInstanceNameTest() {
608 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
609 WorkflowType resourceType = WorkflowType.SERVICE;
610 InfraActiveRequests request = new InfraActiveRequests();
611 ServiceInstance service = new ServiceInstance();
612 service.setServiceInstanceName("serviceInstanceName");
613 doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
615 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
616 assertEquals("serviceInstanceName", request.getServiceInstanceName());
620 public void setVnfNameTest() {
621 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
622 WorkflowType resourceType = WorkflowType.VNF;
623 InfraActiveRequests request = new InfraActiveRequests();
624 GenericVnf vnf = new GenericVnf();
625 vnf.setVnfName("vnfName");
626 doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf(resourceId);
628 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
629 assertEquals("vnfName", request.getVnfName());
633 public void setVfModuleNameTest() {
634 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
635 WorkflowType resourceType = WorkflowType.VFMODULE;
636 InfraActiveRequests request = new InfraActiveRequests();
637 request.setVnfId("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e");
638 VfModule vfModule = new VfModule();
639 vfModule.setVfModuleName("vfModuleName");
640 doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e", resourceId);
642 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
643 assertEquals("vfModuleName", request.getVfModuleName());
647 public void setNetworkNameTest() {
648 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
649 WorkflowType resourceType = WorkflowType.NETWORK;
650 InfraActiveRequests request = new InfraActiveRequests();
651 L3Network network = new L3Network();
652 network.setNetworkName("networkName");
653 doReturn(network).when(bbSetupUtils).getAAIL3Network(resourceId);
655 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
656 assertEquals("networkName", request.getNetworkName());
660 public void setConfigurationNameTest() {
661 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
662 WorkflowType resourceType = WorkflowType.CONFIGURATION;
663 InfraActiveRequests request = new InfraActiveRequests();
664 Configuration configuration = new Configuration();
665 configuration.setConfigurationName("configurationName");
666 doReturn(configuration).when(bbSetupUtils).getAAIConfiguration(resourceId);
668 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
669 assertEquals("configurationName", request.getConfigurationName());
673 public void setInstanceGroupNameTest() {
674 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
675 WorkflowType resourceType = WorkflowType.INSTANCE_GROUP;
676 InfraActiveRequests request = new InfraActiveRequests();
677 InstanceGroup instanceGroup = new InstanceGroup();
678 instanceGroup.setInstanceGroupName("instanceGroupName");
679 doReturn(instanceGroup).when(bbSetupUtils).getAAIInstanceGroup(resourceId);
681 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
682 assertEquals("instanceGroupName", request.getInstanceGroupName());
686 public void setVolumeGroupNameTest() {
687 String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
688 WorkflowType resourceType = WorkflowType.VOLUMEGROUP;
689 InfraActiveRequests request = new InfraActiveRequests();
690 request.setVnfId("4aa72c90-21eb-4465-8847-997e27af6c3e");
691 VolumeGroup volumeGroup = new VolumeGroup();
692 volumeGroup.setVolumeGroupName("volumeGroupName");
693 Optional<VolumeGroup> returnVolumeGroup = Optional.of(volumeGroup);
695 doReturn(returnVolumeGroup).when(bbSetupUtils).getRelatedVolumeGroupByIdFromVnf(request.getVnfId(), resourceId);
696 workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
698 assertEquals("volumeGroupName", request.getVolumeGroupName());
701 private void prepareDelegateExecution() {
702 execution.setVariable("mso-request-id", SAMPLE_MSO_REQUEST_ID);
703 execution.setVariable("requestAction", SAMPLE_REQUEST_ACTION);
704 execution.setVariable("gCurrentSequence", SAMPLE_SEQUENCE);
705 execution.setVariable("homing", false);
706 execution.setVariable("calledHoming", false);