diff options
author | Jakub Dudycz <jakub.dudycz@nokia.com> | 2018-03-20 14:39:25 +0100 |
---|---|---|
committer | Jakub Dudycz <jakub.dudycz@nokia.com> | 2018-03-20 15:03:54 +0100 |
commit | acdff7e4d5dd57c105ff1374d49b581da1126401 (patch) | |
tree | 36cc835378068a75860020677499af4597477801 /generic-resource-api/provider/src/test/java/org | |
parent | 7e2a79d09429101a16fa1011770651a1880afd74 (diff) |
GenericResourceApiProvider unit tests part 3.
Added some unit tests for networkTopologyOperation method
Change-Id: Iad137467fa367c9c6fb0050be1fe07a9019b213d
Issue-ID: SDNC-275
Signed-off-by: Jakub Dudycz <jakub.dudycz@nokia.com>
Diffstat (limited to 'generic-resource-api/provider/src/test/java/org')
2 files changed, 167 insertions, 45 deletions
diff --git a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/NetworkTopologyOperationRPCTest.java b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/NetworkTopologyOperationRPCTest.java index 31ec9cd3..5688f578 100644 --- a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/NetworkTopologyOperationRPCTest.java +++ b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/NetworkTopologyOperationRPCTest.java @@ -21,27 +21,13 @@ package org.onap.sdnc.northbound; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.sdnc.northbound.util.PropBuilder; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInput; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutput; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceData; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformation; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.Service; -import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatus; -import org.opendaylight.yangtools.yang.common.RpcResult; - -import java.time.Instant; - import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.onap.sdnc.northbound.GenericResourceApiProvider.APP_NAME; +import static org.onap.sdnc.northbound.GenericResourceApiProvider.INVALID_INPUT_ERROR_MESSAGE; +import static org.onap.sdnc.northbound.GenericResourceApiProvider.NO_SERVICE_LOGIC_ACTIVE; +import static org.onap.sdnc.northbound.GenericResourceApiProvider.NULL_OR_EMPTY_ERROR_PARAM; import static org.onap.sdnc.northbound.util.MDSALUtil.build; import static org.onap.sdnc.northbound.util.MDSALUtil.exec; import static org.onap.sdnc.northbound.util.MDSALUtil.networkInformation; @@ -56,11 +42,37 @@ import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder; import static org.onap.sdnc.northbound.util.MDSALUtil.serviceLevelOperStatus; import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation; import static org.onap.sdnc.northbound.util.MDSALUtil.serviceStatus; +import static org.onap.sdnc.northbound.util.MDSALUtil.vnfInformationBuilder; +import static org.onap.sdnc.northbound.util.MDSALUtil.vnfTopologyOperationInput; import static org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastAction; import static org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastOrderStatus; import static org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastRpcAction; import static org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.OrderStatus; +import java.time.Instant; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.sdnc.northbound.util.PropBuilder; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInput; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutput; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInput; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutput; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceData; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformation; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.Service; +import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatus; +import org.opendaylight.yangtools.yang.common.RpcResult; + /** * This class test the NetworkTopologyOperation mdsal RPC. @@ -78,13 +90,115 @@ public class NetworkTopologyOperationRPCTest extends GenericResourceApiProviderT svcClient.setScvOperation(SVC_OPERATION); } + @Test + public void should_fail_when_service_instance_id_not_present() throws Exception { + + NetworkTopologyOperationInput input = build(networkTopologyOperationInput()); + + NetworkTopologyOperationOutput output = + exec(genericResourceApiProvider::networkTopologyOperation, input, RpcResult::getResult); + + assertEquals("404", output.getResponseCode()); + assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + } + + + @Test + public void should_fail_when_invalid_service_data() throws Exception { + + NetworkTopologyOperationInput input = build(networkTopologyOperationInput() + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("test-service-instance-id") + )) + ); + + NetworkTopologyOperationOutput output = + exec(genericResourceApiProvider::networkTopologyOperation, input, RpcResult::getResult); + + assertEquals("404", output.getResponseCode()); + assertEquals(INVALID_INPUT_ERROR_MESSAGE, output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + } + + + @Test + public void should_fail_when_client_execution_failed() throws Exception { + + svcClient.mockHasGraph(true); + svcClient.mockExecute(new RuntimeException("test exception")); + + NetworkTopologyOperationInput input = build(networkTopologyOperationInput() + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("test-service-instance-id") + )) + ); + + persistServiceInDataBroker(input); + + NetworkTopologyOperationOutput output = + exec(genericResourceApiProvider::networkTopologyOperation, input, RpcResult::getResult); + + assertEquals("500", output.getResponseCode()); + assertEquals("test exception", output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + } + + @Test + public void should_fail_when_client_has_no_graph() throws Exception { + + svcClient.mockHasGraph(false); + + NetworkTopologyOperationInput input = build(networkTopologyOperationInput() + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("test-service-instance-id") + )) + ); + + persistServiceInDataBroker(input); + + NetworkTopologyOperationOutput output = + exec(genericResourceApiProvider::networkTopologyOperation, input, RpcResult::getResult); + + assertEquals("503", output.getResponseCode()); + assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + } + + @Test + public void should_fail_when_failed_to_update_mdsal() throws Exception { + + PropBuilder svcResultProp = svcClient.createExecuteOKResult(); + svcClient.mockExecute(svcResultProp); + svcClient.mockHasGraph(true); + WriteTransaction mockWriteTransaction = mock(WriteTransaction.class); + when(mockWriteTransaction.submit()).thenThrow(new TransactionChainClosedException("test exception")); + + DataBroker spyDataBroker = Mockito.spy(dataBroker); + when(spyDataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction); + genericResourceApiProvider.setDataBroker(spyDataBroker); + + NetworkTopologyOperationInput input = build(networkTopologyOperationInput() + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("test-service-instance-id") + )) + ); + + persistServiceInDataBroker(input); + NetworkTopologyOperationOutput output = + exec(genericResourceApiProvider::networkTopologyOperation, input, RpcResult::getResult); + + assertEquals("500", output.getResponseCode()); + assertEquals("test exception", output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + } /** * Verify ServiceTopologyOperation RPC executes a DG then produces the expected * {@link NetworkTopologyOperationOutput} and persisted the expected {@link Service} in the {@link DataBroker} */ @Test - public void testNetworkTopologyOperation() throws Exception { + public void should_success_when_no_errors_encountered() throws Exception { //mock svcClient to perform a successful execution with the expected parameters svcClient.mockHasGraph(true); @@ -134,20 +248,20 @@ public class NetworkTopologyOperationRPCTest extends GenericResourceApiProviderT return build( networkTopologyOperationInput() - .setSdncRequestHeader(build(sdncRequestHeader() - .setSvcRequestId("svc-request-id: xyz") - .setSvcAction(SvcAction.Assign) - )) - .setRequestInformation(build(requestInformation() - .setRequestId("request-id: xyz") - .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance) - )) - .setServiceInformation(build(serviceInformationBuilder() - .setServiceInstanceId("service-instance-id: xyz") - )) - .setNetworkInformation(build( - networkInformation() - )) + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("svc-request-id: xyz") + .setSvcAction(SvcAction.Assign) + )) + .setRequestInformation(build(requestInformation() + .setRequestId("request-id: xyz") + .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance) + )) + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("service-instance-id: xyz") + )) + .setNetworkInformation(build( + networkInformation() + )) ); } diff --git a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/VnfTopologyOperationRPCTest.java b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/VnfTopologyOperationRPCTest.java index a39146b2..624dd919 100644 --- a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/VnfTopologyOperationRPCTest.java +++ b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/VnfTopologyOperationRPCTest.java @@ -61,7 +61,8 @@ public class VnfTopologyOperationRPCTest extends GenericResourceApiProviderTest VnfTopologyOperationInput input = build(vnfTopologyOperationInput() .setServiceInformation(build(serviceInformationBuilder(). - setServiceInstanceId("test-service-instance-id"))) + setServiceInstanceId("test-service-instance-id") + )) ); VnfTopologyOperationOutput output = @@ -81,9 +82,11 @@ public class VnfTopologyOperationRPCTest extends GenericResourceApiProviderTest VnfTopologyOperationInput input = build(vnfTopologyOperationInput() .setServiceInformation(build(serviceInformationBuilder() - .setServiceInstanceId("test-service-instance-id"))) + .setServiceInstanceId("test-service-instance-id") + )) .setVnfInformation(build(vnfInformationBuilder() - .setVnfId("test-vnf-id"))) + .setVnfId("test-vnf-id") + )) ); VnfTopologyOperationOutput output = @@ -101,9 +104,11 @@ public class VnfTopologyOperationRPCTest extends GenericResourceApiProviderTest VnfTopologyOperationInput input = build(vnfTopologyOperationInput() .setServiceInformation(build(serviceInformationBuilder() - .setServiceInstanceId("test-service-instance-id"))) + .setServiceInstanceId("test-service-instance-id") + )) .setVnfInformation(build(vnfInformationBuilder() - .setVnfId("test-vnf-id"))) + .setVnfId("test-vnf-id") + )) ); VnfTopologyOperationOutput output = @@ -129,9 +134,11 @@ public class VnfTopologyOperationRPCTest extends GenericResourceApiProviderTest VnfTopologyOperationInput input = build(vnfTopologyOperationInput() .setServiceInformation(build(serviceInformationBuilder() - .setServiceInstanceId("test-service-instance-id"))) + .setServiceInstanceId("test-service-instance-id") + )) .setVnfInformation(build(vnfInformationBuilder() - .setVnfId("test-vnf-id"))) + .setVnfId("test-vnf-id") + )) ); VnfTopologyOperationOutput output = @@ -159,10 +166,11 @@ public class VnfTopologyOperationRPCTest extends GenericResourceApiProviderTest .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance) )) .setServiceInformation(build(serviceInformationBuilder() - .setServiceInstanceId("test-service-instance-id"))) + .setServiceInstanceId("test-service-instance-id") + )) .setVnfInformation(build(vnfInformationBuilder() - .setVnfId("test-vnf-id"))) - + .setVnfId("test-vnf-id") + )) ); VnfTopologyOperationOutput output = |