--- /dev/null
+/*
+ * Copyright © 2018 Orange, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.servicehandler.impl;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.common.OperationResult;
+import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.pce.service.PathComputationService;
+import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
+import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
+import org.opendaylight.transportpce.pce.utils.PceTestData;
+import org.opendaylight.transportpce.pce.utils.PceTestUtils;
+import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
+import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
+import org.opendaylight.transportpce.servicehandler.ServiceEndpointType;
+import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
+import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
+import org.opendaylight.transportpce.servicehandler.stub.StubRendererServiceOperations;
+import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.RpcActions;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommon;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommonBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeaderBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.lgx.Lgx;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.lgx.LgxBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.Port;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.delete.input.ServiceDeleteReqInfo;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.delete.input.ServiceDeleteReqInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.ServicesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ServiceHandlerImplTest extends AbstractTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ServiceHandlerImplTest.class);
+
+ private NotificationPublishService notificationPublishService;
+ private PathComputationService pathComputationService;
+ private RendererServiceOperations rendererServiceOperations;
+ private ServicehandlerImpl serviceHandler;
+
+ @Mock
+ private ServiceDataStoreOperations serviceDataStoreOperationsMock;
+
+ @Mock
+ private PCEServiceWrapper pceServiceWrapperMock;
+
+ @Mock
+ private RendererServiceOperations rendererServiceOperationsMock;
+
+ @Mock
+ private ComplianceCheckResult complianceCheckResultMock;
+
+ @Mock
+ private Optional<Services> servicesOptionalMock;
+
+ @InjectMocks
+ private ServicehandlerImpl serviceHandlerImplMock;
+
+ @Before
+ public void setUp() throws Exception {
+ this.serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService,
+ this.rendererServiceOperations);
+ this.serviceHandlerImplMock = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+ MockitoAnnotations.initMocks(this);
+ }
+
+ public ServiceHandlerImplTest() throws Exception {
+ this.notificationPublishService = new NotificationPublishServiceMock();
+ this.pathComputationService = new PathComputationServiceImpl(getDataBroker(), this.notificationPublishService);
+ PceTestUtils.writeTopologyIntoDataStore(getDataBroker(), getDataStoreContextUtil(),
+ "topologyData/NW-simple-topology.xml");
+ this.rendererServiceOperations = new StubRendererServiceOperations(this.notificationPublishService);
+ }
+
+ @Test
+ public void testCreateServiceValid() throws ExecutionException, InterruptedException {
+
+ ServiceCreateInput serviceInput = buildServiceCreateInput();
+
+ Future<RpcResult<ServiceCreateOutput>> output0 = this.serviceHandler.serviceCreate(serviceInput);
+ Assert.assertNotNull(output0);
+ Assert.assertTrue(output0.get().isSuccessful());
+ Assert.assertEquals(output0.get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(serviceInput, ResponseCodes.FINAL_ACK_YES,
+ "Service rendered successfully !", ResponseCodes.RESPONSE_OK).get().getResult());
+ Assert.assertEquals(0, output0.get().getErrors().size());
+ }
+
+ @Test
+ public void createServiceHandlerInvalidIfNameIsEmpty() throws ExecutionException, InterruptedException {
+ ServiceCreateInput emptyServiceNameInput = buildServiceCreateInput();
+ ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(emptyServiceNameInput);
+ emptyServiceNameInput = builtInput.setServiceName("").build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(emptyServiceNameInput).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(emptyServiceNameInput, ResponseCodes.FINAL_ACK_YES,
+ "Service Name is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerInvalidIfNameIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput nullServiceNameInput = buildServiceCreateInput();
+ ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(nullServiceNameInput);
+ nullServiceNameInput = builtInput.setServiceName(null).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(nullServiceNameInput).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(nullServiceNameInput, ResponseCodes.FINAL_ACK_YES,
+ "Service Name is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHnadlerInvalidIfConTypeIsEmpty() throws ExecutionException, InterruptedException {
+ ServiceCreateInput emptyConTypeInput = buildServiceCreateInput();
+ ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(emptyConTypeInput);
+ emptyConTypeInput = builtInput.setConnectionType(null).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(emptyConTypeInput).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(emptyConTypeInput, ResponseCodes.FINAL_ACK_YES,
+ "Service ConnectionType is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerInvalidIfSdncRequestHeaderNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput emptySdncRequestHeader = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptySdncRequestHeader);
+ emptySdncRequestHeader = buildInput.setSdncRequestHeader(null).build();
+ ServiceCreateOutput result = this.serviceHandler.serviceCreate(emptySdncRequestHeader).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ }
+
+ @Test
+ public void createServiceHandlerInvalidIfRequestIdEmpty() throws ExecutionException, InterruptedException {
+ ServiceCreateInput emptyRequestId = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptyRequestId);
+ emptyRequestId = buildInput
+ .setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(emptyRequestId.getSdncRequestHeader()).setRequestId("").build())
+ .build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(emptyRequestId).get().getResult(),
+ ModelMappingUtils
+ .createCreateServiceReply(emptyRequestId, ResponseCodes.FINAL_ACK_YES,
+ "Service sdncRequestHeader 'request-id' is not set", ResponseCodes.RESPONSE_FAILED)
+ .get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerInvalidIfRequestIdNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput nullRequestId = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(nullRequestId);
+ nullRequestId = buildInput
+ .setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(nullRequestId.getSdncRequestHeader()).setRequestId(null).build())
+ .build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(nullRequestId).get().getResult(),
+ ModelMappingUtils
+ .createCreateServiceReply(nullRequestId, ResponseCodes.FINAL_ACK_YES,
+ "Service sdncRequestHeader 'request-id' is not set", ResponseCodes.RESPONSE_FAILED)
+ .get().getResult());
+ }
+
+ @Test
+ public void serviceHandlerInvalidServiceActionIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput emptyServiceAction = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptyServiceAction);
+ emptyServiceAction = buildInput.setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(emptyServiceAction.getSdncRequestHeader()).setRpcAction(null).build())
+ .build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(emptyServiceAction).get().getResult(),
+ ModelMappingUtils
+ .createCreateServiceReply(emptyServiceAction, ResponseCodes.FINAL_ACK_YES,
+ "Service sndc-request-header 'rpc-action' is not set ", ResponseCodes.RESPONSE_FAILED)
+ .get().getResult());
+ }
+
+ @Test
+ public void serviceHandlerInvalidServiceActionIsNotCreate() throws ExecutionException, InterruptedException {
+ ServiceCreateInput notCreateServiceAction = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notCreateServiceAction);
+ notCreateServiceAction = buildInput
+ .setSdncRequestHeader(new SdncRequestHeaderBuilder(notCreateServiceAction.getSdncRequestHeader())
+ .setRpcAction(RpcActions.ServiceFeasibilityCheck).build())
+ .build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(notCreateServiceAction).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notCreateServiceAction, ResponseCodes.FINAL_ACK_YES,
+ "Service sdncRequestHeader rpc-action '"
+ + notCreateServiceAction.getSdncRequestHeader().getRpcAction() + "' not equal to '"
+ + RpcActions.ServiceCreate.name() + "'",
+ ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceAEndIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
+ notValidServiceAEnd = buildInput.setServiceAEnd(null).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
+ "SERVICEAEND is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceZEndIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
+ notValidServiceAEnd = buildInput.setServiceZEnd(null).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
+ "SERVICEZEND is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceAEndRateIsNull() throws ExecutionException, InterruptedException {
+ ServicehandlerImpl servicehandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+ ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
+ notValidServiceAEnd = buildInput.setServiceAEnd(getServiceAEndBuild().setServiceRate(null).build()).build();
+ Assert.assertEquals(servicehandler.serviceCreate(notValidServiceAEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
+ "Service " + ServiceEndpointType.SERVICEAEND + " rate is not set",
+ ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceZEndRateIsNull() throws ExecutionException, InterruptedException {
+ ServicehandlerImpl servicehandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+ ServiceCreateInput notValidServiceZEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceZEnd);
+ notValidServiceZEnd = buildInput.setServiceZEnd(getServiceZEndBuild().setServiceRate(null).build()).build();
+ Assert.assertEquals(servicehandler.serviceCreate(notValidServiceZEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceZEnd, ResponseCodes.FINAL_ACK_YES,
+ "Service " + ServiceEndpointType.SERVICEZEND + " rate is not set",
+ ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceAEndClliIsNull()
+ throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
+ ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
+ notValidServiceAEnd = buildInput.setServiceAEnd(getServiceAEndBuild().setClli(null).build()).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
+ "Service" + ServiceEndpointType.SERVICEAEND + " clli format is not set",
+ ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceZEndClliIsNull()
+ throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
+ ServiceCreateInput notValidServiceZEnd = buildServiceCreateInput();
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceZEnd);
+ notValidServiceZEnd = buildInput.setServiceZEnd(getServiceZEndBuild().setClli(null).build()).build();
+ Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceZEnd).get().getResult(),
+ ModelMappingUtils.createCreateServiceReply(notValidServiceZEnd, ResponseCodes.FINAL_ACK_YES,
+ "Service" + ServiceEndpointType.SERVICEZEND + " clli format is not set",
+ ResponseCodes.RESPONSE_FAILED).get().getResult());
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceAEndAttributes()
+ throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
+ HashMap<String, Object> notValidData = new HashMap<>();
+ notValidData.put("setServiceRate", 0L);
+ notValidData.put("setServiceFormat", null);
+ notValidData.put("setClli", "");
+ notValidData.put("setTxDirection", null);
+ notValidData.put("setRxDirection", null);
+ for (Method method : org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder.class.getDeclaredMethods()) {
+ if (notValidData.containsKey(method.getName())) {
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(buildServiceCreateInput());
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+ method.invoke(serviceAEndBuilder, notValidData.get(method.getName()));
+ ServiceCreateOutput result = this.serviceHandler
+ .serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerNotValidServiceZEndAttributes()
+ throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
+ HashMap<String, Object> notValidData = new HashMap<>();
+ notValidData.put("setServiceRate", 0L);
+ notValidData.put("setServiceFormat", null);
+ notValidData.put("setClli", "");
+ notValidData.put("setTxDirection", null);
+ notValidData.put("setRxDirection", null);
+ for (Method method : org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceZEndBuilder.class.getDeclaredMethods()) {
+ if (notValidData.containsKey(method.getName())) {
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(buildServiceCreateInput());
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceZEndBuilder serviceZEndBuilder = getServiceZEndBuild();
+ method.invoke(serviceZEndBuilder, notValidData.get(method.getName()));
+ ServiceCreateOutput result = this.serviceHandler
+ .serviceCreate(buildInput.setServiceZEnd(serviceZEndBuilder.build()).build()).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerNotValidTxDirectionPort()
+ throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+ List<String> invalidData = Arrays.asList(null, "");
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ for (Method method : PortBuilder.class.getMethods()) {
+ if (method.getName().startsWith("set") && !method.getName().contains("Slot")) {
+ for (Object data : invalidData) {
+ PortBuilder portBuilder = new PortBuilder(
+ serviceCreateInput.getServiceAEnd().getTxDirection().getPort());
+ method.invoke(portBuilder, data);
+ ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(portBuilder.build(),
+ serviceCreateInput.getServiceAEnd().getTxDirection().getLgx());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerTxDirectionPortIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(null,
+ buildServiceCreateInput().getServiceAEnd().getTxDirection().getLgx());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void createServiceHandlerNotValidTxDirectionLgx()
+ throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+ List<String> invalidData = Arrays.asList(null, "");
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ for (Method method : LgxBuilder.class.getMethods()) {
+ if (method.getName().startsWith("set")) {
+ for (Object data : invalidData) {
+ LgxBuilder lgxBuilder = new LgxBuilder(
+ serviceCreateInput.getServiceAEnd().getTxDirection().getLgx());
+ method.invoke(lgxBuilder, data);
+ ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(
+ serviceCreateInput.getServiceAEnd().getTxDirection().getPort(), lgxBuilder.build());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerTxDirectionLgxIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(
+ buildServiceCreateInput().getServiceAEnd().getTxDirection().getPort(), null);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ private ServiceCreateOutput getTxDirectionPortServiceCreateOutput(Port port, Lgx lgx)
+ throws InterruptedException, ExecutionException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+ TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder(
+ serviceCreateInput.getServiceAEnd().getTxDirection());
+ txDirectionBuilder.setPort(port);
+ txDirectionBuilder.setLgx(lgx);
+ serviceAEndBuilder.setTxDirection(txDirectionBuilder.build());
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(serviceCreateInput);
+ ServicehandlerImpl serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+ return serviceHandler.serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get()
+ .getResult();
+ }
+
+ @Test
+ public void createServiceHandlerNotValidRxDirectionPort()
+ throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+ List<String> invalidData = Arrays.asList(null, "");
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ for (Method method : PortBuilder.class.getMethods()) {
+ if (method.getName().startsWith("set") && !method.getName().contains("Slot")) {
+ for (Object data : invalidData) {
+ PortBuilder portBuilder = new PortBuilder(
+ serviceCreateInput.getServiceAEnd().getRxDirection().getPort());
+ method.invoke(portBuilder, data);
+ ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(portBuilder.build(),
+ serviceCreateInput.getServiceAEnd().getRxDirection().getLgx());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerRxDirectionPortIsNull()
+ throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+ ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(null,
+ buildServiceCreateInput().getServiceAEnd().getRxDirection().getLgx());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void createServiceHandlerNotValidRxDirectionLgx()
+ throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+ List<String> invalidData = Arrays.asList(null, "");
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ for (Method method : LgxBuilder.class.getMethods()) {
+ if (method.getName().startsWith("set")) {
+ for (Object data : invalidData) {
+ LgxBuilder lgxBuilder = new LgxBuilder(
+ serviceCreateInput.getServiceAEnd().getRxDirection().getLgx());
+ method.invoke(lgxBuilder, data);
+ ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(
+ serviceCreateInput.getServiceAEnd().getRxDirection().getPort(), lgxBuilder.build());
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(),
+ ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+ }
+ }
+
+ @Test
+ public void createServiceHandlerRxDirectionLgxIsNull() throws ExecutionException, InterruptedException {
+ ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(
+ buildServiceCreateInput().getServiceAEnd().getRxDirection().getPort(), null);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void createServiceHandlerResponseCodesNotPassed() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failed").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ verify(this.pceServiceWrapperMock).performPCE(serviceCreateInput, true);
+ }
+
+ @Test
+ public void createServiceHandlerOperationResultNotPassed() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class)))
+ .thenReturn(OperationResult.failed(
+ "Failed to create service " + serviceCreateInput.getServiceName() + " to Service List"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ verify(this.serviceDataStoreOperationsMock).createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class));
+ }
+
+ @Test
+ public void createServiceHandlerOperationServicePathSaveResultNotPassed()
+ throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class)))
+ .thenReturn(OperationResult.failed("Failed to create servicePath " + serviceCreateInput.getServiceName()
+ + " to ServicePath List"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ verify(this.serviceDataStoreOperationsMock).createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class));
+ }
+
+ @Test
+ public void createServiceHandlerModifyServicePassed() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("successful").build();
+
+ Mockito.when(
+ this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
+ .thenReturn(new ServiceImplementationRequestOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon2).build());
+ Mockito.when(this.serviceDataStoreOperationsMock.modifyService(serviceCreateInput.getServiceName(),
+ State.InService, State.InService)).thenReturn(OperationResult.ok("successful"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+ verify(this.serviceDataStoreOperationsMock).modifyService(serviceCreateInput.getServiceName(), State.InService,
+ State.InService);
+ }
+
+ @Test
+ public void createServiceHandlerModifyServiceNotPassed() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("successful").build();
+
+ Mockito.when(
+ this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
+ .thenReturn(new ServiceImplementationRequestOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon2).build());
+ Mockito.when(this.serviceDataStoreOperationsMock.modifyService(serviceCreateInput.getServiceName(),
+ State.InService, State.InService)).thenReturn(OperationResult.failed("failure"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+ verify(this.serviceDataStoreOperationsMock).modifyService(serviceCreateInput.getServiceName(), State.InService,
+ State.InService);
+ }
+
+ @Test
+ public void createServiceHandlerServiceImplementationNotPassed() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failure").build();
+
+ Mockito.when(
+ this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
+ .thenReturn(new ServiceImplementationRequestOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon2).build());
+ Mockito.when(this.serviceDataStoreOperationsMock.deleteService(serviceCreateInput.getServiceName()))
+ .thenReturn(OperationResult.ok("successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.deleteServicePath(serviceCreateInput.getServiceName()))
+ .thenReturn(OperationResult.ok("successful"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ verify(this.serviceDataStoreOperationsMock).deleteService(serviceCreateInput.getServiceName());
+ verify(this.serviceDataStoreOperationsMock).deleteServicePath(serviceCreateInput.getServiceName());
+ }
+
+ @Test
+ public void createServiceHandlerServiceImplementationNotPassed2() throws ExecutionException, InterruptedException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+ PceTestData.getPCE_simpletopology_test1_result((long) 5))
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
+ .thenReturn(pathComputationRequestOutput);
+ Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
+ any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
+ ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failure").build();
+
+ Mockito.when(
+ this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
+ .thenReturn(new ServiceImplementationRequestOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon2).build());
+ Mockito.when(this.serviceDataStoreOperationsMock.deleteService(serviceCreateInput.getServiceName()))
+ .thenReturn(OperationResult.failed("successful"));
+ Mockito.when(this.serviceDataStoreOperationsMock.deleteServicePath(serviceCreateInput.getServiceName()))
+ .thenReturn(OperationResult.failed("successful"));
+ ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ verify(this.serviceDataStoreOperationsMock).deleteService(serviceCreateInput.getServiceName());
+ verify(this.serviceDataStoreOperationsMock).deleteServicePath(serviceCreateInput.getServiceName());
+ }
+
+ private ServiceCreateOutput getRxDirectionPortServiceCreateOutput(Port port, Lgx lgx)
+ throws InterruptedException, ExecutionException {
+ ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+ RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder(
+ serviceCreateInput.getServiceAEnd().getRxDirection());
+ rxDirectionBuilder.setPort(port);
+ rxDirectionBuilder.setLgx(lgx);
+ serviceAEndBuilder.setRxDirection(rxDirectionBuilder.build());
+ ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(serviceCreateInput);
+ ServicehandlerImpl serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+ return serviceHandler.serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get()
+ .getResult();
+ }
+
+ private static ServiceCreateInput buildServiceCreateInput() {
+
+ ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEnd serviceAEnd = getServiceAEndBuild()
+ .build();
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service
+ .create.input.ServiceZEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-3-2")
+ .setTxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build())
+ .setRxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build())
+ .build();
+
+ builtInput.setCommonId("commonId");
+ builtInput.setConnectionType(ConnectionType.Service);
+ builtInput.setCustomer("Customer");
+ builtInput.setServiceName("service 1");
+ builtInput.setServiceAEnd(serviceAEnd);
+ builtInput.setServiceZEnd(serviceZEnd);
+ builtInput.setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
+ .setRpcAction(RpcActions.ServiceCreate).build());
+
+ return builtInput.build();
+ }
+
+ private static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder getServiceAEndBuild() {
+ return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceAEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setTxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build())
+ .setRxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build());
+ }
+
+ private static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceZEndBuilder getServiceZEndBuild() {
+ return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
+ .ServiceZEndBuilder()
+ .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+ .setTxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build())
+ .setRxDirection(
+ new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
+ .endpoint.RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
+ .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
+ .setPortSubSlot("port subslot").setPortType("port type").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
+ .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
+ .setLgxPortShelf("lgx port shelf").build())
+ .build());
+ }
+
+ @Test
+ public void deleteServiceInvalidIfServiceNameIsEmpty() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder
+ .setServiceDeleteReqInfo(
+ new ServiceDeleteReqInfoBuilder(builder.getServiceDeleteReqInfo()).setServiceName("").build())
+ .build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfServiceNameIsNull() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder
+ .setServiceDeleteReqInfo(
+ new ServiceDeleteReqInfoBuilder(builder.getServiceDeleteReqInfo()).setServiceName(null).build())
+ .build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfSdncRequestHeaderIsNull() throws ExecutionException, InterruptedException {
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder.setSdncRequestHeader(null).build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfSdncRequestHeaderRequestIdIsNull()
+ throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder
+ .setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(builder.getSdncRequestHeader()).setRequestId(null).build())
+ .build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfSdncRequestHeaderRequestIdIsEmpty()
+ throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder.setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(builder.getSdncRequestHeader()).setRequestId("").build()).build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfSdncRequestHeaderServiceActionIsNull()
+ throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder
+ .setSdncRequestHeader(
+ new SdncRequestHeaderBuilder(builder.getSdncRequestHeader()).setRpcAction(null).build())
+ .build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceInvalidIfSdncRequestHeaderServiceActionIsNotDelete()
+ throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
+ serviceDeleteInput = builder.setSdncRequestHeader(new SdncRequestHeaderBuilder(builder.getSdncRequestHeader())
+ .setRpcAction(RpcActions.ServiceCreate).build()).build();
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceIfServiceHandlerCompliancyCheckNotPassed()
+ throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ ComplianceCheckResult res = new ComplianceCheckResult(false, "");
+
+ Mockito.when(this.complianceCheckResultMock.hasPassed()).thenReturn(false);
+
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceNotPresent() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteOutput result = this.serviceHandler.serviceDelete(buildNotPresentServiceDeleteInput()).get()
+ .getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceIfServiceNotPresent() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ Mockito.when(this.servicesOptionalMock.isPresent()).thenReturn(false);
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServiceNotPassed() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
+ Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteInput input = ModelMappingUtils
+ .createServiceDeleteInput(serviceDeleteInput);
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("success").build();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
+ .servicepath.rev170426.ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ @Test
+ public void deleteServicePathNotPassed() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
+ Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteInput input = ModelMappingUtils
+ .createServiceDeleteInput(serviceDeleteInput);
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
+ .servicepath.rev170426.ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.failed("failed"));
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.failed("failed"));
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+ }
+
+ @Test
+ public void deleteServiceOperationNotPassed() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
+ Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteInput input = ModelMappingUtils
+ .createServiceDeleteInput(serviceDeleteInput);
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
+ .servicepath.rev170426.ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.ok("success"));
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.ok("success"));
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+ }
+
+ @Test
+ public void deleteServiceIfServicePresentAndValid() throws ExecutionException, InterruptedException {
+
+ ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+ Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
+ Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteInput input = ModelMappingUtils
+ .createServiceDeleteInput(serviceDeleteInput);
+ ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
+ .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
+ .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
+ .servicepath.rev170426.ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon).build();
+ Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.ok("success"));
+ Mockito.when(this.serviceDataStoreOperationsMock
+ .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
+ .thenReturn(OperationResult.ok("success"));
+ ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+ Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+ ResponseCodes.FINAL_ACK_YES);
+ Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+ }
+
+ private ServiceDeleteInput buildPresentServiceDeleteInput() {
+ ServiceCreateInput serviceInput = buildServiceCreateInput();
+ Future<RpcResult<ServiceCreateOutput>> output0 = this.serviceHandler.serviceCreate(serviceInput);
+ ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("service 1")
+ .setDueDate(datetime).setTailRetention(ServiceDeleteReqInfo.TailRetention.No).build());
+ SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder();
+ sdncBuilder.setNotificationUrl("notification url");
+ sdncBuilder.setRequestId("request 1");
+ sdncBuilder.setRequestSystemId("request system 1");
+ sdncBuilder.setRpcAction(RpcActions.ServiceDelete);
+ deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
+ return deleteInputBldr.build();
+ }
+
+ private ServiceDeleteInput buildNotPresentServiceDeleteInput() {
+ ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("service 2")
+ .setDueDate(datetime).setTailRetention(ServiceDeleteReqInfo.TailRetention.No).build());
+ SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder();
+ sdncBuilder.setNotificationUrl("notification url");
+ sdncBuilder.setRequestId("request 1");
+ sdncBuilder.setRequestSystemId("request system 1");
+ sdncBuilder.setRpcAction(RpcActions.ServiceDelete);
+ deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
+ return deleteInputBldr.build();
+ }
+}