X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fmapping%2FPortMappingVersion121Test.java;h=366c9fc66c899aa77841675a1aa4c0038cd6c32d;hb=1b2f9f488bdd54e577c88c230c4875daccc0b93c;hp=9fb7e77c8cc58a30032648773b76bcfb222f6aed;hpb=68d00560b21cafc8c1438bdbcde09eeb477c436f;p=transportpce.git diff --git a/common/src/test/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121Test.java b/common/src/test/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121Test.java index 9fb7e77c8..366c9fc66 100644 --- a/common/src/test/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121Test.java +++ b/common/src/test/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121Test.java @@ -8,35 +8,39 @@ package org.opendaylight.transportpce.common.mapping; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.Random; import java.util.concurrent.ExecutionException; import org.eclipse.jdt.annotation.NonNull; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.transportpce.common.DataStoreContext; -import org.opendaylight.transportpce.common.DataStoreContextImpl; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException; -import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.Network; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.NetworkBuilder; +import org.opendaylight.transportpce.test.DataStoreContext; +import org.opendaylight.transportpce.test.DataStoreContextImpl; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.NetworkBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.ParentCircuitPackBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports; @@ -47,6 +51,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit. import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksKey; 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.degree.ConnectionPortsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey; @@ -54,6 +59,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.open import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDeviceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMap; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMapBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMapKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Degree; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.DegreeBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.DegreeKey; @@ -66,21 +72,20 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.open import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.Destination; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.DestinationBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.DestinationKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.SourceBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.Interfaces; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.InterfacesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.PartnerPortBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpenROADMOpticalMultiplex; -import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpticalTransport; -import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.Protocols1; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.Protocols1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.LldpBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfig; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfigBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfigKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; @@ -91,58 +96,50 @@ public class PortMappingVersion121Test { private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion121Test.class); private static DataBroker dataBroker; private static DeviceTransactionManager deviceTransactionManager; - private static OpenRoadmInterfaces openRoadmInterfaces; - private static PortMappingVersion121 portMappingVersion121; + private static PortMappingVersion121 portMappingVersion121; + private Random ran = new Random(); - @Before - public void setUp() throws Exception { - //test createMappingData for a xpdr node with 3 network + 1 client + bidirectional & unidirectional ports + @BeforeEach + void setUp() throws Exception { + // test createMappingData for a xpdr node with 3 network + 1 client + bidirectional & unidirectional ports DataStoreContext dataStoreContext = new DataStoreContextImpl(); dataBroker = dataStoreContext.getDataBroker(); deviceTransactionManager = mock(DeviceTransactionManager.class); - openRoadmInterfaces = mock(OpenRoadmInterfaces.class); - portMappingVersion121 = new PortMappingVersion121(dataBroker, - deviceTransactionManager, - openRoadmInterfaces); + portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager); } @Test - public void createMappingDataTestRdm() { - //mock node info + void createMappingDataTestRdm() { + // mock node info final Info info = getInfo2(); - List interfacesList = Arrays.asList(getInterfaces("i1"), - getInterfaces("i2")); + List interfacesList = Arrays.asList(getInterfaces("i1"), getInterfaces("i2")); - //mock 1 bidirectional port for degree + // mock 1 bidirectional port for degree Ports ports = getPortsWithInterfaces(interfacesList, "p1"); List portsList = Arrays.asList(ports); - //mock 2 bidirectional port for SRG - Ports ports1 = getPortsWithInterfaces(interfacesList, "p2"); - List portsList1 = Arrays.asList(ports1); - - //mock 2 unidirectional ports for degree + // mock 2 unidirectional ports for degree Ports ports2 = getPorts("p2", Port.PortQual.RoadmExternal, "c3", "p3", Direction.Rx); Ports ports3 = getPorts("p3", Port.PortQual.RoadmExternal, "c3", "p2", Direction.Tx); - List portsList2 = Arrays.asList(ports2,ports3); + List portsList2 = Arrays.asList(ports2, ports3); - //mock 2 unidirectional ports for degree, reverse direction + // mock 2 unidirectional ports for degree, reverse direction Ports ports22 = getPorts("p22", Port.PortQual.RoadmExternal, "c5", "p33", Direction.Tx); Ports ports33 = getPorts("p33", Port.PortQual.RoadmExternal, "c5", "p22", Direction.Rx); - List portsList22 = Arrays.asList(ports22,ports33); + List portsList22 = Arrays.asList(ports22, ports33); - //mock 2 unidirectional ports for srg + // mock 2 unidirectional ports for srg Ports ports4 = getPorts("p4", Port.PortQual.RoadmExternal, "c4", "p5", Direction.Rx); Ports ports5 = getPorts("p5", Port.PortQual.RoadmExternal, "c4", "p4", Direction.Tx); - List portsList4 = Arrays.asList(ports4,ports5); + List portsList4 = Arrays.asList(ports4, ports5); - //mock 2 unidirectional ports for srg, reverse direction + // mock 2 unidirectional ports for srg, reverse direction Ports ports44 = getPorts("p44", Port.PortQual.RoadmExternal, "c6", "p55", Direction.Tx); Ports ports55 = getPorts("p55", Port.PortQual.RoadmExternal, "c6", "p44", Direction.Rx); - List portsList44 = Arrays.asList(ports44,ports55); + List portsList44 = Arrays.asList(ports44, ports55); - //mock 6 circuit packs + // mock 6 circuit packs final CircuitPacks circuitPackObject = getCircuitPacks(portsList, "c1", "pc1"); final CircuitPacks circuitPackObject2 = getCircuitPacks(portsList, "c2", "pc2"); final CircuitPacks circuitPackObject3 = getCircuitPacks(portsList2, "c3", "pc3"); @@ -150,10 +147,10 @@ public class PortMappingVersion121Test { final CircuitPacks circuitPackObject5 = getCircuitPacks(portsList22, "c5", "pc5"); final CircuitPacks circuitPackObject6 = getCircuitPacks(portsList44, "c6", "pc6"); - //mock 6 connection ports + // mock 6 connection ports ConnectionPorts connectionPorts = getConnectionPorts("c1", "p1"); - List connectionPortsList = new ArrayList(); - connectionPortsList.add(connectionPorts); + Map connectionPortsMap = new HashMap<>(); + connectionPortsMap.put(connectionPorts.key(), connectionPorts); ConnectionPorts connectionPorts2 = getConnectionPorts("c2", "p1"); List connectionPortsList2 = new ArrayList(); @@ -161,9 +158,9 @@ public class PortMappingVersion121Test { ConnectionPorts connectionPorts3 = getConnectionPorts("c3", "p2"); ConnectionPorts connectionPorts4 = getConnectionPorts("c3", "p3"); - List connectionPortsList3 = new ArrayList(); - connectionPortsList3.add(connectionPorts3); - connectionPortsList3.add(connectionPorts4); + Map connectionPortsMap3 = new HashMap<>(); + connectionPortsMap3.put(connectionPorts3.key(), connectionPorts3); + connectionPortsMap3.put(connectionPorts4.key(), connectionPorts4); ConnectionPorts connectionPorts5 = getConnectionPorts("c4", "p4"); ConnectionPorts connectionPorts6 = getConnectionPorts("c4", "p5"); @@ -173,145 +170,167 @@ public class PortMappingVersion121Test { ConnectionPorts connectionPorts33 = getConnectionPorts("c5", "p22"); ConnectionPorts connectionPorts44 = getConnectionPorts("c5", "p33"); - List connectionPortsList33 = new ArrayList(); - connectionPortsList33.add(connectionPorts33); - connectionPortsList33.add(connectionPorts44); + Map connectionPortsMap33 = new HashMap<>(); + connectionPortsMap33.put(connectionPorts33.key(), connectionPorts33); + connectionPortsMap33.put(connectionPorts44.key(), connectionPorts44); ConnectionPorts connectionPorts55 = getConnectionPorts("c6", "p44"); ConnectionPorts connectionPorts66 = getConnectionPorts("c6", "p55"); - List connectionPortsList44 = new ArrayList(); - connectionPortsList44.add(connectionPorts55); - connectionPortsList44.add(connectionPorts66); - + Map connectionPortsMap44 = new HashMap<>(); + connectionPortsMap44.put(connectionPorts55.key(), connectionPorts55); + connectionPortsMap44.put(connectionPorts66.key(), connectionPorts66); - //mock one degree with bidirectional port + // mock one degree with bidirectional port org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .degree.CircuitPacksKey(Uint32.valueOf(1))) .setCircuitPackName("c1").build(); - List circuitPacksList = - new ArrayList(); - circuitPacksList.add(circuitPacks); + Map< + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey, + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksMap = + new HashMap<>(); + circuitPacksMap.put(circuitPacks.key(), circuitPacks); final Degree ordmDegreeObject = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(1)) - .setCircuitPacks(circuitPacksList).setConnectionPorts(connectionPortsList).build(); + .setCircuitPacks(circuitPacksMap).setConnectionPorts(connectionPortsMap).build(); - //mock one srg with bidirectional port + // mock one srg with bidirectional port org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .srg.CircuitPacksKey(Uint32.valueOf(2))) .setCircuitPackName("c2").build(); - List srgCircuitPacksList = - new ArrayList(); - srgCircuitPacksList.add(srgCircuitPacks); + Map< + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksKey, + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksList = + new HashMap<>(); + srgCircuitPacksList.put(srgCircuitPacks.key(), srgCircuitPacks); final SharedRiskGroup ordmSrgObject = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(1)) .setCircuitPacks(srgCircuitPacksList).build(); - //mock one degree with 2 unidirectional ports + // mock one degree with 2 unidirectional ports org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks3 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .degree.CircuitPacksKey(Uint32.valueOf(3))) .setCircuitPackName("c3").build(); List circuitPacksList3 = new ArrayList(); circuitPacksList3.add(circuitPacks3); - final Degree ordmDegreeObject3 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(2)) - .setCircuitPacks(circuitPacksList3).setConnectionPorts(connectionPortsList3).build(); - - //mock one srg with 2 unidirectional ports + Map values = + new HashMap<>(); + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey circuitPackKey = + new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey( + Uint32.valueOf(3)); + values.put(circuitPackKey, circuitPacks3); + final Degree ordmDegreeObject3 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(2)).setCircuitPacks(values) + .setConnectionPorts(connectionPortsMap3).build(); + // mock one srg with 2 unidirectional ports org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks4 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .srg.CircuitPacksKey(Uint32.valueOf(4))) .setCircuitPackName("c4").build(); - List srgCircuitPacksList4 = - new ArrayList(); - srgCircuitPacksList4.add(srgCircuitPacks4); + Map + srgCircuitPacksList4 = new HashMap<>(); + srgCircuitPacksList4.put(srgCircuitPacks4.key(), srgCircuitPacks4); final SharedRiskGroup ordmSrgObject4 = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(2)) .setCircuitPacks(srgCircuitPacksList4).build(); - //mock one degree with unidirectional ports, reverse direction + // mock one degree with unidirectional ports, reverse direction org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks5 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .degree.CircuitPacksKey(Uint32.valueOf(5))) .setCircuitPackName("c5").build(); List circuitPacksList5 = new ArrayList(); circuitPacksList5.add(circuitPacks5); - - final Degree ordmDegreeObject5 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(3)) - .setCircuitPacks(circuitPacksList5).setConnectionPorts(connectionPortsList33).build(); - - //mock one srg with 2 unidirectional ports, reverse direction + values = new HashMap<>(); + circuitPackKey = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey( + Uint32.valueOf(5)); + values.put(circuitPackKey, circuitPacks5); + final Degree ordmDegreeObject5 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(3)).setCircuitPacks(values) + .setConnectionPorts(connectionPortsMap44).build(); + + // mock one srg with 2 unidirectional ports, reverse direction org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks6 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder() + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206 + .srg.CircuitPacksKey(Uint32.valueOf(6))) .setCircuitPackName("c6").build(); - List srgCircuitPacksList6 = - new ArrayList(); - srgCircuitPacksList6.add(srgCircuitPacks6); + Map< + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksKey, + org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksMap6 = + new HashMap<>(); + srgCircuitPacksMap6.put(srgCircuitPacks6.key(), srgCircuitPacks6); final SharedRiskGroup ordmSrgObject6 = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(3)) - .setCircuitPacks(srgCircuitPacksList6).build(); - - //mock lldp configuration - PortConfig portConfig = new PortConfigBuilder().setIfName("i1") - .setAdminStatus(PortConfig.AdminStatus.Txandrx).build(); - List portConfigList = new ArrayList(); - portConfigList.add(portConfig); - - Protocols protocols = - new ProtocolsBuilder().addAugmentation(Protocols1.class, new Protocols1Builder() - .setLldp(new LldpBuilder().setPortConfig(portConfigList).build()).build()).build(); - - //mock responses for deviceTransactionManager calls - InstanceIdentifier deviceIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm - .device.container.org.openroadm.device.Degree.class, new DegreeKey(1)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmDegreeObject)); - - InstanceIdentifier deviceIID3 = - InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm - .device.container.org.openroadm.device.Degree.class, new DegreeKey(2)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, deviceIID3, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmDegreeObject3)); - - InstanceIdentifier deviceIID5 = - InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm - .device.container.org.openroadm.device.Degree.class, new DegreeKey(3)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, deviceIID5, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmDegreeObject5)); - - InstanceIdentifier protocoliid = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Protocols.class); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, protocoliid, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(protocols)); - - Interface interfaceObject = new InterfaceBuilder().setSupportingCircuitPackName("sc1").build(); - InstanceIdentifier interfaceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Interface.class, new InterfaceKey(portConfig.getIfName())); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, interfaceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(interfaceObject)); + .setCircuitPacks(srgCircuitPacksMap6).build(); + + // mock lldp configuration + PortConfig portConfig = + new PortConfigBuilder().setIfName("i1").setAdminStatus(PortConfig.AdminStatus.Txandrx).build(); + Map portConfigMap = new HashMap<>(); + portConfigMap.put(portConfig.key(), portConfig); + Augmentation augmentation = + new Protocols1Builder().setLldp(new LldpBuilder().setPortConfig(portConfigMap).build()).build(); + Protocols protocols = new ProtocolsBuilder().addAugmentation(augmentation).build(); + + // mock responses for deviceTransactionManager calls + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Degree.class, new DegreeKey(Uint16.valueOf(1))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmDegreeObject)); + + InstanceIdentifier deviceIID3 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Degree.class, new DegreeKey(Uint16.valueOf(2))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID3, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmDegreeObject3)); + + InstanceIdentifier deviceIID5 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Degree.class, new DegreeKey(Uint16.valueOf(3))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID5, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmDegreeObject5)); + + InstanceIdentifier protocoliid = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Protocols.class) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, protocoliid, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(protocols)); + + Interface interfaceObject = new InterfaceBuilder().withKey(new InterfaceKey("itf1")) + .setSupportingCircuitPackName("sc1").build(); + InstanceIdentifier interfaceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey(portConfig.getIfName())) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, interfaceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(interfaceObject)); InstanceIdentifier portID = getChild("c1", "p1"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports)); + // mock 2 bidirectional port for SRG + Ports ports1 = getPortsWithInterfaces(interfacesList, "p2"); InstanceIdentifier portID1 = getChild("c2", "p1"); when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID1, @@ -319,157 +338,126 @@ public class PortMappingVersion121Test { .thenReturn(Optional.of(ports1)); InstanceIdentifier portID2 = getChild("c3", "p2"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID2, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports2)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID2, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports2)); InstanceIdentifier portID3 = getChild("c3", "p3"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID3, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports3)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID3, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports3)); InstanceIdentifier portID22 = getChild("c5", "p22"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID22, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports22)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID22, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports22)); InstanceIdentifier portID33 = getChild("c5", "p33"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID33, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports33)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID33, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports33)); InstanceIdentifier portID4 = getChild("c4", "p4"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID4, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports4)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID4, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports4)); InstanceIdentifier portID5 = getChild("c4", "p5"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID5, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports5)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID5, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports5)); InstanceIdentifier portID44 = getChild("c6", "p44"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID44, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports44)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID44, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports44)); InstanceIdentifier portID55 = getChild("c6", "p55"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID55, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports55)); - - InstanceIdentifier infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, infoIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(info)); - - InstanceIdentifier circuitPacksIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c1")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject)); - - InstanceIdentifier circuitPacksIID2 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c2")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID2, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject2)); - - InstanceIdentifier circuitPacksIID3 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c3")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID3, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject3)); - - InstanceIdentifier circuitPacksIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c4")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID4, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject4)); - - InstanceIdentifier circuitPacksIID5 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c5")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID5, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject5)); - - InstanceIdentifier circuitPacksIID6 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c6")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID6, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject6)); - - InstanceIdentifier srgIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(SharedRiskGroup.class, new SharedRiskGroupKey(1)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, srgIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmSrgObject)); - - InstanceIdentifier srgIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(SharedRiskGroup.class, new SharedRiskGroupKey(2)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, srgIID4, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmSrgObject4)); - - InstanceIdentifier srgIID6 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(SharedRiskGroup.class, new SharedRiskGroupKey(3)); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, srgIID6, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ordmSrgObject6)); - - Interface ifc1 = new InterfaceBuilder() - .setType(OpticalTransport.class).build(); - Interface ifc2 = new InterfaceBuilder() - .setType(OpenROADMOpticalMultiplex.class).build(); - try { - when(openRoadmInterfaces.getInterface("node", "i1")) - .thenReturn(Optional.of(ifc1)); - when(openRoadmInterfaces.getInterface("node", "i2")) - .thenReturn(Optional.of(ifc2)); - } catch (OpenRoadmInterfaceException e) { - LOG.error("Failed to mock interafce.", e); - fail(); - } - - //test createMappingData with a node with 3 dgree + 3 srg + bidirectional & unidirectional ports - assertTrue("creating mappingdata for existed node returns true", - portMappingVersion121.createMappingData("node")); - - //verify 2 interfaces were processed - try { - verify(openRoadmInterfaces).getInterface("node", "i1"); - verify(openRoadmInterfaces).getInterface("node", "i2"); - } catch (OpenRoadmInterfaceException e) { - LOG.error("Failed to read interface", e); - fail(); - } - - //assert all portmappings have been created for the roadm node + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID55, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports55)); + + InstanceIdentifier infoIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Info.class) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, infoIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(info)); + + InstanceIdentifier circuitPacksIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c1")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject)); + + InstanceIdentifier circuitPacksIID2 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c2")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject2)); + + InstanceIdentifier circuitPacksIID3 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c3")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject3)); + + InstanceIdentifier circuitPacksIID4 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c4")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject4)); + + InstanceIdentifier circuitPacksIID5 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c5")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID5, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject5)); + + InstanceIdentifier circuitPacksIID6 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c6")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID6, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject6)); + + InstanceIdentifier srgIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(1))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmSrgObject)); + + InstanceIdentifier srgIID4 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(2))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID4, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmSrgObject4)); + + InstanceIdentifier srgIID6 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(3))) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID6, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(ordmSrgObject6)); + + // test createMappingData with a node with 3 dgree + 3 srg + bidirectional & unidirectional ports + assertTrue(portMappingVersion121.createMappingData("node"), + "creating mappingdata for existed node returns true"); + + // assert all portmappings have been created for the roadm node ReadTransaction rr = dataBroker.newReadOnlyTransaction(); - InstanceIdentifier mappingIID = - InstanceIdentifier.create(Network.class); + InstanceIdentifier mappingIID = InstanceIdentifier.create(Network.class); Network network = new NetworkBuilder().build(); try { - Optional optionalNetwork = - rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get(); + Optional optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get(); if (optionalNetwork.isPresent()) { network = optionalNetwork.get(); } @@ -477,173 +465,167 @@ public class PortMappingVersion121Test { } catch (ExecutionException | InterruptedException e) { LOG.error("Failed to read mapping.", e); fail(); - } - List testMappings = new ArrayList<>(List.of("SRG2-PP1-RX", "SRG3-PP1-RX", "SRG1-PP1-TXRX", - "SRG3-PP1-TX", "DEG1-TTP-TXRX", "SRG2-PP1-TX", "DEG2-TTP-RX", "DEG2-TTP-TX", "DEG3-TTP-RX", "DEG3-TTP-TX")); + List testMappings = Arrays.asList("SRG2-PP1-RX", "SRG3-PP1-RX", "SRG1-PP1-TXRX", "SRG3-PP1-TX", + "DEG1-TTP-TXRX", "SRG2-PP1-TX", "DEG2-TTP-RX", "DEG2-TTP-TX", "DEG3-TTP-RX", "DEG3-TTP-TX"); List mappings = new ArrayList<>(); + List nodes = new ArrayList<>(network.nonnullNodes().values()); + List mappingValues = new ArrayList<>(nodes.get(0).nonnullMapping().values()); for (int i = 0; i < testMappings.size(); i++) { - mappings.add(network.getNodes().get(0).getMapping().get(i).getLogicalConnectionPoint()); + mappings.add(mappingValues.get(i).getLogicalConnectionPoint()); } Collections.sort(testMappings); Collections.sort(mappings); - assertTrue("test mapping are equals to mapping" , testMappings.equals(mappings)); + assertEquals(testMappings, mappings, "test mapping are equals to mapping"); - //test updateMapping - assertTrue("update mapping for node returns true", portMappingVersion121 - .updateMapping("node", network.getNodes().get(0).getMapping().get(0))); + // test updateMapping + assertTrue(portMappingVersion121.updateMapping("node", mappingValues.get(0)), + "update mapping for node returns true"); - //test createMapping for non-existent roadm node - assertFalse("create non existed roadm node returns false" , - portMappingVersion121.createMappingData("node2")); + // test createMapping for non-existent roadm node + assertFalse(portMappingVersion121.createMappingData("node2"), "create non existed roadm node returns false"); - //test updateMapping for null roadm node - assertFalse("updating null roadm node returns false", - portMappingVersion121.updateMapping(null, network.getNodes().get(0).getMapping().get(0))); + // test updateMapping for null roadm node + assertFalse(portMappingVersion121.updateMapping(null, mappingValues.get(0)), + "updating null roadm node returns false"); } @Test - public void createMappingDataTestXpdr() { - //mock node info + void createMappingDataTestXpdr() { + // mock node info final Info info = getInfo(); - //mock 1 bidirectional port for network - Ports ports = new PortsBuilder().setPortName("p1").setPortQual(Port.PortQual.XpdrNetwork) + // mock 1 bidirectional port for network + Ports ports = new PortsBuilder().withKey(new PortsKey("p1")).setPortName("p1") + .setPortQual(Port.PortQual.XpdrNetwork) .setPortDirection(Direction.Bidirectional).build(); List portsList = new ArrayList<>(); portsList.add(ports); - //mock 1 bidirectional port for client - Ports ports11 = new PortsBuilder().setPortName("p11").setPortQual(Port.PortQual.XpdrClient) + // mock 1 bidirectional port for client + Ports ports11 = new PortsBuilder().withKey(new PortsKey("p11")).setPortName("p11") + .setPortQual(Port.PortQual.XpdrClient) .setPortDirection(Direction.Bidirectional).build(); List portsList11 = new ArrayList<>(); portsList11.add(ports11); - //mock 2 unidirectional ports for network + // mock 2 unidirectional ports for network Ports ports2 = getPorts("p2", Port.PortQual.XpdrNetwork, "c3", "p3", Direction.Rx); Ports ports3 = getPorts("p3", Port.PortQual.XpdrNetwork, "c3", "p2", Direction.Tx); List portsList2 = new ArrayList<>(); portsList2.add(ports2); portsList2.add(ports3); - - //mock 2 unidirectional ports for network, reverse direction + // mock 2 unidirectional ports for network, reverse direction Ports ports4 = getPorts("p4", Port.PortQual.XpdrNetwork, "c4", "p5", Direction.Tx); Ports ports5 = getPorts("p5", Port.PortQual.XpdrNetwork, "c4", "p4", Direction.Rx); List portsList4 = new ArrayList<>(); portsList4.add(ports4); portsList4.add(ports5); - //mock connection map - Destination destination = new DestinationBuilder().setCircuitPackName("c2").setPortName("p11").build(); + // mock connection map + Destination destination = new DestinationBuilder() + .setCircuitPackName("c2").setPortName("p11").build(); List destinationList = new ArrayList<>(); destinationList.add(destination); ConnectionMap connectionMap = getConnectionMap(destinationList); - List connectionMapList = new ArrayList<>(); - connectionMapList.add(connectionMap); + Map connectionMapMap = new HashMap<>(); + connectionMapMap.put(connectionMap.key(), connectionMap); - //mock reponses for deviceTransactionManager + // mock reponses for deviceTransactionManager InstanceIdentifier portID = getChild("c1", "p1"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports)); InstanceIdentifier portID11 = getChild("c2", "p11"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID11, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports11)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID11, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports11)); InstanceIdentifier portID2 = getChild("c3", "p2"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID2, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports2)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID2, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports2)); InstanceIdentifier portID3 = getChild("c3", "p3"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID3, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports3)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID3, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports3)); InstanceIdentifier portID4 = getChild("c4", "p4"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID4, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports4)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID4, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports4)); InstanceIdentifier portID5 = getChild("c4", "p5"); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, portID5, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(ports5)); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID5, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports5)); - InstanceIdentifier infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, infoIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(info)); + InstanceIdentifier infoIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Info.class) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, infoIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(info)); - //mock 4 circuit packs + // mock 4 circuit packs CircuitPacks circuitPackObject = getCircuitPacks(portsList, "c1", "pc1"); CircuitPacks circuitPackObject2 = getCircuitPacks(portsList11, "c2", "pc2"); CircuitPacks circuitPackObject3 = getCircuitPacks(portsList2, "c3", "pc3"); CircuitPacks circuitPackObject4 = getCircuitPacks(portsList4, "c4", "pc4"); - InstanceIdentifier circuitPacksIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c1")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject)); - - InstanceIdentifier circuitPacksIID2 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c2")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID2, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject2)); - - InstanceIdentifier circuitPacksIID3 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c3")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID3, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject3)); - - InstanceIdentifier circuitPacksIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey("c4")); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, circuitPacksIID4, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(circuitPackObject4)); - - - List circuitPackArrayList = Arrays.asList(circuitPackObject, circuitPackObject2, - circuitPackObject3, circuitPackObject4); - - OrgOpenroadmDevice deviceObject = new OrgOpenroadmDeviceBuilder().setCircuitPacks(circuitPackArrayList) - .setConnectionMap(connectionMapList).build(); - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); - when(deviceTransactionManager.getDataFromDevice("node", - LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) - .thenReturn(Optional.of(deviceObject)); - - - //test createMappingData for xpdr node with 2 network + 1 client + unidirectional & bidirectional ports - assertTrue("returns true when create mapping ", portMappingVersion121.createMappingData("node")); - - //assert all portmappings have been created for the xpdr node + InstanceIdentifier circuitPacksIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c1")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject)); + + InstanceIdentifier circuitPacksIID2 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c2")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject2)); + + InstanceIdentifier circuitPacksIID3 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c3")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject3)); + + InstanceIdentifier circuitPacksIID4 = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey("c4")) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)) + .thenReturn(Optional.of(circuitPackObject4)); + + Map circuitPacksMap = new HashMap<>(); + circuitPacksMap.put(circuitPackObject.key(), circuitPackObject); + circuitPacksMap.put(circuitPackObject2.key(), circuitPackObject2); + circuitPacksMap.put(circuitPackObject3.key(), circuitPackObject3); + circuitPacksMap.put(circuitPackObject4.key(), circuitPackObject4); + + OrgOpenroadmDevice deviceObject = new OrgOpenroadmDeviceBuilder().setCircuitPacks(circuitPacksMap) + .setConnectionMap(connectionMapMap).build(); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); + when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(deviceObject)); + + // test createMappingData for xpdr node with 2 network + 1 client + unidirectional & bidirectional ports + assertTrue(portMappingVersion121.createMappingData("node"), "returns true when create mapping"); + + // assert all portmappings have been created for the xpdr node ReadTransaction rr = dataBroker.newReadOnlyTransaction(); - InstanceIdentifier mappingIID = - InstanceIdentifier.create(Network.class); + InstanceIdentifier mappingIID = InstanceIdentifier.create(Network.class); Network network = new NetworkBuilder().build(); try { - Optional optionalNetwork = - rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get(); + Optional optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get(); if (optionalNetwork.isPresent()) { network = optionalNetwork.get(); } @@ -655,34 +637,39 @@ public class PortMappingVersion121Test { List testMappings = new ArrayList<>(List.of("XPDR1-CLIENT1", "XPDR1-NETWORK5", "XPDR1-NETWORK4", "XPDR1-NETWORK3", "XPDR1-NETWORK2", "XPDR1-NETWORK1")); List mappings = new ArrayList<>(); + List nodes = new ArrayList<>(network.nonnullNodes().values()); + List mappingValues = new ArrayList<>(nodes.get(0).nonnullMapping().values()); for (int i = 0; i < testMappings.size(); i++) { - mappings.add(network.getNodes().get(0).getMapping().get(i).getLogicalConnectionPoint()); + mappings.add(mappingValues.get(i).getLogicalConnectionPoint()); } Collections.sort(testMappings); Collections.sort(mappings); - assertTrue("test mapping are equals to mapping", testMappings.equals(mappings)); - + assertEquals(testMappings, mappings, "test mapping are equals to mapping"); } @NonNull - private KeyedInstanceIdentifier getChild(String c4, String p5) { - return InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey(c4)) - .child(Ports.class, new PortsKey(p5)); + private InstanceIdentifier getChild(String c4, String p5) { + return InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey(c4)) + .child(Ports.class, new PortsKey(p5)) + .build(); } private ConnectionMap getConnectionMap(List destinationList) { + Map destinationMap = new HashMap<>(); + for (Destination destination : destinationList) { + destinationMap.put(destination.key(), destination); + } return new ConnectionMapBuilder().setConnectionMapNumber(Uint32.valueOf(1)) .setSource(new SourceBuilder().setCircuitPackName("c1").setPortName("p1").build()) - .setDestination(destinationList).build(); + .setDestination(destinationMap).build(); } private Info getInfo() { - return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli") - .setNodeType(NodeTypes.Xpdr).setModel("model").setVendor("vendor") - .setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1"))) - .setMaxDegrees(Uint16.valueOf(2)).setMaxSrgs(Uint16.valueOf(2)) - .setNodeId("node").build(); + return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli").setNodeType(NodeTypes.Xpdr) + .setModel("model").setVendor("vendor").setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1"))) + .setMaxDegrees(Uint16.valueOf(2)).setMaxSrgs(Uint16.valueOf(2)).setNodeId("node").build(); } private Ports getPorts(String p2, Port.PortQual roadmExternal, String c3, String p3, Direction rx) { @@ -692,31 +679,32 @@ public class PortMappingVersion121Test { } private ConnectionPorts getConnectionPorts(String c1, String p1) { - return new ConnectionPortsBuilder().setCircuitPackName(c1).setPortName(p1).build(); + return new ConnectionPortsBuilder().setIndex(Uint32.valueOf(ran.nextInt(Integer.MAX_VALUE))) + .setCircuitPackName(c1).setPortName(p1).build(); } private CircuitPacks getCircuitPacks(List portsList, String c1, String pc1) { + Map portsMap = new HashMap<>(); + for (Ports ports : portsList) { + portsMap.put(ports.key(), ports); + } return new CircuitPacksBuilder().setCircuitPackName(c1) - .setParentCircuitPack(new ParentCircuitPackBuilder() - .setCircuitPackName(pc1).build()).setPorts(portsList).build(); + .setParentCircuitPack(new ParentCircuitPackBuilder().setCircuitPackName(pc1).build()).setPorts(portsMap) + .build(); } - private Ports getPortsWithInterfaces(List interfacesList, String p1) { return new PortsBuilder().setPortName(p1).setPortQual(Port.PortQual.RoadmExternal) .setPortDirection(Direction.Bidirectional).setInterfaces(interfacesList).build(); } private Info getInfo2() { - return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli") - .setNodeType(NodeTypes.Rdm).setModel("model").setVendor("vendor") - .setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1"))) - .setMaxDegrees(Uint16.valueOf(3)).setMaxSrgs(Uint16.valueOf(3)) - .build(); + return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli").setNodeType(NodeTypes.Rdm) + .setModel("model").setVendor("vendor").setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1"))) + .setMaxDegrees(Uint16.valueOf(3)).setMaxSrgs(Uint16.valueOf(3)).build(); } private Interfaces getInterfaces(String i1) { return new InterfacesBuilder().setInterfaceName(i1).build(); } - }