Roll master to snapshot version for New Delhi release
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / ServiceTopologyOperationRPCTest.java
index b4ce214..26799cb 100644 (file)
 package org.onap.sdnc.northbound;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
 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.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.requestInformation;
 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
@@ -40,18 +38,16 @@ import static org.onap.sdnc.northbound.util.MDSALUtil.serviceStatus;
 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceTopologyOperationInput;
 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceTopologyOperationOutput;
 
-import javax.xml.crypto.Data;
-import org.junit.After;
 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.ServiceTopologyOperationInput;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutput;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
@@ -60,8 +56,6 @@ import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.re
 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.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
 
@@ -71,17 +65,14 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 @RunWith(MockitoJUnitRunner.class)
 public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderTest {
 
-
     final String SVC_OPERATION = "service-topology-operation";
 
-
     @Before
     public void setUp() throws Exception {
         super.setUp();
         svcClient.setScvOperation(SVC_OPERATION);
     }
 
-
     /**
      * Verify  ServiceTopologyOperation RPC executes a DG then produces the expected {@link
      * ServiceTopologyOperationOutput} and persisted the expected {@link Service} in the {@link DataBroker}
@@ -95,26 +86,30 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
         svcClient.mockExecute(svcResultProp);
 
         // create the ServiceTopologyOperationInput from the template
-        ServiceTopologyOperationInput serviceTopologyOperationInput = createSTOI();
+        ServiceTopologyOperationInput input = createSTOI();
 
         //execute the mdsal exec
-        ServiceTopologyOperationOutput actualServiceTopologyOperationOutput = exec(
+        ServiceTopologyOperationOutput output = exec(
             genericResourceApiProvider::serviceTopologyOperation
-            , serviceTopologyOperationInput
+            , input
             , RpcResult::getResult
         );
 
+        assertEquals("200", output.getResponseCode());
+        assertEquals("OK", output.getResponseMessage());
+        assertEquals("Y", output.getAckFinalIndicator());
+
         //verify the returned ServiceTopologyOperationOutput
         ServiceTopologyOperationOutput expectedServiceTopologyOperationOutput = createExpectedSTOO(svcResultProp,
-            serviceTopologyOperationInput);
-        assertEquals(expectedServiceTopologyOperationOutput, actualServiceTopologyOperationOutput);
+            input);
+        assertEquals(expectedServiceTopologyOperationOutput, output);
 
         //verify the persisted Service
-        Service actualService = db.read(serviceTopologyOperationInput.getServiceInformation().getServiceInstanceId(),
+        Service actualService = db.read(input.getServiceInformation().getServiceInstanceId(),
             LogicalDatastoreType.CONFIGURATION);
         Service expectedService = createExpectedService(
             expectedServiceTopologyOperationOutput,
-            serviceTopologyOperationInput,
+            input,
             actualService);
         assertEquals(expectedService, actualService);
 
@@ -122,18 +117,18 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
     }
 
     @Test
-    public void serviceTopologyOperation_should_fail_when_service_info_not_present() throws Exception {
+    public void should_fail_when_service_info_not_present() throws Exception {
         // create the ServiceTopologyOperationInput from the template
-        ServiceTopologyOperationInput input = build(
+        ServiceTopologyOperationInput input =
             serviceTopologyOperationInput()
-                .setSdncRequestHeader(build(sdncRequestHeader()
-                .setSvcRequestId("svc-request-id: xyz")
-                .setSvcAction(SvcAction.Assign)
-            ))
-            .setRequestInformation(build(requestInformation()
-                .setRequestId("request-id: xyz")
-                .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
-            )));
+                .setSdncRequestHeader(sdncRequestHeader()
+                    .setSvcRequestId("svc-request-id: xyz")
+                    .setSvcAction(SvcAction.Assign).build()
+                )
+                .setRequestInformation(requestInformation()
+                    .setRequestId("request-id: xyz")
+                    .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
+                ).build();
 
         //execute the mdsal exec
         ServiceTopologyOperationOutput output = exec(
@@ -149,7 +144,8 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
 
 
     @Test
-    public void serviceTopologyOperation_should_fail_when_client_execution_failed() throws Exception {
+    public void should_fail_when_client_execution_failed() throws Exception {
+
         svcClient.mockHasGraph(true);
         svcClient.mockExecute(new RuntimeException("test exception"));
 
@@ -161,14 +157,57 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
             , input
             , RpcResult::getResult
         );
-
+        
         assertEquals("500", output.getResponseCode());
         assertEquals("test exception", output.getResponseMessage());
         assertEquals("Y", output.getAckFinalIndicator());
     }
 
     @Test
-    public void serviceTopologyOperation_should_fail_when_client_has_no_graph() throws Exception {
+    public void delete_fail_when_client_execution_failed() throws Exception {
+
+        //mock svcClient to perform a successful execution with the expected parameters
+        svcClient.mockHasGraph(true);
+        PropBuilder svcResultProp = svcClient.createExecuteOKResult();
+        svcClient.mockExecute(svcResultProp);
+
+        ServiceTopologyOperationInput input = deleteSTOI();
+
+        //execute the mdsal exec
+        ServiceTopologyOperationOutput output = exec(
+                genericResourceApiProvider::serviceTopologyOperation
+                , input
+                , RpcResult::getResult
+        );
+
+        assertEquals("200", output.getResponseCode());
+        assertEquals("OK", output.getResponseMessage());
+        assertEquals("Y", output.getAckFinalIndicator());
+    }
+
+    @Test
+    public void delete_service_fail_when_client_execution_failed() throws Exception {
+
+        //mock svcClient to perform a successful execution with the expected parameters
+        svcClient.mockHasGraph(true);
+        PropBuilder svcResultProp = svcClient.createExecuteOKResult();
+        svcClient.mockExecute(svcResultProp);
+
+        ServiceTopologyOperationInput input = deleteServiceSTOI();
+
+        //execute the mdsal exec
+        ServiceTopologyOperationOutput output = exec(
+                genericResourceApiProvider::serviceTopologyOperation
+                , input
+                , RpcResult::getResult
+        );
+
+        assertEquals("200", output.getResponseCode());
+        assertEquals("Y", output.getAckFinalIndicator());
+    }
+
+    @Test
+    public void should_fail_when_client_has_no_graph() throws Exception {
         svcClient.mockHasGraph(false);
 
         ServiceTopologyOperationInput input = createSTOI();
@@ -187,11 +226,11 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
 
 
     @Test
-    public void serviceTopologyOperation_should_fail_when_failed_to_update_mdsal() throws Exception {
+    public void should_fail_when_failed_to_update_mdsal() throws Exception {
 
         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);
@@ -211,40 +250,70 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
         assertEquals("Y", output.getAckFinalIndicator());
     }
 
-
-
     private ServiceTopologyOperationInput createSTOI() {
 
-        return build(
+        return
             serviceTopologyOperationInput()
-                .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSdncRequestHeader(sdncRequestHeader()
                     .setSvcRequestId("svc-request-id: xyz")
-                    .setSvcAction(SvcAction.Assign)
-                ))
-                .setRequestInformation(build(requestInformation()
+                    .setSvcAction(SvcAction.Assign).build()
+                )
+                .setRequestInformation(requestInformation()
                     .setRequestId("request-id: xyz")
-                    .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
-                ))
-                .setServiceInformation(build(serviceInformationBuilder()
-                    .setServiceInstanceId("service-instance-id: xyz")
-                ))
-        );
+                    .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
+                )
+                .setServiceInformation(serviceInformationBuilder()
+                    .setServiceInstanceId("service-instance-id: xyz").build()
+                ).build();
+    }
+
+    private ServiceTopologyOperationInput deleteSTOI() {
+
+        return
+                serviceTopologyOperationInput()
+                        .setSdncRequestHeader(sdncRequestHeader()
+                                .setSvcRequestId("svc-request-id: xyz")
+                                .setSvcAction(SvcAction.Unassign).build()
+                        )
+                        .setRequestInformation(requestInformation()
+                                .setRequestId("request-id: xyz")
+                                .setRequestAction(RequestInformation.RequestAction.DeleteServiceInstance).build()
+                        )
+                        .setServiceInformation(serviceInformationBuilder()
+                                .setServiceInstanceId("service-instance-id: xyz").build()
+                        ).build();
+    }
+
+    private ServiceTopologyOperationInput deleteServiceSTOI() {
+
+        return
+                serviceTopologyOperationInput()
+                        .setSdncRequestHeader(sdncRequestHeader()
+                                .setSvcRequestId("svc-request-id: xyz")
+                                .setSvcAction(SvcAction.Delete).build()
+                        )
+                        .setRequestInformation(requestInformation()
+                                .setRequestId("request-id: xyz")
+                                .setRequestAction(RequestInformation.RequestAction.DeleteServiceInstance).build()
+                        )
+                        .setServiceInformation(serviceInformationBuilder()
+                                .setServiceInstanceId("service-instance-id: xyz").build()
+                        ).build();
     }
 
 
     private ServiceTopologyOperationOutput createExpectedSTOO(PropBuilder expectedSvcResultProp,
         ServiceTopologyOperationInput expectedServiceTopologyOperationInput) {
-        return build(
+        return
             serviceTopologyOperationOutput()
                 .setSvcRequestId(expectedServiceTopologyOperationInput.getSdncRequestHeader().getSvcRequestId())
                 .setResponseCode(expectedSvcResultProp.get(svcClient.errorCode))
                 .setAckFinalIndicator(expectedSvcResultProp.get(svcClient.ackFinal))
                 .setResponseMessage(expectedSvcResultProp.get(svcClient.errorMessage))
-                .setServiceResponseInformation(build(serviceResponseInformation()
+                .setServiceResponseInformation(serviceResponseInformation()
                     .setInstanceId(expectedServiceTopologyOperationInput.getServiceInformation().getServiceInstanceId())
-                    .setObjectPath(expectedSvcResultProp.get(svcClient.serviceObjectPath))
-                ))
-        );
+                    .setObjectPath(expectedSvcResultProp.get(svcClient.serviceObjectPath)).build()
+                ).build();
     }
 
     private Service createExpectedService(
@@ -262,12 +331,11 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
         ServiceInformation expectedServiceInformation = expectedServiceTopologyOperationInput.getServiceInformation();
         RequestInformation expectedRequestInformation = expectedServiceTopologyOperationInput.getRequestInformation();
 
-        return build(
+        return
             service()
                 .setServiceInstanceId(expectedServiceInformation.getServiceInstanceId())
-                .setServiceData(build(serviceData()))
+                .setServiceData(serviceData().build())
                 .setServiceStatus(
-                    build(
                         serviceStatus()
                             .setAction(expectedRequestInformation.getRequestAction().name())
                             .setFinalIndicator(expectedServiceTopologyOperationOutput.getAckFinalIndicator())
@@ -276,10 +344,8 @@ public class ServiceTopologyOperationRPCTest extends GenericResourceApiProviderT
                             .setRpcAction(toRpcAction(expectedSdncRequestHeader.getSvcAction()))
                             .setRpcName(SVC_OPERATION)
                             .setRequestStatus(ServiceStatus.RequestStatus.Synccomplete)
-                            .setResponseTimestamp(responseTimeStamp)
-                    )
-                )
-        );
+                            .setResponseTimestamp(responseTimeStamp).build()
+                ).build();
 
     }