X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=bpmn%2FMSOCommonBPMN%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fso%2Fbpmn%2Fservicedecomposition%2Ftasks%2FExecuteBuildlingBlockRainyDayTest.java;h=80373eb760a6a712a57bfe5ca37e6cfd7f308365;hb=5184b28f6ec1170ae035ddd749d8bdf5b2064904;hp=0c2a95f5d15a16b5af4e6a092404a33e86c705f1;hpb=b220d97a94bb7ce49ec9adb1b4c96cf6ebae873c;p=so.git diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java index 0c2a95f5d1..80373eb760 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java @@ -20,136 +20,256 @@ package org.onap.so.bpmn.servicedecomposition.tasks; -import static org.hamcrest.CoreMatchers.any; import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.isA; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - import org.camunda.bpm.engine.delegate.BpmnError; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.junit.Before; import org.junit.Test; +import org.onap.so.BaseTest; import org.onap.so.bpmn.core.WorkflowException; import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer; import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock; import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock; -import org.onap.so.BaseTest; +import org.onap.so.constants.Status; import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus; import org.springframework.beans.factory.annotation.Autowired; public class ExecuteBuildlingBlockRainyDayTest extends BaseTest { - @Autowired - private ExecuteBuildingBlockRainyDay executeBuildingBlockRainyDay; - - private ServiceInstance serviceInstance; - private Customer customer; //will build service sub - private GenericVnf vnf; - private BuildingBlock buildingBlock; - private ExecuteBuildingBlock executeBuildingBlock; - private static final String ASTERISK = "*"; - - @Before - public void before() { - serviceInstance = setServiceInstance(); - customer = setCustomer(); - vnf = setGenericVnf(); - - buildingBlock = new BuildingBlock(); - buildingBlock.setBpmnFlowName("AssignServiceInstanceBB"); - - executeBuildingBlock = new ExecuteBuildingBlock(); - executeBuildingBlock.setBuildingBlock(buildingBlock); - - delegateExecution.setVariable("gBBInput", gBBInput); - delegateExecution.setVariable("WorkflowException", new WorkflowException("", 7000, "")); - delegateExecution.setVariable("buildingBlock", executeBuildingBlock); - delegateExecution.setVariable("lookupKeyMap", lookupKeyMap); - } - - @Test - public void setRetryTimerTest() throws Exception{ - delegateExecution.setVariable("retryCount", 2); - executeBuildingBlockRainyDay.setRetryTimer(delegateExecution); - assertEquals("PT25M",delegateExecution.getVariable("RetryDuration")); - } - - @Test - public void setRetryTimerExceptionTest() { - expectedException.expect(BpmnError.class); - DelegateExecution execution = mock(DelegateExecution.class); - when(execution.getVariable(eq("retryCount"))).thenThrow(Exception.class); - executeBuildingBlockRainyDay.setRetryTimer(execution); - } - - @Test - public void queryRainyDayTableExists() throws Exception{ - customer.getServiceSubscription().getServiceInstances().add(serviceInstance); - serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); - vnf.setVnfType("vnft1"); - - RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); - rainyDayHandlerStatus.setErrorCode("7000"); - rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); - rainyDayHandlerStatus.setServiceType("st1"); - rainyDayHandlerStatus.setVnfType("vnft1"); - rainyDayHandlerStatus.setPolicy("Rollback"); - rainyDayHandlerStatus.setWorkStep(ASTERISK); - - doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", "*"); - - executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution); - - assertEquals("Rollback", delegateExecution.getVariable("handlingCode")); - } - - @Test - public void queryRainyDayTableDefault() throws Exception{ - customer.getServiceSubscription().getServiceInstances().add(serviceInstance); - serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); - vnf.setVnfType("vnft1"); - - RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); - rainyDayHandlerStatus.setErrorCode(ASTERISK); - rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); - rainyDayHandlerStatus.setServiceType(ASTERISK); - rainyDayHandlerStatus.setVnfType(ASTERISK); - rainyDayHandlerStatus.setPolicy("Rollback"); - rainyDayHandlerStatus.setWorkStep(ASTERISK); - - doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", "st1", "vnft1", "7000", ASTERISK); - doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep("AssignServiceInstanceBB", ASTERISK, ASTERISK, ASTERISK, ASTERISK); - - executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution); - - assertEquals("Rollback", delegateExecution.getVariable("handlingCode")); - } - - @Test - public void queryRainyDayTableDoesNotExist() throws Exception{ - customer.getServiceSubscription().getServiceInstances().add(serviceInstance); - serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); - vnf.setVnfType("vnft1"); - - doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class)); - - executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution); - - assertEquals("Abort", delegateExecution.getVariable("handlingCode")); - } - - @Test - public void queryRainyDayTableExceptionTest() { - doThrow(Exception.class).when(MOCK_catalogDbClient).getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class)); - - executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution); - - assertEquals("Abort", delegateExecution.getVariable("handlingCode")); - } + @Autowired + private ExecuteBuildingBlockRainyDay executeBuildingBlockRainyDay; + + private ServiceInstance serviceInstance; + private Customer customer; // will build service sub + private GenericVnf vnf; + private BuildingBlock buildingBlock; + private ExecuteBuildingBlock executeBuildingBlock; + private static final String ASTERISK = "*"; + + @Before + public void before() { + serviceInstance = setServiceInstance(); + customer = setCustomer(); + vnf = setGenericVnf(); + + buildingBlock = new BuildingBlock(); + buildingBlock.setBpmnFlowName("AssignServiceInstanceBB"); + + executeBuildingBlock = new ExecuteBuildingBlock(); + executeBuildingBlock.setBuildingBlock(buildingBlock); + + delegateExecution.setVariable("gBBInput", gBBInput); + delegateExecution.setVariable("WorkflowException", new WorkflowException("", 7000, "")); + delegateExecution.setVariable("buildingBlock", executeBuildingBlock); + delegateExecution.setVariable("lookupKeyMap", lookupKeyMap); + + delegateExecution.setVariable("WorkflowException", new WorkflowException("processKey", 7000, "errorMessage")); + } + + @Test + public void setRetryTimerTest() throws Exception { + delegateExecution.setVariable("retryCount", 2); + executeBuildingBlockRainyDay.setRetryTimer(delegateExecution); + assertEquals("PT40S", delegateExecution.getVariable("RetryDuration")); + } + + @Test + public void setRetryTimerExceptionTest() { + expectedException.expect(BpmnError.class); + DelegateExecution execution = mock(DelegateExecution.class); + when(execution.getVariable(eq("retryCount"))).thenThrow(BpmnError.class); + executeBuildingBlockRainyDay.setRetryTimer(execution); + } + + @Test + public void queryRainyDayTableExists() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", "7000"); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode("7000"); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType("st1"); + rainyDayHandlerStatus.setVnfType("vnft1"); + rainyDayHandlerStatus.setPolicy("Rollback"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", "7000", "*", "errorMessage"); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + assertEquals("Rollback", delegateExecution.getVariable("handlingCode")); + } + + @Test + public void queryRainyDayTableDefault() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", ASTERISK); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode(ASTERISK); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType(ASTERISK); + rainyDayHandlerStatus.setVnfType(ASTERISK); + rainyDayHandlerStatus.setPolicy("Rollback"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", ASTERISK, ASTERISK, "errorMessage"); + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + assertEquals("Rollback", delegateExecution.getVariable("handlingCode")); + assertEquals(5, delegateExecution.getVariable("maxRetries")); + } + + @Test + public void queryRainyDayTableDoesNotExist() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatus(isA(String.class), isA(String.class), + isA(String.class), isA(String.class), isA(String.class), isA(String.class)); + delegateExecution.setVariable("suppressRollback", false); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + + assertEquals("Abort", delegateExecution.getVariable("handlingCode")); + } + + @Test + public void queryRainyDayTableExceptionTest() { + doThrow(RuntimeException.class).when(MOCK_catalogDbClient).getRainyDayHandlerStatus(isA(String.class), + isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class)); + delegateExecution.setVariable("aLaCarte", true); + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + delegateExecution.setVariable("suppressRollback", false); + + assertEquals("Abort", delegateExecution.getVariable("handlingCode")); + } + + @Test + public void queryRainyDayTableSecondaryPolicyExists() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", "7000"); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode("7000"); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType("st1"); + rainyDayHandlerStatus.setVnfType("vnft1"); + rainyDayHandlerStatus.setPolicy("Retry"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + rainyDayHandlerStatus.setSecondaryPolicy("Abort"); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", "7000", "*", "errorMessage"); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, false); + + assertEquals("Abort", delegateExecution.getVariable("handlingCode")); + } + + @Test + public void queryRainyDayTableRollbackToAssignedMacro() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", false); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", "7000"); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode("7000"); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType("st1"); + rainyDayHandlerStatus.setVnfType("vnft1"); + rainyDayHandlerStatus.setPolicy("RollbackToAssigned"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + rainyDayHandlerStatus.setSecondaryPolicy("Abort"); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", "7000", "*", "errorMessage"); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + + assertEquals("Rollback", delegateExecution.getVariable("handlingCode")); + assertEquals(Status.ROLLED_BACK.toString(), delegateExecution.getVariable("rollbackTargetState")); + } + + @Test + public void queryRainyDayTableRollbackToAssignedALaCarte() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", "7000"); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode("7000"); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType("st1"); + rainyDayHandlerStatus.setVnfType("vnft1"); + rainyDayHandlerStatus.setPolicy("RollbackToAssigned"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + rainyDayHandlerStatus.setSecondaryPolicy("Abort"); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", "7000", "*", "errorMessage"); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + + assertEquals("RollbackToAssigned", delegateExecution.getVariable("handlingCode")); + assertEquals(Status.ROLLED_BACK_TO_ASSIGNED.toString(), delegateExecution.getVariable("rollbackTargetState")); + } + + @Test + public void queryRainyDayTableRollbackToCreated() throws Exception { + customer.getServiceSubscription().getServiceInstances().add(serviceInstance); + serviceInstance.getModelInfoServiceInstance().setServiceType("st1"); + vnf.setVnfType("vnft1"); + delegateExecution.setVariable("aLaCarte", true); + delegateExecution.setVariable("suppressRollback", false); + delegateExecution.setVariable("WorkflowExceptionCode", "7000"); + RainyDayHandlerStatus rainyDayHandlerStatus = new RainyDayHandlerStatus(); + rainyDayHandlerStatus.setErrorCode("7000"); + rainyDayHandlerStatus.setFlowName("AssignServiceInstanceBB"); + rainyDayHandlerStatus.setServiceType("st1"); + rainyDayHandlerStatus.setVnfType("vnft1"); + rainyDayHandlerStatus.setPolicy("RollbackToCreated"); + rainyDayHandlerStatus.setWorkStep(ASTERISK); + rainyDayHandlerStatus.setSecondaryPolicy("Abort"); + + doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB", + "st1", "vnft1", "7000", "*", "errorMessage"); + + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + + assertEquals("RollbackToCreated", delegateExecution.getVariable("handlingCode")); + assertEquals(Status.ROLLED_BACK_TO_CREATED.toString(), delegateExecution.getVariable("rollbackTargetState")); + } + + + @Test + public void suppressRollbackTest() throws Exception { + delegateExecution.setVariable("suppressRollback", true); + delegateExecution.setVariable("aLaCarte", true); + executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true); + assertEquals("Abort", delegateExecution.getVariable("handlingCode")); + } + }