package org.onap.so.bpmn.infrastructure.workflow.tasks;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyObject;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
import org.camunda.bpm.engine.delegate.BpmnError;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
-import org.onap.so.client.namingservice.NamingRequestObject;
+import org.onap.so.db.catalog.beans.BuildingBlockRollback;
import org.onap.so.db.catalog.beans.ConfigurationResource;
import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
import org.onap.so.db.catalog.beans.VnfResourceCustomization;
import org.onap.so.db.request.beans.InfraActiveRequests;
import org.onap.so.serviceinstancebeans.ModelInfo;
+import org.onap.so.serviceinstancebeans.ModelType;
+import org.onap.so.serviceinstancebeans.RelatedInstance;
+import org.onap.so.serviceinstancebeans.RelatedInstanceList;
import org.onap.so.serviceinstancebeans.RequestDetails;
import org.springframework.core.env.Environment;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyObject;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
public class WorkflowActionBBTasksTest extends BaseTaskTest {
@Mock
private DelegateExecution mockExecution;
+ @Before
+ public void initCatalogDBRollbackTable() {
+ when(catalogDbClient.getBuildingBlockRollbackEntries()).thenReturn(getRollbackBuildingBlockList());
+ }
+
@Before
public void before() throws Exception {
execution = new DelegateExecutionFake();
workflowActionBBTasks.selectBB(execution);
boolean success = (boolean) execution.getVariable("completed");
int currentSequence = (int) execution.getVariable("gCurrentSequence");
- assertTrue(success);
+ assertFalse(success);
assertEquals(1, currentSequence);
}
assertEquals(2, ebbs.size());
}
+ @Test
+ public void rollbackExecutionRollbackControllerExecutionBBTest() {
+ execution.setVariable("isRollback", false);
+ execution.setVariable("handlingCode", "Rollback");
+ execution.setVariable("requestAction", EMPTY_STRING);
+ execution.setVariable("resourceName", EMPTY_STRING);
+ List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
+ BuildingBlock buildingBlock1 = new BuildingBlock().setBpmnFlowName("AssignServiceInstanceBB");
+ ExecuteBuildingBlock ebb1 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock1);
+ flowsToExecute.add(ebb1);
+
+ BuildingBlock buildingBlock2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB");
+ ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock2);
+ flowsToExecute.add(ebb2);
+
+ BuildingBlock buildingBlock3 = new BuildingBlock().setBpmnFlowName("AssignVnfBB");
+ ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock3);
+ flowsToExecute.add(ebb3);
+
+ BuildingBlock buildingBlock4 = new BuildingBlock().setBpmnFlowName("AssignVfModuleBB");
+ ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock4);
+ flowsToExecute.add(ebb4);
+
+ BuildingBlock buildingBlock5 = new BuildingBlock().setBpmnFlowName("ControllerExecutionBB");
+ buildingBlock5.setBpmnScope("vnf");
+ buildingBlock5.setBpmnAction("config-assign");
+ ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock5);
+ flowsToExecute.add(ebb5);
+
+ BuildingBlock buildingBlock6 = new BuildingBlock().setBpmnFlowName("CreateVfModuleBB");
+ ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(buildingBlock6);
+ flowsToExecute.add(ebb6);
+
+ execution.setVariable("flowsToExecute", flowsToExecute);
+ execution.setVariable("gCurrentSequence", 5);
+
+ workflowActionBBTasks.rollbackExecutionPath(execution);
+ List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
+ BuildingBlock bb = ebbs.get(0).getBuildingBlock();
+ assertEquals("ControllerExecutionBB", bb.getBpmnFlowName());
+ assertEquals("vnf", bb.getBpmnScope());
+ assertEquals("config-unassign", bb.getBpmnAction());
+ assertEquals(0, execution.getVariable("gCurrentSequence"));
+ assertEquals(5, ebbs.size());
+ }
+
@Test
public void postProcessingExecuteBBActivateVfModuleNotReplaceInstanceTest() throws CloneNotSupportedException {
WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
@Test
public void postProcessingExecuteBBActivateVfModuleReplaceInstanceHasConfigurationTest()
throws CloneNotSupportedException {
-
+ RequestDetails reqDetails = new RequestDetails();
+ RelatedInstanceList[] list = new RelatedInstanceList[2];
+ RelatedInstanceList vnfList = new RelatedInstanceList();
+ RelatedInstanceList serviceList = new RelatedInstanceList();
+ list[0] = vnfList;
+ list[1] = serviceList;
+ RelatedInstance vnfInstance = new RelatedInstance();
+ RelatedInstance serviceInstance = new RelatedInstance();
+ ModelInfo vnfModelInfo = new ModelInfo();
+ vnfModelInfo.setModelType(ModelType.vnf);
+ vnfModelInfo.setModelCustomizationId("1");
+ ModelInfo serviceModelInfo = new ModelInfo();
+ serviceModelInfo.setModelType(ModelType.service);
+ serviceModelInfo.setModelVersionId("1");
+ vnfInstance.setModelInfo(vnfModelInfo);
+ serviceInstance.setModelInfo(serviceModelInfo);
+ reqDetails.setRelatedInstanceList(list);
+ vnfList.setRelatedInstance(vnfInstance);
+ serviceList.setRelatedInstance(serviceInstance);
+ ModelInfo vfModuleInfo = new ModelInfo();
+ vfModuleInfo.setModelCustomizationId("1");
+ reqDetails.setModelInfo(vfModuleInfo);
BuildingBlock bbAddFabric = new BuildingBlock().setBpmnFlowName("AddFabricConfigurationBB");
ExecuteBuildingBlock ebbAddFabric = new ExecuteBuildingBlock().setBuildingBlock(bbAddFabric);
WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
ebbActivateVfModule.setResourceId("1");
ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
ebbAddFabric.setConfigurationResourceKeys(configurationResourceKeys);
+ ebbActivateVfModule.setRequestDetails(reqDetails);
ServiceInstance service = new ServiceInstance();
service.setServiceInstanceName("name");
prepareDelegateExecution();
List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
flowsToExecute.add(ebbActivateVfModule);
- flowsToExecute.add(ebbAddFabric);
ArgumentCaptor<DelegateExecution> executionCaptor = ArgumentCaptor.forClass(DelegateExecution.class);
ArgumentCaptor<ExecuteBuildingBlock> bbCaptor = ArgumentCaptor.forClass(ExecuteBuildingBlock.class);
execution.setVariable("homing", false);
execution.setVariable("calledHoming", false);
}
+
+ private List<BuildingBlockRollback> getRollbackBuildingBlockList() {
+ List<BuildingBlockRollback> rollbackBBList = Collections.unmodifiableList(Arrays.asList(
+ new BuildingBlockRollback(1, "ActivateNetworkBB", null, "DeactivateNetworkBB", null),
+ new BuildingBlockRollback(2, "ActivatePnfBB", null, "DeactivatePnfBB", null),
+ new BuildingBlockRollback(3, "ActivateServiceInstanceBB", null, "DeactivateServiceInstanceBB", null),
+ new BuildingBlockRollback(4, "ActivateVfModuleBB", null, "DeactivateVfModuleBB", null),
+ new BuildingBlockRollback(5, "ActivateVnfBB", null, "DeactivateVnfBB", null),
+ new BuildingBlockRollback(6, "ActivateVolumeGroupBB", null, "DeactivateVolumeGroupBB", null),
+ new BuildingBlockRollback(7, "AssignNetworkBB", null, "UnassignNetworkBB", null),
+ new BuildingBlockRollback(8, "AssignServiceInstanceBB", null, "UnassignServiceInstanceBB", null),
+ new BuildingBlockRollback(9, "AssignVfModuleBB", null, "UnassignVfModuleBB", null),
+ new BuildingBlockRollback(10, "AssignVnfBB", null, "UnassignVnfBB", null),
+ new BuildingBlockRollback(11, "AssignVolumeGroupBB", null, "UnassignVolumeGroupBB", null),
+ new BuildingBlockRollback(12, "ControllerExecutionBB", "config-assign", "ControllerExecutionBB",
+ "config-unassign"),
+ new BuildingBlockRollback(13, "ControllerExecutionBB", "config-deploy", "ControllerExecutionBB",
+ "config-undeploy"),
+ new BuildingBlockRollback(14, "ControllerExecutionBB", "service-config-deploy", "ControllerExecutionBB",
+ "service-config-undeploy"),
+ new BuildingBlockRollback(15, "CreateNetworkBB", null, "DeleteNetworkBB", null),
+ new BuildingBlockRollback(16, "CreateNetworkCollectionBB", null, "DeleteNetworkCollectionBB", null),
+ new BuildingBlockRollback(17, "CreateVfModuleBB", null, "DeleteVfModuleBB", null),
+ new BuildingBlockRollback(18, "CreateVolumeGroupBB", null, "DeleteVolumeGroupBB", null),
+ new BuildingBlockRollback(19, "VNFSetInMaintFlagActivity", null, "VNFUnsetInMaintFlagActivity", null),
+ new BuildingBlockRollback(20, "VNFSetClosedLoopDisabledFlagActivity", null,
+ "VNFUnsetClosedLoopDisabledFlagActivity", null),
+ new BuildingBlockRollback(21, "VNFLockActivity", null, "VNFUnlockActivity", null),
+ new BuildingBlockRollback(22, "VNFStopActivity", null, "VNFStartActivity", null),
+ new BuildingBlockRollback(23, "VNFQuiesceTrafficActivity", null, "VNFResumeTrafficActivity", null),
+ new BuildingBlockRollback(24, "EtsiVnfInstantiateBB", null, "EtsiVnfDeleteBB", null),
+ // AddFabricConfigurationBB this does not seem to be present as a bpmn in Guilin
+ new BuildingBlockRollback(25, "AddFabricConfigurationBB", null, "DeleteFabricConfigurationBB", null)));
+ return rollbackBBList;
+ }
+
}