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;
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;
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);
@Test
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()
+ .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)
- )));
+ .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance).build()
+ ).build();
//execute the mdsal exec
ServiceTopologyOperationOutput output = exec(
@Test
public void should_fail_when_client_execution_failed() throws Exception {
+
svcClient.mockHasGraph(true);
svcClient.mockExecute(new RuntimeException("test exception"));
, input
, RpcResult::getResult
);
-
+
assertEquals("500", output.getResponseCode());
assertEquals("test exception", output.getResponseMessage());
assertEquals("Y", output.getAckFinalIndicator());
}
+ @Test
+ 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);
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);
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(
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())
.setRpcAction(toRpcAction(expectedSdncRequestHeader.getSvcAction()))
.setRpcName(SVC_OPERATION)
.setRequestStatus(ServiceStatus.RequestStatus.Synccomplete)
- .setResponseTimestamp(responseTimeStamp)
- )
- )
- );
+ .setResponseTimestamp(responseTimeStamp).build()
+ ).build();
}