X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=servicehandler%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fservicehandler%2Fimpl%2FServicehandlerImplTest.java;h=61141a07c0271b6d024ab72e0fe70011e776b803;hb=6ae7f17afc50195ff2449043e65341e28c1056e3;hp=ffa83e81d177e8cc0c1c9dafd7f6d29b50ae2b84;hpb=f5cb5dd25e896eb6cdcb37c897ee4451f7ec4cbf;p=transportpce.git diff --git a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java index ffa83e81d..61141a07c 100644 --- a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java +++ b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImplTest.java @@ -7,9 +7,14 @@ */ package org.opendaylight.transportpce.servicehandler.impl; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl.LogMessages; @@ -29,6 +34,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.opendaylight.mdsal.binding.api.NotificationPublishService; +import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.pce.service.PathComputationService; @@ -44,56 +50,60 @@ import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOper import org.opendaylight.transportpce.servicehandler.utils.CatalogDataUtils; import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils; import org.opendaylight.transportpce.test.AbstractTest; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRerouteRequestOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRerouteRequestOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfoBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZKey; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.ResourceBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPointBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceSrlgGetInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceSrlgGetOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.ResourceBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPointBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParametersBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.response.parameters.PathDescriptionBuilder; +import org.opendaylight.yangtools.yang.common.ErrorSeverity; +import org.opendaylight.yangtools.yang.common.ErrorTag; +import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.Uint32; @ExtendWith(MockitoExtension.class) public class ServicehandlerImplTest extends AbstractTest { - + @Mock + private RpcProviderService rpcProviderService; @Mock private PathComputationService pathComputationService; @Mock @@ -107,6 +117,8 @@ public class ServicehandlerImplTest extends AbstractTest { @Mock private NetworkListener networkModelListenerImpl; + @Mock + private PathDescription pathDescription; private ServiceDataStoreOperations serviceDataStoreOperations; private CatalogDataStoreOperations catalogDataStoreOperations; private ServiceCreateInput serviceCreateInput; @@ -123,22 +135,51 @@ public class ServicehandlerImplTest extends AbstractTest { executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUM_THREADS)); endSignal = new CountDownLatch(1); this.serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(getNewDataBroker()); - this.catalogDataStoreOperations = new CatalogDataStoreOperationsImpl( - new NetworkTransactionImpl(getDataBroker())); + this.catalogDataStoreOperations = + new CatalogDataStoreOperationsImpl(new NetworkTransactionImpl(getDataBroker())); serviceCreateInput = ServiceDataUtils.buildServiceCreateInput(); serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput(); serviceReconfigureInput = ServiceDataUtils.buildServiceReconfigureInput(); serviceRestorationInput = ServiceDataUtils.buildServiceRestorationInput(); serviceRerouteInput = ServiceDataUtils.buildServiceRerouteInput(); + pathDescription = ServiceDataUtils.createPathDescription(0,1,0,1); + } + + @Test + void testRpcRegistration() { + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations); + verify(rpcProviderService, times(1)).registerRpcImplementations(any()); + } + + @Test + void testNotImplementedRpc() throws InterruptedException, ExecutionException { + ListenableFuture> result = new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceSrlgGet(new ServiceSrlgGetInputBuilder().build()); + result.addListener(() -> endSignal.countDown(), executorService); + endSignal.await(); + assertNotNull(result.get()); + assertFalse(result.get().isSuccessful()); + assertNull(result.get().getResult()); + assertEquals(ErrorType.RPC, result.get().getErrors().get(0).getErrorType()); + assertEquals(ErrorSeverity.ERROR, result.get().getErrors().get(0).getSeverity()); + assertEquals(ErrorTag.OPERATION_NOT_SUPPORTED, result.get().getErrors().get(0).getTag()); + assertEquals("RPC not implemented yet", result.get().getErrors().get(0).getMessage()); } @Test void createServiceShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl - .serviceCreate(new ServiceCreateInputBuilder().build()); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceCreate(new ServiceCreateInputBuilder().build()); result.addListener(() -> endSignal.countDown(), executorService); endSignal.await(); assertEquals( @@ -147,20 +188,20 @@ public class ServicehandlerImplTest extends AbstractTest { } @Test - void createServiceShouldBeFailedWithServiceAlreadyExist() throws ExecutionException, - InterruptedException { + void createServiceShouldBeFailedWithServiceAlreadyExist() throws ExecutionException, InterruptedException { final ServiceDataStoreOperations serviceDSOperations = mock(ServiceDataStoreOperations.class); when(serviceDSOperations.getService(serviceCreateInput.getServiceName())) .thenReturn(Optional.of( new ServicesBuilder() .setServiceName(serviceCreateInput.getServiceName()) .build())); - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDSOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceCreate(serviceCreateInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDSOperations, catalogDataStoreOperations) + .serviceCreate(serviceCreateInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -168,15 +209,15 @@ public class ServicehandlerImplTest extends AbstractTest { } @Test - void createServiceShouldBeSuccessfulWhenPerformPCESuccessful() - throws ExecutionException, InterruptedException { + void createServiceShouldBeSuccessfulWhenPerformPCESuccessful() throws ExecutionException, InterruptedException { when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any())); - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceCreate(serviceCreateInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceCreate(serviceCreateInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_OK, @@ -185,17 +226,18 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void deleteServiceShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceDelete( - new ServiceDeleteInputBuilder() + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceDelete( + new ServiceDeleteInputBuilder() .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder() .setServiceName("") .build()) .build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -204,13 +246,13 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void deleteServiceShouldBeFailedWithNonExistService() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = - new ServicehandlerImpl(pathComputationService, rendererServiceOperations, - notificationPublishService, pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, - serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceDelete(serviceDeleteInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceDelete(serviceDeleteInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -220,29 +262,28 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void deleteServiceShouldBeSuccessForExistingService() throws ExecutionException, InterruptedException { when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any())); - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); serviceDataStoreOperations.createService(serviceCreateInput); - ListenableFuture> result = servicehandlerImpl.serviceDelete(serviceDeleteInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceDelete(serviceDeleteInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_OK, result.get().getResult().getConfigurationResponseCommon().getResponseCode()); } - @Test void serviceFeasibilityCheckShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, + ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(rpcProviderService, pathComputationService, rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = servicehandlerImpl.serviceFeasibilityCheck(new ServiceFeasibilityCheckInputBuilder().build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -253,13 +294,13 @@ public class ServicehandlerImplTest extends AbstractTest { void serviceFeasibilityCheckShouldBeSuccessfulWhenPerformPCESuccessful() throws ExecutionException, InterruptedException { when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any())); - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = - servicehandlerImpl.serviceFeasibilityCheck(ServiceDataUtils.buildServiceFeasibilityCheckInput()); + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceFeasibilityCheck(ServiceDataUtils.buildServiceFeasibilityCheckInput()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_OK, @@ -268,13 +309,13 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void serviceReconfigureShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = - servicehandlerImpl.serviceReconfigure(new ServiceReconfigureInputBuilder().setServiceName("").build()); + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceReconfigure(new ServiceReconfigureInputBuilder().setServiceName("").build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } @@ -282,14 +323,13 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void serviceReconfigureShouldBeFailedWithNonExistService() throws ExecutionException, InterruptedException { //action -> service reconfigure - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceReconfigure( - serviceReconfigureInput); - + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceReconfigure(serviceReconfigureInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } @@ -298,44 +338,43 @@ public class ServicehandlerImplTest extends AbstractTest { // serviceReconfigure is calling service delete method in renderer when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any())); //create service to reconfigure - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); serviceDataStoreOperations.createService(serviceCreateInput); - //service reconfigure test action //ServiceReconfigureInput is created with the same service information that is created before - ListenableFuture> result = servicehandlerImpl.serviceReconfigure( - serviceReconfigureInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceReconfigure(serviceReconfigureInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } @Test void serviceReRestorationShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl - .serviceRestoration(new ServiceRestorationInputBuilder().setServiceName("").build()); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceRestoration(new ServiceRestorationInputBuilder() + .setServiceName("") + .build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } - @Test void serviceRestorationShouldBeFailedWithNonExistService() throws ExecutionException, InterruptedException { //action -> service restore - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.serviceRestoration( - serviceRestorationInput); - + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceRestoration(serviceRestorationInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } @@ -344,31 +383,31 @@ public class ServicehandlerImplTest extends AbstractTest { // serviceRestoration is calling service delete method in renderer when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any())); //create service to restore - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); serviceDataStoreOperations.createService(serviceCreateInput); - //service Restoration test action //ServiceRestorationInput is created with the same service information that is created before - ListenableFuture> result = servicehandlerImpl.serviceRestoration( - serviceRestorationInput); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceRestoration(serviceRestorationInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); } @Test void serviceRerouteShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = - servicehandlerImpl.serviceReroute(new ServiceRerouteInputBuilder().setServiceName("").build()); + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceReroute(new ServiceRerouteInputBuilder() + .setServiceName("") + .build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); - assertEquals( ResponseCodes.RESPONSE_FAILED, result.get().getResult().getConfigurationResponseCommon().getResponseCode()); @@ -377,16 +416,14 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void serviceRerouteShouldBeFailedWithNonExistService() throws ExecutionException, InterruptedException { //action -> service reconfigure - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl - .serviceReroute(serviceRerouteInput); - + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .serviceReroute(serviceRerouteInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); - assertEquals( ResponseCodes.RESPONSE_FAILED, result.get().getResult().getConfigurationResponseCommon().getResponseCode()); @@ -449,16 +486,15 @@ public class ServicehandlerImplTest extends AbstractTest { .build()) .build()) .build()); - serviceDataStoreOperations.createService(serviceCreateInput); - ListenableFuture> result = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, - rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations) + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) .serviceReroute(serviceRerouteInput); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); - assertEquals( ResponseCodes.RESPONSE_OK, result.get().getResult().getConfigurationResponseCommon().getResponseCode()); @@ -466,15 +502,16 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void tempServiceDeleteShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = - servicehandlerImpl.tempServiceDelete(new TempServiceDeleteInputBuilder().setCommonId("").build()); + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .tempServiceDelete(new TempServiceDeleteInputBuilder() + .setCommonId("") + .build()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); - RpcResult rpcResult = result.get(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -486,13 +523,13 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void tempServiceDeleteShouldBeFailedWithNonExistService() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl.tempServiceDelete( - ServiceDataUtils.buildTempServiceDeleteInput()); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .tempServiceDelete(ServiceDataUtils.buildTempServiceDeleteInput()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, @@ -502,18 +539,16 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void tempServiceDeleteShouldBeSuccessForExistingService() throws ExecutionException, InterruptedException { when(rendererServiceOperations.serviceDelete(any(), any())).thenReturn(Futures.immediateFuture(any())); - //create temp service to delete in the temp delete action - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput(); - serviceDataStoreOperations.createTempService(createInput); - - TempServiceDeleteInput input = ServiceDataUtils.buildTempServiceDeleteInput(createInput.getCommonId()); - ListenableFuture> result = servicehandlerImpl.tempServiceDelete(input); + serviceDataStoreOperations.createTempService(createInput, pathDescription); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .tempServiceDelete(ServiceDataUtils.buildTempServiceDeleteInput(createInput.getCommonId())); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_OK, @@ -522,32 +557,55 @@ public class ServicehandlerImplTest extends AbstractTest { @Test void tempServiceCreateShouldBeFailedWithEmptyInput() throws ExecutionException, InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); ListenableFuture> result = - servicehandlerImpl.tempServiceCreate(new TempServiceCreateInputBuilder().build()); + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .tempServiceCreate(new TempServiceCreateInputBuilder().build()); result.addListener(() -> endSignal.countDown(), executorService); + endSignal.await(); + assertEquals( + ResponseCodes.RESPONSE_FAILED, + result.get().getResult().getConfigurationResponseCommon().getResponseCode()); + } + @Test + void tempServiceCreateShouldBeFailedWithServiceAlreadyExist() throws ExecutionException, InterruptedException { + final ServiceDataStoreOperations serviceDSOperations = mock(ServiceDataStoreOperations.class); + when(serviceDSOperations.getTempService(any())) + .thenReturn(Optional.of( + new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list + .ServicesBuilder() + .setCommonId("bad_commonId") + .build())); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDSOperations, catalogDataStoreOperations) + .tempServiceCreate(ServiceDataUtils.buildTempServiceCreateInput()); + result.addListener(() -> endSignal.countDown(), executorService); endSignal.await(); assertEquals( ResponseCodes.RESPONSE_FAILED, result.get().getResult().getConfigurationResponseCommon().getResponseCode()); + assertEquals( + "Service 'Temp (commonId)' already exists in datastore", + result.get().getResult().getConfigurationResponseCommon().getResponseMessage()); } @Test void tempServiceCreateShouldBeSuccessfulWhenPerformPCESuccessful() throws ExecutionException, InterruptedException { when(pathComputationService.pathComputationRequest(any())).thenReturn(Futures.immediateFuture(any())); - - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - - ListenableFuture> result = servicehandlerImpl.tempServiceCreate( - ServiceDataUtils.buildTempServiceCreateInput()); + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .tempServiceCreate(ServiceDataUtils.buildTempServiceCreateInput()); result.addListener(() -> endSignal.countDown(), executorService); - endSignal.await(); assertEquals( ResponseCodes.RESPONSE_OK, @@ -555,60 +613,58 @@ public class ServicehandlerImplTest extends AbstractTest { } @Test - public void addOpenroadmOperationalModesToCatalogShouldBeFailedWithEmptyInput() throws ExecutionException, - InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl + public void addOpenroadmOperationalModesToCatalogShouldBeFailedWithEmptyInput() + throws ExecutionException, InterruptedException { + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) .addOpenroadmOperationalModesToCatalog(new AddOpenroadmOperationalModesToCatalogInputBuilder().build()); - RpcResult rpcResult = result.get(); Assert.assertEquals( - ResponseCodes.RESPONSE_FAILED, rpcResult.getResult().getConfigurationResponseCommon() - .getResponseCode()); + ResponseCodes.RESPONSE_FAILED, + result.get().getResult().getConfigurationResponseCommon().getResponseCode()); } @Test - public void addSpecificOperationalModesToCatalogShouldBeFailedWithEmptyInput() throws ExecutionException, - InterruptedException { - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl + public void addSpecificOperationalModesToCatalogShouldBeFailedWithEmptyInput() + throws ExecutionException, InterruptedException { + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) .addSpecificOperationalModesToCatalog(new AddSpecificOperationalModesToCatalogInputBuilder().build()); - RpcResult rpcResult = result.get(); Assert.assertEquals( - ResponseCodes.RESPONSE_FAILED, rpcResult.getResult().getConfigurationResponseCommon() - .getResponseCode()); + ResponseCodes.RESPONSE_FAILED, + result.get().getResult().getConfigurationResponseCommon().getResponseCode()); } @Test - public void addOpenroadmOperationalModesToCatalogShouldBeSuccessfulWhenAddORToCatalog() throws ExecutionException, - InterruptedException { - AddOpenroadmOperationalModesToCatalogInput input = CatalogDataUtils.buildAddORToCatalogInput(); - - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl - .addOpenroadmOperationalModesToCatalog(input); - RpcResult rpcResult = result.get(); + public void addOpenroadmOperationalModesToCatalogShouldBeSuccessfulWhenAddORToCatalog() + throws ExecutionException, InterruptedException { + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .addOpenroadmOperationalModesToCatalog(CatalogDataUtils.buildAddORToCatalogInput()); Assert.assertEquals( - ResponseCodes.RESPONSE_OK, rpcResult.getResult().getConfigurationResponseCommon().getResponseCode()); + ResponseCodes.RESPONSE_OK, + result.get().getResult().getConfigurationResponseCommon().getResponseCode()); } @Test - public void addSpecificOperationalModesToCatalogShouldBeSuccessfulWhenAddSpecificToCatalog() throws - ExecutionException, InterruptedException { - AddSpecificOperationalModesToCatalogInput input = CatalogDataUtils.buildAddSpecificToCatalogInput(); - - ServicehandlerImpl servicehandlerImpl = new ServicehandlerImpl(pathComputationService, - rendererServiceOperations, notificationPublishService, pceListenerImpl, rendererListenerImpl, - networkModelListenerImpl, serviceDataStoreOperations, catalogDataStoreOperations); - ListenableFuture> result = servicehandlerImpl - .addSpecificOperationalModesToCatalog(input); - RpcResult rpcResult = result.get(); + public void addSpecificOperationalModesToCatalogShouldBeSuccessfulWhenAddSpecificToCatalog() + throws ExecutionException, InterruptedException { + ListenableFuture> result = + new ServicehandlerImpl(rpcProviderService, + pathComputationService, rendererServiceOperations, notificationPublishService, + pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, + serviceDataStoreOperations, catalogDataStoreOperations) + .addSpecificOperationalModesToCatalog(CatalogDataUtils.buildAddSpecificToCatalogInput()); Assert.assertEquals( - ResponseCodes.RESPONSE_OK, rpcResult.getResult().getConfigurationResponseCommon().getResponseCode()); + ResponseCodes.RESPONSE_OK, + result.get().getResult().getConfigurationResponseCommon().getResponseCode()); } -} \ No newline at end of file +}