X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vnfapi%2Fprovider%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fsdnc%2Fvnfapi%2FVnfInstanceTopologyOperationTest.java;h=230a394ebb024b27078592e9a432c7b15a15ba9a;hb=51048eee7c8684c7d16450d2bed32dc0d0aafd87;hp=26c9b3069a54256f4ec5c4acaacc2450f39d626b;hpb=75c4c587354928db3893d1900bc8b3d6b4b3ef4b;p=sdnc%2Fnorthbound.git diff --git a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfInstanceTopologyOperationTest.java b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfInstanceTopologyOperationTest.java index 26c9b306..230a394e 100644 --- a/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfInstanceTopologyOperationTest.java +++ b/vnfapi/provider/src/test/java/org/onap/sdnc/vnfapi/VnfInstanceTopologyOperationTest.java @@ -21,6 +21,7 @@ package org.onap.sdnc.vnfapi; +import com.google.common.util.concurrent.CheckedFuture; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -34,11 +35,15 @@ import org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataBrokerAdapt import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTestCustomizer; import org.opendaylight.controller.md.sal.binding.test.ConcurrentDataBrokerTestCustomizer; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.VnfInstanceTopologyOperationInput; import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.VnfInstanceTopologyOperationOutput; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.request.information.RequestInformation; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.request.information.RequestInformation.RequestAction; +import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.request.information.RequestInformationBuilder; import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.VnfInstanceTopologyOperationInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.vnf.instance.request.information.VnfInstanceRequestInformation; import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.vnf.instance.request.information.VnfInstanceRequestInformationBuilder; @@ -47,29 +52,73 @@ import org.opendaylight.yang.gen.v1.org.onap.sdnctl.vnf.rev150720.vnf.instance.s import java.util.Properties; import java.util.concurrent.ExecutionException; -class DataBrokerErrorMsgConfigurator { +class VnfInstanceExceptionThrowerConfigurator { + private boolean shouldThrowExceptionDuringTransactionPut; + + public VnfInstanceExceptionThrowerConfigurator() { + this.shouldThrowExceptionDuringTransactionPut = true; + } + + public boolean shouldThrowExceptionDuringTransactionPut() { + return shouldThrowExceptionDuringTransactionPut; + } + + public void setShouldThrowExceptionDuringTransactionPut(boolean shouldThrowExceptionDuringTransactionPut) { + this.shouldThrowExceptionDuringTransactionPut = shouldThrowExceptionDuringTransactionPut; + } +} + +class VnfInstanceDataBrokerErrorMsgConfigurator { static public String JAVA_LANG_RUNTIME_EXCEPTION = "java.lang.RuntimeException: "; static public String TRANSACTION_WRITE_ERROR = "transaction-write-error"; } -class DataBrokerStab extends BindingDOMDataBrokerAdapter { - public DataBrokerStab(final DOMDataBroker domDataBroker, final BindingToNormalizedNodeCodec codec) { +class VnfInstanceDataBrokerStab extends BindingDOMDataBrokerAdapter { + VnfInstanceExceptionThrowerConfigurator exceptionThrowerConfigurator; + + public VnfInstanceDataBrokerStab(final DOMDataBroker domDataBroker, + final BindingToNormalizedNodeCodec codec, VnfInstanceExceptionThrowerConfigurator exceptionThrowerConfigurator) { super(domDataBroker, codec); + this.exceptionThrowerConfigurator = exceptionThrowerConfigurator; } @Override public WriteTransaction newWriteOnlyTransaction() { + if (exceptionThrowerConfigurator.shouldThrowExceptionDuringTransactionPut()) { + return newThrowingExceptionWriteOnlyTransaction(); + } + return newNotThrowingExceptionWriteOnlyTransaction(); + } + + private WriteTransaction newThrowingExceptionWriteOnlyTransaction() { WriteTransaction mockWriteTransaction = Mockito.mock(WriteTransaction.class); - Mockito.doThrow(new RuntimeException(DataBrokerErrorMsgConfigurator.TRANSACTION_WRITE_ERROR)) + Mockito.doThrow(new RuntimeException(VnfInstanceDataBrokerErrorMsgConfigurator.TRANSACTION_WRITE_ERROR)) .when(mockWriteTransaction).put(Mockito.any(), Mockito.any(), Mockito.any()); return mockWriteTransaction; } + + private WriteTransaction newNotThrowingExceptionWriteOnlyTransaction() { + WriteTransaction mockWriteTransaction = Mockito.mock(WriteTransaction.class); + CheckedFuture mockCheckedFuture = + Mockito.mock(CheckedFuture.class); + Mockito.doNothing().when(mockWriteTransaction).put(Mockito.any(), Mockito.any(), Mockito.any()); + Mockito.doReturn(mockCheckedFuture).when(mockWriteTransaction).submit(); + return mockWriteTransaction; + } } -class VnfApiProviderDataBrokerTestCustomizer extends ConcurrentDataBrokerTestCustomizer { +class VnfInstanceProviderDataBrokerTestCustomizer extends ConcurrentDataBrokerTestCustomizer { + VnfInstanceExceptionThrowerConfigurator exceptionThrowerConfigurator; + + public VnfInstanceProviderDataBrokerTestCustomizer(VnfInstanceExceptionThrowerConfigurator exceptionThrowerConfigurator) { + super(false); + this.exceptionThrowerConfigurator = exceptionThrowerConfigurator; + } + public DataBroker createDataBroker() { - return new DataBrokerStab(createDOMDataBroker(), super.getBindingToNormalized()); + return new VnfInstanceDataBrokerStab(createDOMDataBroker(), + super.getBindingToNormalized(), this.exceptionThrowerConfigurator); } } @@ -87,9 +136,12 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { private static final String ACK_FINAL = "ack-final"; private static final String SVC_OPERATION = "vnf-topology-operation"; + private VnfInstanceExceptionThrowerConfigurator exceptionThrowerConfigurator; + @Override protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { - return new VnfApiProviderDataBrokerTestCustomizer(); + this.exceptionThrowerConfigurator = new VnfInstanceExceptionThrowerConfigurator(); + return new VnfInstanceProviderDataBrokerTestCustomizer(this.exceptionThrowerConfigurator); } @Before @@ -114,24 +166,23 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { @Test public void vnfInstanceTopologyOperationInput_getVnfInstanceRequestInformationVnfInstanceIdIsNull() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(null)); + RequestInformation reqInfo = createRequestInformation(RequestAction.PreloadVnfInstanceRequest); + VnfInstanceRequestInformation vnfInstanceRequestInformation = createVnfInstanceRequestInformation(null); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(vnfInstanceRequestInformation, reqInfo); VnfInstanceTopologyOperationInput input = builder.build(); checkVnfInstanceTopologyOperation(input, "403", INVALID_INPUT); } @Test public void vnfInstanceTopologyOperationInput_VnfInstanceRequestInformationVnfInstanceIdIsZero() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation("")); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(""), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); checkVnfInstanceTopologyOperation(input, "403", INVALID_INPUT); } @Test public void vnfInstanceTopologyOperationInput_svcLogicClientHasGrapheReturnFalse() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(VIID)); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); setReturnForSvcLogicServiceClientHasGraph(false); checkVnfInstanceTopologyOperation(input, "503", NO_SERVICE_LOGIC); @@ -139,8 +190,7 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { @Test public void vnfInstanceTopologyOperationInput_svcLogicClientExecuteThrowsSvcLogicException() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(VIID)); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); setReturnForSvcLogicServiceClientHasGraph(true); setMockVNFSDNSvcLogicServiceClientToThrowException(SvcLogicException.class); @@ -149,8 +199,7 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { @Test public void vnfInstanceTopologyOperationInput_svcLogicClientExecuteThrowsException() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(VIID)); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); setReturnForSvcLogicServiceClientHasGraph(true); @@ -160,8 +209,7 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { @Test public void vnfInstanceTopologyOperationInput_svcLogicClientExecuteReturnsNotNull() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(VIID)); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); Properties properties = prop().set(ERROR_CODE, "500") @@ -176,17 +224,70 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { @Test public void vnfInstanceTopologyOperationInput_svcLogicClientExecuteReturnsNull() throws Exception { - VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); - builder.setVnfInstanceRequestInformation(createVnfInstanceRequestInformation(VIID)); + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); VnfInstanceTopologyOperationInput input = builder.build(); setReturnForSvcLogicServiceClientHasGraph(true); setReturnForSvcLogicServiceClientExecute(null); - String expectedErrorMsg = DataBrokerErrorMsgConfigurator.JAVA_LANG_RUNTIME_EXCEPTION - + DataBrokerErrorMsgConfigurator.TRANSACTION_WRITE_ERROR; + String expectedErrorMsg = VnfInstanceDataBrokerErrorMsgConfigurator.JAVA_LANG_RUNTIME_EXCEPTION + + VnfInstanceDataBrokerErrorMsgConfigurator.TRANSACTION_WRITE_ERROR; checkVnfInstanceTopologyOperation(input, "500", expectedErrorMsg); } + @Test + public void vnfInstanceTopologyOperationInput_ActivateNoErrorDuringTransactionWriting() throws Exception { + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.VnfInstanceActivateRequest)); + VnfInstanceTopologyOperationInput input = builder.build(); + + setReturnForSvcLogicServiceClientHasGraph(true); + setReturnForSvcLogicServiceClientExecute(null); + exceptionThrowerConfigurator.setShouldThrowExceptionDuringTransactionPut(false); + checkVnfInstanceTopologyOperation(input, "200", null); + } + + @Test + public void vnfInstanceTopologyOperationInput_ChangeNoErrorDuringTransactionWriting() throws Exception { + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.ChangeVnfInstanceActivateRequest)); + VnfInstanceTopologyOperationInput input = builder.build(); + + setReturnForSvcLogicServiceClientHasGraph(true); + setReturnForSvcLogicServiceClientExecute(null); + exceptionThrowerConfigurator.setShouldThrowExceptionDuringTransactionPut(false); + checkVnfInstanceTopologyOperation(input, "200", null); + } + + @Test + public void vnfInstanceTopologyOperationInput_DisconnectNoErrorDuringTransactionWriting() throws Exception { + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.DisconnectVnfInstanceRequest)); + VnfInstanceTopologyOperationInput input = builder.build(); + + setReturnForSvcLogicServiceClientHasGraph(true); + setReturnForSvcLogicServiceClientExecute(null); + exceptionThrowerConfigurator.setShouldThrowExceptionDuringTransactionPut(false); + checkVnfInstanceTopologyOperation(input, "200", null); + } + + @Test + public void vnfInstanceTopologyOperationInput_PreloadNoErrorDuringTransactionWriting() throws Exception { + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.PreloadVnfInstanceRequest)); + VnfInstanceTopologyOperationInput input = builder.build(); + + setReturnForSvcLogicServiceClientHasGraph(true); + setReturnForSvcLogicServiceClientExecute(null); + exceptionThrowerConfigurator.setShouldThrowExceptionDuringTransactionPut(false); + checkVnfInstanceTopologyOperation(input, "200", null); + } + + @Test + public void vnfInstanceTopologyOperationInput_DeletePreloadNoErrorDuringTransactionWriting() throws Exception { + VnfInstanceTopologyOperationInputBuilder builder = createVnfInstanceTopologyOperationInputBuilder(createVnfInstanceRequestInformation(VIID), createRequestInformation(RequestAction.DeletePreloadVnfInstanceRequest)); + VnfInstanceTopologyOperationInput input = builder.build(); + + setReturnForSvcLogicServiceClientHasGraph(true); + setReturnForSvcLogicServiceClientExecute(null); + exceptionThrowerConfigurator.setShouldThrowExceptionDuringTransactionPut(false); + checkVnfInstanceTopologyOperation(input, "200", null); + } private void checkVnfInstanceTopologyOperation(VnfInstanceTopologyOperationInput input, String expectedResponseCode, String expectedResponseMessage) throws ExecutionException, InterruptedException { @@ -240,6 +341,15 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { .thenThrow(exceptionClass.asSubclass(Throwable.class)); } + private VnfInstanceTopologyOperationInputBuilder createVnfInstanceTopologyOperationInputBuilder(VnfInstanceRequestInformation vnfInstanceRequestInformation, RequestInformation reqInfo) { + VnfInstanceTopologyOperationInputBuilder builder = new VnfInstanceTopologyOperationInputBuilder(); + builder.setVnfInstanceRequestInformation(vnfInstanceRequestInformation); + builder.setRequestInformation(reqInfo); + return builder; + } + + + private VnfInstanceRequestInformation createVnfInstanceRequestInformation(String vnfInstanceId) { return new VnfInstanceRequestInformationBuilder() .setVnfInstanceId(vnfInstanceId) @@ -247,4 +357,12 @@ public class VnfInstanceTopologyOperationTest extends VnfApiProviderTest { .setVnfModelId(PRELOAD_TYPE) .build(); } + + private RequestInformation createRequestInformation(RequestAction action) { + return new RequestInformationBuilder() + .setRequestAction(action) + .build(); + } + + }