Update portmapping YANG model
[transportpce.git] / common / src / test / java / org / opendaylight / transportpce / common / mapping / PortMappingVersion121Test.java
index b54fe0aea8c7bba15d0fc17501871ed42cf247dd..178122182bfc994e281e4869cf49b78f20b7758b 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.common.mapping;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -17,8 +18,12 @@ 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;
@@ -26,14 +31,16 @@ import org.junit.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.rev200429.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.NetworkBuilder;
+import org.opendaylight.transportpce.test.DataStoreContext;
+import org.opendaylight.transportpce.test.DataStoreContextImpl;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.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.Port;
@@ -46,6 +53,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;
@@ -53,6 +61,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;
@@ -65,19 +74,21 @@ 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;
@@ -91,53 +102,55 @@ public class PortMappingVersion121Test {
     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
+        // 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, openRoadmInterfaces);
     }
 
     @Test
     public void createMappingDataTestRdm() {
-        //mock node info
+        // mock node info
         final Info info = getInfo2();
 
-        List<Interfaces> interfacesList = Arrays.asList(getInterfaces("i1"),
-                getInterfaces("i2"));
+        List<Interfaces> interfacesList = Arrays.asList(getInterfaces("i1"), getInterfaces("i2"));
 
-        //mock 1 bidirectional port for degree
-        Ports ports = getPortsWithInterfaces(interfacesList);
+        // mock 1 bidirectional port for degree
+        Ports ports = getPortsWithInterfaces(interfacesList, "p1");
         List<Ports> portsList = Arrays.asList(ports);
 
-        //mock 2 unidirectional ports for degree
+        // mock 2 bidirectional port for SRG
+        Ports ports1 = getPortsWithInterfaces(interfacesList, "p2");
+        List<Ports> portsList1 = Arrays.asList(ports1);
+
+        // 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<Ports> portsList2 = Arrays.asList(ports2,ports3);
+        List<Ports> 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<Ports> portsList22 = Arrays.asList(ports22,ports33);
+        List<Ports> 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<Ports> portsList4 = Arrays.asList(ports4,ports5);
+        List<Ports> 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<Ports> portsList44 = Arrays.asList(ports44,ports55);
+        List<Ports> 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");
@@ -145,10 +158,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<ConnectionPorts> connectionPortsList = new ArrayList<ConnectionPorts>();
-        connectionPortsList.add(connectionPorts);
+        Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap = new HashMap<>();
+        connectionPortsMap.put(connectionPorts.key(), connectionPorts);
 
         ConnectionPorts connectionPorts2 = getConnectionPorts("c2", "p1");
         List<ConnectionPorts> connectionPortsList2 = new ArrayList<ConnectionPorts>();
@@ -156,9 +169,9 @@ public class PortMappingVersion121Test {
 
         ConnectionPorts connectionPorts3 = getConnectionPorts("c3", "p2");
         ConnectionPorts connectionPorts4 = getConnectionPorts("c3", "p3");
-        List<ConnectionPorts> connectionPortsList3 = new ArrayList<ConnectionPorts>();
-        connectionPortsList3.add(connectionPorts3);
-        connectionPortsList3.add(connectionPorts4);
+        Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap3 = new HashMap<>();
+        connectionPortsMap3.put(connectionPorts3.key(), connectionPorts3);
+        connectionPortsMap3.put(connectionPorts4.key(), connectionPorts4);
 
         ConnectionPorts connectionPorts5 = getConnectionPorts("c4", "p4");
         ConnectionPorts connectionPorts6 = getConnectionPorts("c4", "p5");
@@ -168,281 +181,280 @@ public class PortMappingVersion121Test {
 
         ConnectionPorts connectionPorts33 = getConnectionPorts("c5", "p22");
         ConnectionPorts connectionPorts44 = getConnectionPorts("c5", "p33");
-        List<ConnectionPorts> connectionPortsList33 = new ArrayList<ConnectionPorts>();
-        connectionPortsList33.add(connectionPorts33);
-        connectionPortsList33.add(connectionPorts44);
+        Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap33 = new HashMap<>();
+        connectionPortsMap33.put(connectionPorts33.key(), connectionPorts33);
+        connectionPortsMap33.put(connectionPorts44.key(), connectionPorts44);
 
         ConnectionPorts connectionPorts55 = getConnectionPorts("c6", "p44");
         ConnectionPorts connectionPorts66 = getConnectionPorts("c6", "p55");
-        List<ConnectionPorts> connectionPortsList44 = new ArrayList<ConnectionPorts>();
-        connectionPortsList44.add(connectionPorts55);
-        connectionPortsList44.add(connectionPorts66);
-
+        Map<ConnectionPortsKey, ConnectionPorts> 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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksList =
-                new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks>();
-        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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksList =
-                new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>();
-        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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksList3 =
                 new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks>();
         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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey,
+            org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> 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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksList4 =
-                new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>();
-        srgCircuitPacksList4.add(srgCircuitPacks4);
+        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>
+            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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksList5 =
                 new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks>();
         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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksList6 =
-                new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>();
-        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<PortConfig> portConfigList = new ArrayList<PortConfig>();
-        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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm
-                .device.container.org.openroadm.device.Degree> 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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm
-                .device.container.org.openroadm.device.Degree> 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<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm
-                .device.container.org.openroadm.device.Degree> 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<Protocols> 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();
+                .setCircuitPacks(srgCircuitPacksMap6).build();
+
+        // mock lldp configuration
+        PortConfig portConfig =
+                new PortConfigBuilder().setIfName("i1").setAdminStatus(PortConfig.AdminStatus.Txandrx).build();
+        Map<PortConfigKey, PortConfig> portConfigMap = new HashMap<>();
+        portConfigMap.put(portConfig.key(), portConfig);
+        Augmentation<Protocols> augmentation =
+                new Protocols1Builder().setLldp(new LldpBuilder().setPortConfig(portConfigMap).build()).build();
+        Protocols protocols = new ProtocolsBuilder().addAugmentation(augmentation).build();
+
+        // mock responses for deviceTransactionManager calls
+        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device
+            .rev170206.org.openroadm.device.container.org.openroadm.device.Degree> 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(Uint16.valueOf(1)));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(ordmDegreeObject));
+
+        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
+            .org.openroadm.device.container.org.openroadm.device.Degree> 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(Uint16.valueOf(2)));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID3,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(ordmDegreeObject3));
+
+        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
+            .org.openroadm.device.container.org.openroadm.device.Degree> 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(Uint16.valueOf(3)));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID5,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(ordmDegreeObject5));
+
+        InstanceIdentifier<Protocols> 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().withKey(new InterfaceKey("itf1"))
+                .setSupportingCircuitPackName("sc1").build();
         InstanceIdentifier<Interface> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, interfaceIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(interfaceObject));
 
         InstanceIdentifier<Ports> portID = getChild("c1", "p1");
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports));
+
+        InstanceIdentifier<Ports> portID1 = getChild("c2", "p1");
         when(deviceTransactionManager.getDataFromDevice("node",
-                    LogicalDatastoreType.OPERATIONAL, portID,
-                    Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
-                .thenReturn(Optional.of(ports));
+            LogicalDatastoreType.OPERATIONAL, portID1,
+            Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+            .thenReturn(Optional.of(ports1));
 
         InstanceIdentifier<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> portID55 = getChild("c6", "p55");
-        when(deviceTransactionManager.getDataFromDevice("node",
-                    LogicalDatastoreType.OPERATIONAL, portID55,
-                    Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
-                .thenReturn(Optional.of(ports55));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID55,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports55));
 
         InstanceIdentifier<Info> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, infoIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(info));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject2));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject3));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject4));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID5,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject5));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID6,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject6));
 
         InstanceIdentifier<SharedRiskGroup> 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));
+                .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(1)));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(ordmSrgObject));
 
         InstanceIdentifier<SharedRiskGroup> 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));
+                .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(2)));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID4,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(ordmSrgObject4));
 
         InstanceIdentifier<SharedRiskGroup> 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));
+                .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(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()
+        Interface ifc1 = new InterfaceBuilder().withKey(new InterfaceKey("ifc1"))
                 .setType(OpticalTransport.class).build();
-        Interface ifc2 = new InterfaceBuilder()
+        Interface ifc2 = new InterfaceBuilder().withKey(new InterfaceKey("ifc2"))
                 .setType(OpenROADMOpticalMultiplex.class).build();
         try {
-            when(openRoadmInterfaces.getInterface("node", "i1"))
-                    .thenReturn(Optional.of(ifc1));
-            when(openRoadmInterfaces.getInterface("node", "i2"))
-                    .thenReturn(Optional.of(ifc2));
+            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
+        // 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
+        // verify 2 interfaces were processed
         try {
             verify(openRoadmInterfaces).getInterface("node", "i1");
             verify(openRoadmInterfaces).getInterface("node", "i2");
@@ -451,14 +463,12 @@ public class PortMappingVersion121Test {
             fail();
         }
 
-        //assert all portmappings have been created for the roadm node
+        // assert all portmappings have been created for the roadm node
         ReadTransaction rr = dataBroker.newReadOnlyTransaction();
-        InstanceIdentifier<Network> mappingIID =
-                InstanceIdentifier.create(Network.class);
+        InstanceIdentifier<Network> mappingIID = InstanceIdentifier.create(Network.class);
         Network network = new NetworkBuilder().build();
         try {
-            Optional<Network> optionalNetwork =
-                    rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
+            Optional<Network> optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
             if (optionalNetwork.isPresent()) {
                 network = optionalNetwork.get();
             }
@@ -468,112 +478,103 @@ public class PortMappingVersion121Test {
             fail();
 
         }
-        List<String> testMappings = List.of("SRG2-PP1-RX", "SRG3-PP1-RX", "SRG1-PP1-TXRX", "SRG3-PP1-TX",
+        List<String> 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<String> mappings = new ArrayList<>();
+        List<Nodes> nodes = new ArrayList<>(network.nonnullNodes().values());
+        List<Mapping> 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());
         }
-        assertTrue("test mapping are equals to mapping" , testMappings.equals(mappings));
+        Collections.sort(testMappings);
+        Collections.sort(mappings);
+        assertEquals("test mapping are equals to mapping", testMappings, mappings);
 
-        //test updateMapping
-        assertTrue("update mapping for node returns true", portMappingVersion121
-                .updateMapping("node", network.getNodes().get(0).getMapping().get(0)));
+        // test updateMapping
+        assertTrue("update mapping for node returns true",
+                portMappingVersion121.updateMapping("node", mappingValues.get(0)));
 
-        //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("create non existed roadm node returns false", portMappingVersion121.createMappingData("node2"));
 
-        //test updateMapping for null roadm node
+        // test updateMapping for null roadm node
         assertFalse("updating null roadm node returns false",
-                portMappingVersion121.updateMapping(null, network.getNodes().get(0).getMapping().get(0)));
+                portMappingVersion121.updateMapping(null, mappingValues.get(0)));
 
     }
 
     @Test
     public void createMappingDataTestXpdr() {
-        //mock node info
+        // 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Destination> destinationList = new ArrayList<>();
         destinationList.add(destination);
         ConnectionMap connectionMap = getConnectionMap(destinationList);
-        List<ConnectionMap> connectionMapList = new ArrayList<>();
-        connectionMapList.add(connectionMap);
+        Map<ConnectionMapKey, ConnectionMap> connectionMapMap = new HashMap<>();
+        connectionMapMap.put(connectionMap.key(), connectionMap);
 
-        //mock reponses for deviceTransactionManager
+        // mock reponses for deviceTransactionManager
         InstanceIdentifier<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Ports> 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<Info> 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));
+        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");
@@ -581,56 +582,49 @@ public class PortMappingVersion121Test {
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject2));
 
         InstanceIdentifier<CircuitPacks> 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));
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject3));
 
         InstanceIdentifier<CircuitPacks> 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<CircuitPacks> circuitPackArrayList = Arrays.asList(circuitPackObject, circuitPackObject2,
-                circuitPackObject3, circuitPackObject4);
-
-        OrgOpenroadmDevice deviceObject = new OrgOpenroadmDeviceBuilder().setCircuitPacks(circuitPackArrayList)
-                .setConnectionMap(connectionMapList).build();
+        when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4,
+                Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
+                        .thenReturn(Optional.of(circuitPackObject4));
+
+        Map<CircuitPacksKey, CircuitPacks> 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<OrgOpenroadmDevice> 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));
-
+        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
+        // 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
+        // assert all portmappings have been created for the xpdr node
         ReadTransaction rr = dataBroker.newReadOnlyTransaction();
-        InstanceIdentifier<Network> mappingIID =
-                InstanceIdentifier.create(Network.class);
+        InstanceIdentifier<Network> mappingIID = InstanceIdentifier.create(Network.class);
         Network network = new NetworkBuilder().build();
         try {
-            Optional<Network> optionalNetwork =
-                    rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
+            Optional<Network> optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
             if (optionalNetwork.isPresent()) {
                 network = optionalNetwork.get();
             }
@@ -639,35 +633,39 @@ public class PortMappingVersion121Test {
             LOG.error("Failed to read mapping.", e);
             fail();
         }
-        List<String> testMappings = List.of("XPDR1-CLIENT1", "XPDR1-NETWORK5", "XPDR1-NETWORK4", "XPDR1-NETWORK3",
-                "XPDR1-NETWORK2", "XPDR1-NETWORK1");
+        List<String> testMappings = new ArrayList<>(List.of("XPDR1-CLIENT1", "XPDR1-NETWORK5", "XPDR1-NETWORK4",
+            "XPDR1-NETWORK3", "XPDR1-NETWORK2", "XPDR1-NETWORK1"));
         List<String> mappings = new ArrayList<>();
+        List<Nodes> nodes = new ArrayList<>(network.nonnullNodes().values());
+        List<Mapping> 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());
         }
-        assertTrue("test mapping are equals to mapping", testMappings.equals(mappings));
-
+        Collections.sort(testMappings);
+        Collections.sort(mappings);
+        assertEquals("test mapping are equals to mapping", testMappings, mappings);
     }
 
     @NonNull
     private KeyedInstanceIdentifier<Ports, PortsKey> getChild(String c4, String p5) {
-        return InstanceIdentifier.create(OrgOpenroadmDevice.class)
-                .child(CircuitPacks.class, new CircuitPacksKey(c4))
+        return InstanceIdentifier.create(OrgOpenroadmDevice.class).child(CircuitPacks.class, new CircuitPacksKey(c4))
                 .child(Ports.class, new PortsKey(p5));
     }
 
     private ConnectionMap getConnectionMap(List<Destination> destinationList) {
+        Map<DestinationKey, Destination> 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) {
@@ -677,27 +675,29 @@ 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<Ports> portsList, String c1, String pc1) {
+        Map<PortsKey, Ports> 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<Interfaces> interfacesList) {
-        return new PortsBuilder().setPortName("p1").setPortQual(Port.PortQual.RoadmExternal)
+    private Ports getPortsWithInterfaces(List<Interfaces> 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) {