X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=generic-resource-api%2Fprovider%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fsdnc%2Fnorthbound%2FContrailRouteTopologyOperationRPCTest.java;h=06c66870ef1cc8867b450e7ba41b84cf909006a9;hb=2e63f133b29f1bb7fccaf6e35d11488f042a5855;hp=d3513f7000914f0a2fa8e3cd6cf79435c28a8ec1;hpb=29c3b1e0557e10b1ee4570324e85771f6db8b2c3;p=sdnc%2Fnorthbound.git diff --git a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/ContrailRouteTopologyOperationRPCTest.java b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/ContrailRouteTopologyOperationRPCTest.java index d3513f70..06c66870 100644 --- a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/ContrailRouteTopologyOperationRPCTest.java +++ b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/ContrailRouteTopologyOperationRPCTest.java @@ -8,30 +8,41 @@ import static org.onap.sdnc.northbound.GenericResourceApiProvider.INVALID_INPUT_ 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.contrailRouteResponseInformation; import static org.onap.sdnc.northbound.util.MDSALUtil.contrailRouteTopologyOperationInput; +import static org.onap.sdnc.northbound.util.MDSALUtil.contrailRouteTopologyOperationOutput; import static org.onap.sdnc.northbound.util.MDSALUtil.exec; +import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation; +import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader; import static org.onap.sdnc.northbound.util.MDSALUtil.service; import static org.onap.sdnc.northbound.util.MDSALUtil.serviceData; 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 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.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.TransactionChainClosedException; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationInput; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationOutput; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastAction; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastOrderStatus; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastRpcAction; import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.OrderStatus; +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.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.yangtools.yang.common.RpcResult; @@ -65,6 +76,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro public void should_fail_when_invalid_service_data() throws Exception { ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput() + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("test-svc-request-id") + .setSvcAction(SvcAction.Assign) + )) .setServiceInformation(build(serviceInformationBuilder() .setServiceInstanceId("test-service-instance-id") )) @@ -86,6 +101,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro svcClient.mockExecute(new RuntimeException("test exception")); ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput() + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("test-svc-request-id") + .setSvcAction(SvcAction.Assign) + )) .setServiceInformation(build(serviceInformationBuilder() .setServiceInstanceId("test-service-instance-id") )) @@ -107,6 +126,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro svcClient.mockHasGraph(false); ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput() + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("test-svc-request-id") + .setSvcAction(SvcAction.Assign) + )) .setServiceInformation(build(serviceInformationBuilder() .setServiceInstanceId("test-service-instance-id") )) @@ -129,13 +152,17 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro svcClient.mockExecute(svcResultProp); svcClient.mockHasGraph(true); WriteTransaction mockWriteTransaction = mock(WriteTransaction.class); - when(mockWriteTransaction.submit()).thenThrow(new TransactionChainClosedException("test exception")); + when(mockWriteTransaction.commit()).thenThrow(new TransactionChainClosedException("test exception")); DataBroker spyDataBroker = Mockito.spy(dataBroker); when(spyDataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTransaction); genericResourceApiProvider.setDataBroker(spyDataBroker); ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput() + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("test-svc-request-id") + .setSvcAction(SvcAction.Assign) + )) .setServiceInformation(build(serviceInformationBuilder() .setServiceInstanceId("test-service-instance-id") )) @@ -152,6 +179,47 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro } + @Test + public void should_success_when_no_errors_encountered() throws Exception { + + svcClient.mockHasGraph(true); + PropBuilder svcResultProp = svcClient.createExecuteOKResult(); + svcResultProp.set("contrail-route-object-path", "contrailRouteObjectPath: XYZ"); + svcClient.mockExecute(svcResultProp); + + ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput() + .setSdncRequestHeader(build(sdncRequestHeader() + .setSvcRequestId("test-svc-request-id") + .setSvcAction(SvcAction.Assign) + )) + .setRequestInformation(build(requestInformation() + .setRequestId("test-request-id") + .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance) + )) + .setServiceInformation(build(serviceInformationBuilder() + .setServiceInstanceId("test-service-instance-id") + )) + ); + + Service service = persistServiceInDataBroker(input); + + ContrailRouteTopologyOperationOutput output = + exec(genericResourceApiProvider::contrailRouteTopologyOperation, input, RpcResult::getResult); + + assertEquals("200", output.getResponseCode()); + assertEquals("OK", output.getResponseMessage()); + assertEquals("Y", output.getAckFinalIndicator()); + + ContrailRouteTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input); + assertEquals(expectedOutput, output); + + Service actualService = db + .read(input.getServiceInformation().getServiceInstanceId(), LogicalDatastoreType.CONFIGURATION); + + Service expectedService = createExpectedService(input, service.getServiceData()); + assertEquals(expectedService, actualService); + } + private Service persistServiceInDataBroker(ContrailRouteTopologyOperationInput input) throws Exception { Service service = build(service() @@ -160,7 +228,7 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro .setServiceLevelOperStatus(build(serviceLevelOperStatus() .setOrderStatus(OrderStatus.Created) .setModifyTimestamp(Instant.now().toString()) - .setLastSvcRequestId("svc-request-id: abc") + .setLastSvcRequestId(input.getSdncRequestHeader().getSvcRequestId()) .setLastRpcAction(LastRpcAction.Activate) .setLastOrderStatus(LastOrderStatus.PendingAssignment) .setLastAction(LastAction.ActivateNetworkInstance) @@ -171,4 +239,34 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro db.write(true, service, LogicalDatastoreType.CONFIGURATION); return service; } + + private ContrailRouteTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder, + ContrailRouteTopologyOperationInput input) { + + return build(contrailRouteTopologyOperationOutput() + .setContrailRouteResponseInformation(build(contrailRouteResponseInformation() + .setObjectPath(propBuilder.get("contrail-route-object-path")))) + .setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId()) + .setResponseCode(propBuilder.get(svcClient.errorCode)) + .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal)) + .setResponseMessage(propBuilder.get(svcClient.errorMessage)) + .setServiceResponseInformation(build(serviceResponseInformation() + .setInstanceId(input.getServiceInformation().getServiceInstanceId()) + .setObjectPath(propBuilder.get(svcClient.serviceObjectPath)) + )) + ); + } + + private Service createExpectedService( + ContrailRouteTopologyOperationInput expectedInput, ServiceData expectedServiceData) { + + ServiceInformation expectedServiceInformation = expectedInput.getServiceInformation(); + + return build(service() + .setServiceInstanceId(expectedServiceInformation.getServiceInstanceId()) + .setServiceData(build(serviceData())) + .setServiceData(expectedServiceData) + .setServiceStatus(build(serviceStatus())) + ); + } }