From 7a6def422ca9048a794b946da9217a74c0242f7d Mon Sep 17 00:00:00 2001 From: AhmedEldeeb50 Date: Mon, 6 Jul 2020 17:59:32 +0200 Subject: [PATCH] add unit tests for crossconnect package JIRA: TRNSPRTPCE-276 Signed-off-by: AhmedEldeeb50 Change-Id: I4b2048c9272322bcc48b950f4db11afeb82494f8 --- .../crossconnect/CrossConnectImpl121Test.java | 105 +++++++++++++++ .../crossconnect/CrossConnectImpl221Test.java | 121 ++++++++++++++++++ .../crossconnect/CrossConnectImplTest.java | 99 ++++++++++++++ .../common/fixedflex/FixedFlexImplTest.java | 56 ++++++++ 4 files changed, 381 insertions(+) create mode 100644 common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121Test.java create mode 100644 common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221Test.java create mode 100644 common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImplTest.java create mode 100644 common/src/test/java/org/opendaylight/transportpce/common/fixedflex/FixedFlexImplTest.java diff --git a/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121Test.java b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121Test.java new file mode 100644 index 000000000..6aefb288b --- /dev/null +++ b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl121Test.java @@ -0,0 +1,105 @@ +/* + * Copyright © 2020 Orange. 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.common.crossconnect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.math.BigDecimal; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.MountPoint; +import org.opendaylight.mdsal.binding.api.MountPointService; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.transportpce.common.Timeouts; +import org.opendaylight.transportpce.common.device.DeviceTransaction; +import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPorts; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnections; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +public class CrossConnectImpl121Test { + private CrossConnectImpl121 crossConnectImpl121 = null; + private DeviceTransactionManager deviceTransactionManager = null; + + private MountPointService mountPointServiceMock = mock(MountPointService.class); + private MountPoint mountPointMock = mock(MountPoint.class); + private DataBroker dataBrokerMock = mock(DataBroker.class); + private ReadWriteTransaction rwTransactionMock = mock(ReadWriteTransaction.class); + + @Before + public void setup() { + deviceTransactionManager = mock(DeviceTransactionManager.class); + crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager); + + //mock responses for deviceTransactionManager calls + InstanceIdentifier deviceIID = + InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey("1")); + when(deviceTransactionManager.getDataFromDevice("deviceId", + LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(mock(RoadmConnections.class))); + } + + @Test + public void getCrossConnectTest() { + Optional res = + crossConnectImpl121.getCrossConnect("deviceId", "1"); + Assert.assertTrue("Optional object should have a value", res.isPresent()); + } + + @Test + public void postCrossConnectTest() { + Mockito.when(mountPointServiceMock.getMountPoint(any())).thenReturn(Optional.of(mountPointMock)); + Mockito.when(mountPointMock.getService(any())).thenReturn(Optional.of(dataBrokerMock)); + Mockito.when(dataBrokerMock.newReadWriteTransaction()).thenReturn(rwTransactionMock); + Mockito.when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture()); + deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000); + crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager); + Optional res = crossConnectImpl121.postCrossConnect("deviceId", 100L, "srcTp", "destTp"); + Assert.assertEquals(res.get(), "srcTp-destTp-100"); + } + + // TODO : fix commit + @Test(expected = NullPointerException.class) + public void setPowerLevelTest() { + InstanceIdentifier deviceIID = + InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey("1")); + when(deviceTransactionManager.getDataFromDevice("deviceId", + LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(mock(RoadmConnections.class))); + + Mockito.when(deviceTransactionManager.getDeviceTransaction("deviceId")) + .thenReturn(CompletableFuture.completedFuture(Optional.of(mock(DeviceTransaction.class)))); + boolean res = crossConnectImpl121 + .setPowerLevel("deviceId", OpticalControlMode.Power, new BigDecimal(100), "1"); + + Assert.assertTrue("set Level should be true", true); + } + + private ConnectionPorts getConnectionPorts(String c1, String p1) { + return new ConnectionPortsBuilder().setCircuitPackName(c1).setPortName(p1).build(); + } +} diff --git a/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221Test.java b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221Test.java new file mode 100644 index 000000000..3e4d35a53 --- /dev/null +++ b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImpl221Test.java @@ -0,0 +1,121 @@ +/* + * Copyright © 2020 Orange. 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.common.crossconnect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.MountPoint; +import org.opendaylight.mdsal.binding.api.MountPointService; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.transportpce.common.Timeouts; +import org.opendaylight.transportpce.common.device.DeviceTransaction; +import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.NodesBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.NodesKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPorts; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.RoadmConnections; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev200615.otn.renderer.input.Nodes; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +public class CrossConnectImpl221Test { + private CrossConnectImpl221 crossConnectImpl221 = null; + private DeviceTransactionManager deviceTransactionManager = null; + + private MountPointService mountPointServiceMock = mock(MountPointService.class); + private MountPoint mountPointMock = mock(MountPoint.class); + private DataBroker dataBrokerMock = mock(DataBroker.class); + private ReadWriteTransaction rwTransactionMock = mock(ReadWriteTransaction.class); + + @Before + public void setup() { + deviceTransactionManager = mock(DeviceTransactionManager.class); + crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager); + + //mock responses for deviceTransactionManager calls + InstanceIdentifier deviceIID = + InstanceIdentifier + .create(OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey("1")); + + Mockito.when(deviceTransactionManager.getDataFromDevice("deviceId", + LogicalDatastoreType.CONFIGURATION, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(mock(RoadmConnections.class))); + } + + @Test + public void getCrossConnectTest() { + Optional res = + crossConnectImpl221.getCrossConnect("deviceId", "1"); + Assert.assertTrue("Optional object should have a value", res.isPresent()); + } + + @Test + public void postCrossConnectTest() { + Mockito.when(mountPointServiceMock.getMountPoint(any())).thenReturn(Optional.of(mountPointMock)); + Mockito.when(mountPointMock.getService(any())).thenReturn(Optional.of(dataBrokerMock)); + Mockito.when(dataBrokerMock.newReadWriteTransaction()).thenReturn(rwTransactionMock); + Mockito.when(rwTransactionMock.commit()).thenReturn(FluentFutures.immediateNullFluentFuture()); + deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointServiceMock, 3000); + crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager); + Optional res = crossConnectImpl221.postCrossConnect("deviceId", 100L, "srcTp", "destTp"); + Assert.assertEquals(res.get(), "srcTp-destTp-100"); + } + + @Test(expected = NullPointerException.class) + public void setPowerLevelTest() { + InstanceIdentifier deviceIID = + InstanceIdentifier.create(OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey("1")); + Mockito.when(deviceTransactionManager.getDataFromDevice("deviceId", + LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(mock(RoadmConnections.class))); + + Mockito.when(deviceTransactionManager.getDeviceTransaction("deviceId")) + .thenReturn(CompletableFuture.completedFuture(Optional.of(mock(DeviceTransaction.class)))); + boolean res = crossConnectImpl221 + .setPowerLevel("deviceId", OpticalControlMode.GainLoss, new BigDecimal(100), "1"); + + Assert.assertTrue("set Level should be true", true); + } + + @Test(expected = NullPointerException.class) + public void postOtnCrossConnect() { + NodesBuilder nodesBldr = new NodesBuilder().withKey(new NodesKey("nodeId")).setNodeId("nodeId"); + Nodes nodes = Mockito.mock(Nodes.class); + Mockito.when(nodes.getNodeId()).thenReturn("nodeId"); + Mockito.when(deviceTransactionManager.getDeviceTransaction(any())) + .thenReturn(CompletableFuture.completedFuture(Optional.of(mock(DeviceTransaction.class)))); + Optional res = crossConnectImpl221.postOtnCrossConnect(List.of("src1", "src2"), nodes); + Assert.assertTrue("Optional value should have a value", res.isPresent()); + } + + + private ConnectionPorts getConnectionPorts(String c1, String p1) { + return new ConnectionPortsBuilder().setCircuitPackName(c1).setPortName(p1).build(); + } +} diff --git a/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImplTest.java b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImplTest.java new file mode 100644 index 000000000..d9ce5feb0 --- /dev/null +++ b/common/src/test/java/org/opendaylight/transportpce/common/crossconnect/CrossConnectImplTest.java @@ -0,0 +1,99 @@ +/* + * Copyright © 2020 Orange. 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.common.crossconnect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.mapping.MappingUtils; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnections; + +public class CrossConnectImplTest { + + private CrossConnectImpl crossConnectImpl = null; + private static DeviceTransactionManager deviceTransactionManager; + private CrossConnectImpl121 crossConnectImpl121 = null; + private CrossConnectImpl221 crossConnectImpl221 = null; + private MappingUtils mappingUtils = null; + + @Before + public void setUp() { + deviceTransactionManager = mock(DeviceTransactionManager.class); + crossConnectImpl121 = mock(CrossConnectImpl121.class); + crossConnectImpl221 = mock(CrossConnectImpl221.class); + mappingUtils = mock(MappingUtils.class); + crossConnectImpl = + new CrossConnectImpl(deviceTransactionManager, mappingUtils, crossConnectImpl121, crossConnectImpl221); + } + + @Before + public void init() { + + } + + + @Test + public void getCrossConnect() { + Optional res = crossConnectImpl.getCrossConnect("100", "122"); + Assert.assertFalse("Optional object should be empty",res.isPresent()); + + String devV121 = "(http://org/openroadm/device?revision=2017-02-06)org-openroadm-device"; + when(mappingUtils.getOpenRoadmVersion(any())).thenReturn(devV121); + when(crossConnectImpl121.getCrossConnect(any(), any())).thenReturn(Optional.of(mock(RoadmConnections.class))); + res = crossConnectImpl.getCrossConnect("100", "122"); + Assert.assertTrue("Optional object should have a value",res.isPresent()); + } + + @Test + public void postCrossConnect() { + Optional res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp"); + Assert.assertFalse("Optional object should be empty",res.isPresent()); + + String devV121 = "(http://org/openroadm/device?revision=2017-02-06)org-openroadm-device"; + when(mappingUtils.getOpenRoadmVersion(any())).thenReturn(devV121); + when(crossConnectImpl121.postCrossConnect(any(), any(), any(), any())) + .thenReturn(Optional.of("Value")); + res = crossConnectImpl.postCrossConnect("100", 100L, "srcTp", "destTp"); + Assert.assertTrue("Optional object should have a value",res.isPresent()); + } + + @Test + public void deleteCrossConnect() { + List res = crossConnectImpl.deleteCrossConnect("100", "srcTp", true); + Assert.assertNull(res); + + String devV121 = "(http://org/openroadm/device?revision=2017-02-06)org-openroadm-device"; + when(mappingUtils.getOpenRoadmVersion(any())).thenReturn(devV121); + when(crossConnectImpl121.deleteCrossConnect(any(), any())) + .thenReturn(List.of("val1")); + res = crossConnectImpl.deleteCrossConnect("100", "srcTp", true); + Assert.assertEquals(res.size(), 1); + } + + @Test + public void setPowerLevel() { + boolean res = crossConnectImpl.setPowerLevel("100", "srcTp", new BigDecimal(100), "power"); + Assert.assertFalse("Power Level sgould be false",res); + + String devV121 = "(http://org/openroadm/device?revision=2017-02-06)org-openroadm-device"; + when(mappingUtils.getOpenRoadmVersion(any())).thenReturn(devV121); + when(crossConnectImpl121.setPowerLevel(any(), any(), any(), any())) + .thenReturn(true); + res = crossConnectImpl.setPowerLevel("100", "srcTp", new BigDecimal(100), "power"); + Assert.assertTrue(true); + } +} \ No newline at end of file diff --git a/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/FixedFlexImplTest.java b/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/FixedFlexImplTest.java new file mode 100644 index 000000000..521433570 --- /dev/null +++ b/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/FixedFlexImplTest.java @@ -0,0 +1,56 @@ +/* + * Copyright © 2020 Orange. 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.common.fixedflex; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class FixedFlexImplTest { + + FixedFlexImpl fixedFlex = null; + + @Before + public void setUp() { + fixedFlex = new FixedFlexImpl(); + } + + @Test + public void getFixedFlexWaveMappingTest() { + FixedFlexImpl res = fixedFlex.getFixedFlexWaveMapping(10L); + + Assert.assertEquals(res.getIndex(),10); + Assert.assertEquals(res.getCenterFrequency(),195.65,.5); + Assert.assertEquals(res.getStart(),195.625,.5); + Assert.assertEquals(res.getStop(),195.675,.5); + Assert.assertEquals(res.getWavelength(),1532.37,.5); + } + + @Test + public void fixedFlexImpl1() { + FixedFlexImpl res = new FixedFlexImpl(10L); + + Assert.assertEquals(res.getIndex(),0); + Assert.assertEquals(res.getCenterFrequency(),195.65,.5); + Assert.assertEquals(res.getStart(),195.625,.5); + Assert.assertEquals(res.getStop(),195.675,.5); + Assert.assertEquals(res.getWavelength(),1532.37,.5); + } + + @Test + public void fixedFlexImpl2() { + FixedFlexImpl res = new FixedFlexImpl(1L, 19, 19, 19, 12); + + Assert.assertEquals(res.getIndex(),1L); + Assert.assertEquals(res.getCenterFrequency(),19,.5); + Assert.assertEquals(res.getStart(),19,.5); + Assert.assertEquals(res.getStop(),19,.5); + Assert.assertEquals(res.getWavelength(),12,.5); + } +} -- 2.36.6