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;
 
  71     protected WorkflowAction workflowAction;
 
  74     protected WorkflowActionBBFailure workflowActionBBFailure;
 
  78     protected WorkflowActionBBTasks workflowActionBBTasks;
 
  81     InfraActiveRequests reqMock;
 
  83     private DelegateExecution execution;
 
  86     protected Environment environment;
 
  89     private FlowManipulatorListenerRunner flowManipulatorListenerRunner;
 
  92     public ExpectedException thrown = ExpectedException.none();
 
  95     public void before() throws Exception {
 
  96         execution = new DelegateExecutionFake();
 
  97         ServiceInstance servInstance = new ServiceInstance();
 
  98         servInstance.setServiceInstanceId("TEST");
 
  99         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
 
 100         workflowAction.setBbInputSetupUtils(bbSetupUtils);
 
 101         workflowAction.setBbInputSetup(bbInputSetup);
 
 105     public void selectBBTest() {
 
 106         String vnfCustomizationUUID = "1234567";
 
 107         String modelUuid = "1234567";
 
 108         prepareDelegateExecution();
 
 109         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 111         BuildingBlock buildingBlock =
 
 112                 new BuildingBlock().setBpmnFlowName("ConfigAssignVnfBB").setKey(vnfCustomizationUUID);
 
 113         RequestDetails rd = new RequestDetails();
 
 114         ModelInfo mi = new ModelInfo();
 
 115         mi.setModelUuid(modelUuid);
 
 117         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
 
 118         flowsToExecute.add(ebb);
 
 120         List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
 
 121         VnfResourceCustomization vrc = new VnfResourceCustomization();
 
 122         vrc.setSkipPostInstConf(false);
 
 123         vrc.setModelCustomizationUUID(vnfCustomizationUUID);
 
 124         vnfResourceCustomizations.add(vrc);
 
 125         GenericVnf genericVnf = new GenericVnf();
 
 126         genericVnf.setModelCustomizationId(vnfCustomizationUUID);
 
 127         doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
 
 128         doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
 
 129                 vnfResourceCustomizations);
 
 131         execution.setVariable("flowsToExecute", flowsToExecute);
 
 132         workflowActionBBTasks.selectBB(execution);
 
 133         boolean success = (boolean) execution.getVariable("completed");
 
 134         int currentSequence = (int) execution.getVariable("gCurrentSequence");
 
 136         assertEquals(1, currentSequence);
 
 140     public void select2BBTest() {
 
 141         String vnfCustomizationUUID = "1234567";
 
 142         String modelUuid = "1234567";
 
 144         prepareDelegateExecution();
 
 145         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 146         BuildingBlock buildingBlock =
 
 147                 new BuildingBlock().setBpmnFlowName("ConfigDeployVnfBB").setKey(vnfCustomizationUUID);
 
 148         RequestDetails rd = new RequestDetails();
 
 149         ModelInfo mi = new ModelInfo();
 
 150         mi.setModelUuid(modelUuid);
 
 152         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock).setRequestDetails(rd);
 
 153         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock();
 
 155         flowsToExecute.add(ebb);
 
 157         List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
 
 158         VnfResourceCustomization vrc = new VnfResourceCustomization();
 
 160         vrc.setSkipPostInstConf(false);
 
 161         vrc.setModelCustomizationUUID(vnfCustomizationUUID);
 
 162         vnfResourceCustomizations.add(vrc);
 
 163         GenericVnf genericVnf = new GenericVnf();
 
 164         genericVnf.setModelCustomizationId(vnfCustomizationUUID);
 
 166         doReturn(vnfResourceCustomizations).when(catalogDbClient).getVnfResourceCustomizationByModelUuid(modelUuid);
 
 167         doReturn(vrc).when(catalogDbClient).findVnfResourceCustomizationInList(vnfCustomizationUUID,
 
 168                 vnfResourceCustomizations);
 
 170         flowsToExecute.add(ebb2);
 
 171         execution.setVariable("flowsToExecute", flowsToExecute);
 
 172         workflowActionBBTasks.selectBB(execution);
 
 173         boolean success = (boolean) execution.getVariable("completed");
 
 174         int currentSequence = (int) execution.getVariable("gCurrentSequence");
 
 175         assertEquals(false, success);
 
 176         assertEquals(1, currentSequence);
 
 180     public void updateRequestStatusToCompleteTest() {
 
 181         String reqId = "reqId123";
 
 182         execution.setVariable("mso-request-id", reqId);
 
 183         execution.setVariable("requestAction", "createInstance");
 
 184         execution.setVariable("resourceName", "Service");
 
 185         execution.setVariable("aLaCarte", true);
 
 186         InfraActiveRequests req = new InfraActiveRequests();
 
 187         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 
 188         doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
 
 189         workflowActionBBTasks.updateRequestStatusToComplete(execution);
 
 190         assertEquals("ALaCarte-Service-createInstance request was executed correctly.",
 
 191                 execution.getVariable("finalStatusMessage"));
 
 195     public void rollbackExecutionPathTest() {
 
 196         execution.setVariable("handlingCode", "Rollback");
 
 197         execution.setVariable("isRollback", false);
 
 198         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 199         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
 
 200         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 201         flowsToExecute.add(ebb1);
 
 203         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
 
 204         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 205         flowsToExecute.add(ebb2);
 
 207         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
 
 208         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 209         flowsToExecute.add(ebb3);
 
 211         execution.setVariable("flowsToExecute", flowsToExecute);
 
 212         execution.setVariable("gCurrentSequence", 3);
 
 213         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 
 215         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 216         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 217         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateVfModuleBB");
 
 218         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
 
 219         assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
 
 220         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 224     public void rollbackExecutionPathUnfinishedFlowTest() {
 
 225         execution.setVariable("handlingCode", "Rollback");
 
 226         execution.setVariable("isRollback", false);
 
 227         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 228         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
 
 229         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 230         flowsToExecute.add(ebb1);
 
 232         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
 
 233         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 234         flowsToExecute.add(ebb2);
 
 236         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
 
 237         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 238         flowsToExecute.add(ebb3);
 
 240         execution.setVariable("flowsToExecute", flowsToExecute);
 
 241         execution.setVariable("gCurrentSequence", 2);
 
 242         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 
 244         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 245         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 246         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeleteVfModuleBB");
 
 247         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "UnassignVfModuleBB");
 
 248         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 249         assertEquals(0, execution.getVariable("retryCount"));
 
 253     public void rollbackExecutionTest() {
 
 254         execution.setVariable("handlingCode", "Rollback");
 
 255         execution.setVariable("isRollback", false);
 
 256         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 257         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
 
 258         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 259         flowsToExecute.add(ebb1);
 
 261         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateNetworkCollectionBB");
 
 262         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 263         flowsToExecute.add(ebb2);
 
 265         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB");
 
 266         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 267         flowsToExecute.add(ebb3);
 
 269         BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB");
 
 270         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
 
 271         flowsToExecute.add(ebb4);
 
 273         execution.setVariable("flowsToExecute", flowsToExecute);
 
 274         execution.setVariable("gCurrentSequence", 3);
 
 275         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 
 277         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 278         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 279         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "UnassignNetworkBB");
 
 280         assertEquals(ebbs.get(1).getBuildingBlock().getBpmnFlowName(), "DeleteNetworkCollectionBB");
 
 281         assertEquals(ebbs.get(2).getBuildingBlock().getBpmnFlowName(), "UnassignServiceInstanceBB");
 
 282         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 286     public void rollbackExecutionRollbackToAssignedTest() {
 
 287         execution.setVariable("isRollback", false);
 
 288         execution.setVariable("handlingCode", "RollbackToAssigned");
 
 289         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 291         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
 
 292         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 293         flowsToExecute.add(ebb1);
 
 295         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
 
 296         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 297         flowsToExecute.add(ebb2);
 
 299         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
 
 300         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 301         flowsToExecute.add(ebb3);
 
 303         execution.setVariable("flowsToExecute", flowsToExecute);
 
 304         execution.setVariable("gCurrentSequence", 2);
 
 306         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 307         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 308         assertEquals("DeleteVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
 
 309         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 310         assertEquals(1, ebbs.size());
 
 314     public void rollbackExecutionRollbackToAssignedWithFabricTest() {
 
 315         execution.setVariable("isRollback", false);
 
 316         execution.setVariable("handlingCode", "RollbackToAssigned");
 
 317         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 319         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
 
 320         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 321         flowsToExecute.add(ebb1);
 
 323         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
 
 324         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 325         flowsToExecute.add(ebb2);
 
 327         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
 
 328         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 329         flowsToExecute.add(ebb3);
 
 331         BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("AddFabricConfigurationBB");
 
 332         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
 
 333         flowsToExecute.add(ebb4);
 
 335         execution.setVariable("flowsToExecute", flowsToExecute);
 
 336         execution.setVariable("gCurrentSequence", 4);
 
 338         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 339         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 340         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 341         assertEquals(3, ebbs.size());
 
 342         assertEquals("DeleteFabricConfigurationBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
 
 343         assertEquals("DeactivateVfModuleBB", ebbs.get(1).getBuildingBlock().getBpmnFlowName());
 
 344         assertEquals("DeleteVfModuleBB", ebbs.get(2).getBuildingBlock().getBpmnFlowName());
 
 349     public void rollbackExecutionRollbackToCreatedTest() {
 
 350         execution.setVariable("isRollback", false);
 
 351         execution.setVariable("handlingCode", "RollbackToCreated");
 
 352         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
 
 353         BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
 
 354         ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
 
 355         flowsToExecute.add(ebb1);
 
 357         BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
 
 358         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
 
 359         flowsToExecute.add(ebb2);
 
 361         BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB");
 
 362         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
 
 363         flowsToExecute.add(ebb3);
 
 365         execution.setVariable("flowsToExecute", flowsToExecute);
 
 366         execution.setVariable("gCurrentSequence", 3);
 
 368         workflowActionBBTasks.rollbackExecutionPath(execution);
 
 369         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 370         assertEquals("DeactivateVfModuleBB", ebbs.get(0).getBuildingBlock().getBpmnFlowName());
 
 371         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 372         assertEquals(1, ebbs.size());
 
 376     public void checkRetryStatusTest() {
 
 377         String reqId = "reqId123";
 
 378         execution.setVariable("mso-request-id", reqId);
 
 379         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 
 380         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
 
 381         execution.setVariable("handlingCode", "Retry");
 
 382         execution.setVariable("retryCount", 1);
 
 383         execution.setVariable("gCurrentSequence", 1);
 
 384         InfraActiveRequests req = new InfraActiveRequests();
 
 385         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 
 386         workflowActionBBTasks.checkRetryStatus(execution);
 
 387         assertEquals(0, execution.getVariable("gCurrentSequence"));
 
 391     public void checkRetryStatusTestExceededMaxRetries() {
 
 392         String reqId = "reqId123";
 
 393         execution.setVariable("mso-request-id", reqId);
 
 394         doNothing().when(workflowActionBBFailure).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 
 395         doReturn("6").when(environment).getProperty("mso.rainyDay.maxRetries");
 
 396         execution.setVariable("handlingCode", "Retry");
 
 397         execution.setVariable("retryCount", 6);
 
 398         execution.setVariable("gCurrentSequence", 1);
 
 399         InfraActiveRequests req = new InfraActiveRequests();
 
 400         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 
 402             workflowActionBBTasks.checkRetryStatus(execution);
 
 403         } catch (BpmnError e) {
 
 404             WorkflowException exception = (WorkflowException) execution.getVariable("WorkflowException");
 
 405             assertEquals("Exceeded maximum retries. Ending flow with status Abort", exception.getErrorMessage());
 
 410     public void checkRetryStatusNoRetryTest() {
 
 411         String reqId = "reqId123";
 
 412         execution.setVariable("mso-request-id", reqId);
 
 413         execution.setVariable("retryCount", 3);
 
 414         execution.setVariable("handlingCode", "Success");
 
 415         execution.setVariable("gCurrentSequence", 1);
 
 416         InfraActiveRequests req = new InfraActiveRequests();
 
 417         doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 
 418         workflowActionBBTasks.checkRetryStatus(execution);
 
 419         assertEquals(0, execution.getVariable("retryCount"));
 
 423     public void updateInstanceId() {
 
 424         String reqId = "req123";
 
 425         String instanceId = "123123123";
 
 426         execution.setVariable("mso-request-id", reqId);
 
 427         execution.setVariable("resourceId", instanceId);
 
 428         execution.setVariable("resourceType", WorkflowType.SERVICE);
 
 429         doReturn(reqMock).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 
 430         doNothing().when(requestsDbClient).updateInfraActiveRequests(isA(InfraActiveRequests.class));
 
 431         workflowActionBBTasks.updateInstanceId(execution);
 
 432         Mockito.verify(reqMock, Mockito.times(1)).setServiceInstanceId(instanceId);
 
 436     public void getConfigurationId() {
 
 437         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
 438         vnfc.setModelInvariantId("modelInvariantId");
 
 439         vnfc.setVnfcName("testVnfcName");
 
 440         List<Configuration> configurations = new ArrayList<>();
 
 441         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
 442         configuration.setConfigurationId("configurationId");
 
 443         configuration.setModelCustomizationId("modelCustimizationId");
 
 444         configuration.setConfigurationName("testConfigurationName");
 
 445         configurations.add(configuration);
 
 446         doReturn(configurations.get(0).getConfigurationId()).when(workflowActionBBTasks).getConfigurationId(vnfc);
 
 447         assertEquals(workflowActionBBTasks.getConfigurationId(vnfc), "configurationId");
 
 451     public void setServiceInstanceNameTest() {
 
 452         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 453         WorkflowType resourceType = WorkflowType.SERVICE;
 
 454         InfraActiveRequests request = new InfraActiveRequests();
 
 455         ServiceInstance service = new ServiceInstance();
 
 456         service.setServiceInstanceName("serviceInstanceName");
 
 457         doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById(resourceId);
 
 459         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 460         assertEquals("serviceInstanceName", request.getServiceInstanceName());
 
 464     public void setVnfNameTest() {
 
 465         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 466         WorkflowType resourceType = WorkflowType.VNF;
 
 467         InfraActiveRequests request = new InfraActiveRequests();
 
 468         GenericVnf vnf = new GenericVnf();
 
 469         vnf.setVnfName("vnfName");
 
 470         doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf(resourceId);
 
 472         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 473         assertEquals("vnfName", request.getVnfName());
 
 477     public void setVfModuleNameTest() {
 
 478         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 479         WorkflowType resourceType = WorkflowType.VFMODULE;
 
 480         InfraActiveRequests request = new InfraActiveRequests();
 
 481         request.setVnfId("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e");
 
 482         VfModule vfModule = new VfModule();
 
 483         vfModule.setVfModuleName("vfModuleName");
 
 484         doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("ae5cc3e8-c13c-4d88-aaf6-694ab4977b0e", resourceId);
 
 486         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 487         assertEquals("vfModuleName", request.getVfModuleName());
 
 491     public void setNetworkNameTest() {
 
 492         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 493         WorkflowType resourceType = WorkflowType.NETWORK;
 
 494         InfraActiveRequests request = new InfraActiveRequests();
 
 495         L3Network network = new L3Network();
 
 496         network.setNetworkName("networkName");
 
 497         doReturn(network).when(bbSetupUtils).getAAIL3Network(resourceId);
 
 499         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 500         assertEquals("networkName", request.getNetworkName());
 
 504     public void setConfigurationNameTest() {
 
 505         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 506         WorkflowType resourceType = WorkflowType.CONFIGURATION;
 
 507         InfraActiveRequests request = new InfraActiveRequests();
 
 508         Configuration configuration = new Configuration();
 
 509         configuration.setConfigurationName("configurationName");
 
 510         doReturn(configuration).when(bbSetupUtils).getAAIConfiguration(resourceId);
 
 512         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 513         assertEquals("configurationName", request.getConfigurationName());
 
 517     public void setInstanceGroupNameTest() {
 
 518         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 519         WorkflowType resourceType = WorkflowType.INSTANCE_GROUP;
 
 520         InfraActiveRequests request = new InfraActiveRequests();
 
 521         InstanceGroup instanceGroup = new InstanceGroup();
 
 522         instanceGroup.setInstanceGroupName("instanceGroupName");
 
 523         doReturn(instanceGroup).when(bbSetupUtils).getAAIInstanceGroup(resourceId);
 
 525         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 526         assertEquals("instanceGroupName", request.getInstanceGroupName());
 
 530     public void setVolumeGroupNameTest() {
 
 531         String resourceId = "40bc4ebd-11df-4610-8055-059f7441ec1c";
 
 532         WorkflowType resourceType = WorkflowType.VOLUMEGROUP;
 
 533         InfraActiveRequests request = new InfraActiveRequests();
 
 534         request.setVnfId("4aa72c90-21eb-4465-8847-997e27af6c3e");
 
 535         VolumeGroup volumeGroup = new VolumeGroup();
 
 536         volumeGroup.setVolumeGroupName("volumeGroupName");
 
 537         Optional<VolumeGroup> returnVolumeGroup = Optional.of(volumeGroup);
 
 539         doReturn(returnVolumeGroup).when(bbSetupUtils).getRelatedVolumeGroupByIdFromVnf(request.getVnfId(), resourceId);
 
 540         workflowActionBBTasks.setInstanceName(resourceId, resourceType, request);
 
 542         assertEquals("volumeGroupName", request.getVolumeGroupName());
 
 545     private void prepareDelegateExecution() {
 
 546         execution.setVariable("mso-request-id", SAMPLE_MSO_REQUEST_ID);
 
 547         execution.setVariable("requestAction", SAMPLE_REQUEST_ACTION);
 
 548         execution.setVariable("gCurrentSequence", SAMPLE_SEQUENCE);
 
 549         execution.setVariable("homing", false);
 
 550         execution.setVariable("calledHoming", false);