X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=renderer%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Frenderer%2Fprovisiondevice%2FRendererServiceOperationsImplDeleteTest.java;h=2cc20417a5445aa2a728bb5334aad55de871d3f7;hb=refs%2Fchanges%2F93%2F96193%2F16;hp=820982fb0ef4fad2121c0877c691bd975b1038fe;hpb=dec29c25aaaa8fc10cc8cf979ecb6ce194de20f3;p=transportpce.git diff --git a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplDeleteTest.java b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplDeleteTest.java index 820982fb0..2cc20417a 100644 --- a/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplDeleteTest.java +++ b/renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImplDeleteTest.java @@ -9,102 +9,68 @@ package org.opendaylight.transportpce.renderer.provisiondevice; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; - +import java.util.Collections; import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; +import java.util.concurrent.TimeoutException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.binding.api.MountPoint; -import org.opendaylight.controller.md.sal.binding.api.MountPointService; -import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.MountPoint; +import org.opendaylight.mdsal.binding.api.MountPointService; +import org.opendaylight.mdsal.binding.api.NotificationPublishService; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.ResponseCodes; +import org.opendaylight.transportpce.common.StringConstants; import org.opendaylight.transportpce.common.crossconnect.CrossConnect; -import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl; -import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl121; -import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl22; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl; -import org.opendaylight.transportpce.common.mapping.MappingUtils; -import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl; import org.opendaylight.transportpce.common.mapping.PortMapping; -import org.opendaylight.transportpce.common.mapping.PortMappingImpl; -import org.opendaylight.transportpce.common.mapping.PortMappingVersion121; -import org.opendaylight.transportpce.common.mapping.PortMappingVersion22; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl22; -import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService; -import org.opendaylight.transportpce.renderer.NetworkModelWavelengthServiceImpl; -import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory; -import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub; -import org.opendaylight.transportpce.renderer.stub.MountPointStub; import org.opendaylight.transportpce.renderer.stub.OlmServiceStub; import org.opendaylight.transportpce.renderer.utils.NotificationPublishServiceMock; import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils; import org.opendaylight.transportpce.renderer.utils.TransactionUtils; import org.opendaylight.transportpce.test.AbstractTest; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.ServicePowerTurndownOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.TransportpceOlmService; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.handler.header.ServiceHandlerHeaderBuilder; +import org.opendaylight.transportpce.test.stub.MountPointServiceStub; +import org.opendaylight.transportpce.test.stub.MountPointStub; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.ServiceAEnd; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.ServiceAEndBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.endpoint.TxDirectionBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint32; public class RendererServiceOperationsImplDeleteTest extends AbstractTest { - private static final int NUMBER_OF_THREADS = 4; private DeviceTransactionManager deviceTransactionManager; private RendererServiceOperationsImpl rendererServiceOperations; - private OpenRoadmInterfaces openRoadmInterfaces; - private DeviceRendererService deviceRenderer; - private PortMapping portMapping; - private CrossConnect crossConnect; - private NetworkModelWavelengthService networkModelWavelengthService; + private final DeviceRendererService deviceRenderer = Mockito.mock(DeviceRendererService.class); + private final OtnDeviceRendererService otnDeviceRendererService = Mockito.mock(OtnDeviceRendererService.class); + private final PortMapping portMapping = Mockito.mock(PortMapping.class); + private final CrossConnect crossConnect = Mockito.mock(CrossConnect.class); + private final ReadTransaction readTransaction = Mockito.mock(ReadTransaction.class); private TransportpceOlmService olmService; - private MappingUtils mappingUtils; - private OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121; - private OpenRoadmInterfacesImpl22 openRoadmInterfacesImpl22; - private PortMappingVersion22 portMappingVersion22; - private PortMappingVersion121 portMappingVersion121; - private CrossConnectImpl121 crossConnectImpl121; - private CrossConnectImpl22 crossConnectImpl22; private void setMountPoint(MountPoint mountPoint) { MountPointService mountPointService = new MountPointServiceStub(mountPoint); this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000); - this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager); - this.openRoadmInterfacesImpl22 = new OpenRoadmInterfacesImpl22(deviceTransactionManager); - this.mappingUtils = new MappingUtilsImpl(getDataBroker()); - this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils, - openRoadmInterfacesImpl121, openRoadmInterfacesImpl22); - this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces); - this.portMappingVersion22 = - new PortMappingVersion22(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces); - this.portMappingVersion121 = - new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces); - this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion22, this.mappingUtils, - this.portMappingVersion121); - this.crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager); - this.crossConnectImpl22 = new CrossConnectImpl22(deviceTransactionManager); - this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121, - this.crossConnectImpl22); - this.crossConnect = Mockito.spy(crossConnect); - OpenRoadmInterfaceFactory openRoadmInterfaceFactory = - new OpenRoadmInterfaceFactory(portMapping, openRoadmInterfaces); - this.deviceRenderer = new DeviceRendererServiceImpl(this.getDataBroker(), - this.deviceTransactionManager, openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect, - this.portMapping); } @Before @@ -112,89 +78,150 @@ public class RendererServiceOperationsImplDeleteTest extends AbstractTest { setMountPoint(new MountPointStub(getDataBroker())); this.olmService = new OlmServiceStub(); this.olmService = Mockito.spy(this.olmService); - ListeningExecutorService executor = - MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS)); - this.networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(getDataBroker()); NotificationPublishService notificationPublishService = new NotificationPublishServiceMock(); - this.rendererServiceOperations = new RendererServiceOperationsImpl(this.deviceRenderer, olmService, - getDataBroker(), this.networkModelWavelengthService, notificationPublishService); - + this.rendererServiceOperations = new RendererServiceOperationsImpl(deviceRenderer, + otnDeviceRendererService, olmService, getDataBroker(), notificationPublishService, portMapping); } @Test - public void serviceDeleteOperationPp() throws ExecutionException, InterruptedException { + public void serviceDeleteOperationPp() throws ExecutionException, InterruptedException, TimeoutException { writePathDescription(); ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder(); serviceDeleteInputBuilder.setServiceName("service 1"); serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder()) - .setRequestId("request1").build()); - Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString()); + .setRequestId("request1").build()); + Mockito.doReturn(Collections.emptyList()).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), + Mockito.anyString(), Mockito.eq(false)); + ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(Uint32.valueOf("100")) + .setTxDirection(new TxDirectionBuilder().setPort(new PortBuilder().setPortName("port-name").build()) + .build()) + .setNodeId(new NodeIdType("optical-node1")) + .build(); + Services service = new ServicesBuilder() + .setServiceName("service 1") + .setConnectionType(ConnectionType.Service) + .setServiceAEnd(serviceAEnd) + .build(); + Mockito.when(portMapping.getMapping(Mockito.anyString(), Mockito.anyString())) + .thenReturn(null); + Mockito.when(deviceRenderer.deleteServicePath(Mockito.any())) + .thenReturn(new ServicePathOutputBuilder().setSuccess(true).build()); ServiceDeleteOutput serviceDeleteOutput - = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build()).get(); + = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build(), service).get(); Assert.assertEquals(ResponseCodes.RESPONSE_OK, - serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); - Mockito.verify(this.crossConnect, Mockito.times(2)).deleteCrossConnect(Mockito.any(), Mockito.any()); + serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); } @Test public void serviceDeleteOperationNoDescription() throws InterruptedException, ExecutionException { ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder(); serviceDeleteInputBuilder.setServiceName("service 1"); + Services service = new ServicesBuilder() + .setServiceName("service 1") + .setServiceAEnd(new ServiceAEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(Uint32.valueOf(100)) + .setTxDirection(new TxDirectionBuilder().setPort(new PortBuilder().setPortName("port-name").build()) + .build()) + .setNodeId(new NodeIdType("optical-node1")) + .build()) + .build(); + Mockito.when(portMapping.getMapping(Mockito.anyString(), Mockito.anyString())) + .thenReturn(null); + Mockito.doReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) + .setResult("Failed").build()).buildFuture()).when(this.olmService).servicePowerTurndown(Mockito.any()); ServiceDeleteOutput serviceDeleteOutput - = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build()).get(); + = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build(), service).get(); Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, - serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); - Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.any(), Mockito.any()); + serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); + Mockito.verify(this.crossConnect, Mockito.times(0)) + .deleteCrossConnect(Mockito.any(), Mockito.any(), Mockito.eq(false)); } @Test public void serviceDeleteOperationTearDownFailedAtoZ() throws ExecutionException, InterruptedException { - Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString()); + Mockito.doReturn(Collections.emptyList()).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), + Mockito.anyString(), Mockito.eq(false)); Mockito.doReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) - .setResult("Failed").build()).buildFuture()).when(this.olmService).servicePowerTurndown(Mockito.any()); + .setResult("Failed").build()).buildFuture()).when(this.olmService).servicePowerTurndown(Mockito.any()); writePathDescription(); ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder(); serviceDeleteInputBuilder.setServiceName("service 1"); serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder()) .setRequestId("request1").build()); + ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(Uint32.valueOf("100")) + .setTxDirection(new TxDirectionBuilder().setPort(new PortBuilder().setPortName("port-name").build()) + .build()) + .setNodeId(new NodeIdType("optical-node1")) + .build(); + Services service = new ServicesBuilder() + .setServiceName("service 1") + .setConnectionType(ConnectionType.Service) + .setServiceAEnd(serviceAEnd) + .build(); + Mockito.when(portMapping.getMapping(Mockito.anyString(), Mockito.anyString())) + .thenReturn(null); ListenableFuture serviceDeleteOutput - = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build()); + = this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build(), service); ServiceDeleteOutput output = serviceDeleteOutput.get(); Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, output.getConfigurationResponseCommon().getResponseCode()); - Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any()); - Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any()); + Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any(), + Mockito.eq(false)); + Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any(), + Mockito.eq(false)); } @Test public void serviceDeleteOperationTearDownFailedZtoA() throws ExecutionException, InterruptedException { - Mockito.doReturn(true).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), Mockito.anyString()); + Mockito.doReturn(Collections.emptyList()).when(this.crossConnect).deleteCrossConnect(Mockito.anyString(), + Mockito.anyString(), Mockito.eq(false)); Mockito.when(this.olmService.servicePowerTurndown(Mockito.any())) - .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) - .setResult("Success").build()).buildFuture()) - .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) - .setResult("Failed").build()).buildFuture()); + .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) + .setResult("Success").build()).buildFuture()) + .thenReturn(RpcResultBuilder.success((new ServicePowerTurndownOutputBuilder()) + .setResult("Failed").build()).buildFuture()); writePathDescription(); ServiceDeleteInputBuilder serviceDeleteInputBuilder = new ServiceDeleteInputBuilder(); serviceDeleteInputBuilder.setServiceName("service 1"); serviceDeleteInputBuilder.setServiceHandlerHeader((new ServiceHandlerHeaderBuilder()) - .setRequestId("request1").build()); + .setRequestId("request1").build()); + ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(Uint32.valueOf("100")) + .setTxDirection(new TxDirectionBuilder().setPort(new PortBuilder().setPortName("port-name").build()) + .build()) + .setNodeId(new NodeIdType("optical-node1")) + .build(); + Services service = new ServicesBuilder() + .setServiceName("service 1") + .setConnectionType(ConnectionType.Service) + .setServiceAEnd(serviceAEnd) + .build(); + Mockito.when(portMapping.getMapping(Mockito.anyString(), Mockito.anyString())) + .thenReturn(null); ServiceDeleteOutput serviceDeleteOutput = - this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build()).get(); + this.rendererServiceOperations.serviceDelete(serviceDeleteInputBuilder.build(), service).get(); Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, - serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); + serviceDeleteOutput.getConfigurationResponseCommon().getResponseCode()); Mockito.verify(this.olmService, Mockito.times(2)).servicePowerTurndown(Mockito.any()); - Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any()); - Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any()); + Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node1"), Mockito.any(), + Mockito.eq(false)); + Mockito.verify(this.crossConnect, Mockito.times(0)).deleteCrossConnect(Mockito.eq("node2"), Mockito.any(), + Mockito.eq(false)); } private void writePathDescription() throws ExecutionException, InterruptedException { ServicePathsBuilder servicePathsBuilder = new ServicePathsBuilder(); servicePathsBuilder.setPathDescription(ServiceDeleteDataUtils - .createTransactionPathDescription(OpenRoadmInterfacesImpl.PP_TOKEN)); + .createTransactionPathDescription(StringConstants.PP_TOKEN)); servicePathsBuilder.setServiceAEnd(ServiceDeleteDataUtils.getServiceAEndBuild().build()) .setServiceZEnd(ServiceDeleteDataUtils.getServiceZEndBuild().build()); servicePathsBuilder.withKey(new ServicePathsKey("service 1")); @@ -203,10 +230,10 @@ public class RendererServiceOperationsImplDeleteTest extends AbstractTest { InstanceIdentifier servicePathsInstanceIdentifier = InstanceIdentifier.create( ServicePathList.class).child(ServicePaths.class, new ServicePathsKey("service 1")); TransactionUtils.writeTransaction( - this.deviceTransactionManager, - "node1" + OpenRoadmInterfacesImpl.PP_TOKEN, - LogicalDatastoreType.OPERATIONAL, - servicePathsInstanceIdentifier, - servicePathsBuilder.build()); + this.deviceTransactionManager, + "node1" + StringConstants.PP_TOKEN, + LogicalDatastoreType.OPERATIONAL, + servicePathsInstanceIdentifier, + servicePathsBuilder.build()); } }