adding some unit tests for PceServiceRPCImpl 99/90199/7
authorShaabanEltanany <shaaban.eltanany.ext@orange.com>
Tue, 2 Jun 2020 04:47:13 +0000 (06:47 +0200)
committerGilles Thouenon <gilles.thouenon@orange.com>
Thu, 18 Jun 2020 07:46:52 +0000 (09:46 +0200)
JIRA: TRNSPRTPCE-209
Signed-off-by: ShaabanEltanany <shaaban.eltanany.ext@orange.com>
Change-Id: I2bfab3053f865191e9e03b588666669e7b08f821

pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java
pce/src/test/java/org/opendaylight/transportpce/pce/impl/PceServiceRPCImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/TransactionUtils.java

index 971bfba41491097e13b99434b6a038e5802c8351..00cf13bb07a1bb6c780b9b39e9cca6c615f24190 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.transportpce.pce.networkanalyzer;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -627,12 +626,10 @@ public class PceCalculation {
         return returnStructure;
     }
 
-    private static void printNodesInfo(Map<NodeId, PceNode> allpcenodes) {
-        Iterator<Map.Entry<NodeId, PceNode>> nodes = allpcenodes.entrySet().iterator();
-        while (nodes.hasNext()) {
-            PceNode pcenode = nodes.next().getValue();
-            List<PceLink> links = pcenode.getOutgoingLinks();
-            LOG.info("In printNodes in node {} : outgoing links {} ", pcenode.getNodeId().getValue(), links);
-        }
+    private static void printNodesInfo(Map<NodeId, PceNode> allPceNodes) {
+        allPceNodes.forEach(((nodeId, pceNode) -> {
+            LOG.info("In printNodes in node {} : outgoing links {} ", pceNode.getNodeId().getValue(),
+                    pceNode.getOutgoingLinks());
+        }));
     }
 }
index 116551f65e4d7064da6c2e2e41d4b50de0e42b7e..609df3c96d0eaa271430a91e569b023b68762c99 100644 (file)
@@ -10,19 +10,20 @@ package org.opendaylight.transportpce.pce.impl;
 
 import static org.junit.Assert.assertNotNull;
 
+import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
 import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
 import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
+import org.opendaylight.transportpce.pce.utils.PceTestData;
+import org.opendaylight.transportpce.pce.utils.PceTestUtils;
+import org.opendaylight.transportpce.pce.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
 
 
 
@@ -32,16 +33,17 @@ public class PceServiceRPCImplTest extends AbstractTest {
     private PathComputationService pathComputationService;
     private NotificationPublishService notificationPublishService;
     private NetworkTransactionImpl networkTransaction;
-    private RequestProcessor requestProcessor;
     private PceServiceRPCImpl pceServiceRPC;
 
     @Before
-    public void setUp() {
+    public void setUp() throws ExecutionException, InterruptedException {
+        PceTestUtils.writeNetworkIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
+                TransactionUtils.getNetworkForSpanLoss());
         notificationPublishService = new NotificationPublishServiceMock();
-        requestProcessor = Mockito.mock(RequestProcessor.class);
-        networkTransaction = new NetworkTransactionImpl(requestProcessor);
+        networkTransaction =  new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker()));
         pathComputationService = new PathComputationServiceImpl(networkTransaction, notificationPublishService);
         pceServiceRPC = new PceServiceRPCImpl(pathComputationService);
+
     }
 
     @Test
@@ -52,9 +54,12 @@ public class PceServiceRPCImplTest extends AbstractTest {
 
     @Test
     public void testPathComputationRequest() {
-        PathComputationRequestInput pathComputationRequestInput =
-                new PathComputationRequestInputBuilder().build();
-        assertNotNull(pceServiceRPC.pathComputationRequest(pathComputationRequestInput));
+        assertNotNull(pceServiceRPC.pathComputationRequest(PceTestData.getPCERequest()));
     }
 
+    @Test
+    public void testPathComputationRequestCoRoutingOrGeneral2() {
+        assertNotNull(pceServiceRPC.pathComputationRequest(
+                PceTestData.getPathComputationRequestInputWithCoRoutingOrGeneral2()));
+    }
 }
index 6e74fd57cee9d032bd2f1724ba64968f1c6e88ca..f32a42d7bcd153af98a48b61297a514204758a1c 100644 (file)
@@ -16,6 +16,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.pce.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder;
@@ -46,9 +47,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
-import org.opendaylight.yangtools.yang.common.Uint32;
-
-
 
 public class PceOpticalNodeTest extends AbstractTest {
 
@@ -93,6 +91,9 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(specificNode,
                 OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initWLlist();
+        Assert.assertTrue(pceOpticalNode.isValid());
+        Assert.assertTrue(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
@@ -100,6 +101,9 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initWLlist();
+        Assert.assertTrue(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
@@ -107,6 +111,9 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.XPONDER, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initWLlist();
+        Assert.assertTrue(pceOpticalNode.isValid());
+        Assert.assertTrue(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
@@ -114,16 +121,21 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initXndrTps();
+        pceOpticalNode.initWLlist();
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
     public void testGetRdmSrgClient() {
-        NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
-        Node specificNode = node1Builder.build();
-        pceOpticalNode = new PceOpticalNode(specificNode,
+        pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initSrgTps();
-        pceOpticalNode.getRdmSrgClient("7");
+        Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
@@ -135,17 +147,21 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode.initSrgTps();
         pceOpticalNode.initWLlist();
         pceOpticalNode.initXndrTps();
-        pceOpticalNode.getRdmSrgClient("7");
+        Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
     public void testGetRdmSrgClientDeg() {
-        NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
-        Node specificNode = node1Builder.build();
-        pceOpticalNode = new PceOpticalNode(specificNode,
+        pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initSrgTps();
-        pceOpticalNode.getRdmSrgClient("7");
+        Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     @Test
@@ -155,7 +171,10 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(specificNode,
                 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initSrgTps();
-        pceOpticalNode.getRdmSrgClient("5");
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
+        Assert.assertNull(pceOpticalNode.getRdmSrgClient("5"));
     }
 
     @Test
@@ -165,7 +184,10 @@ public class PceOpticalNodeTest extends AbstractTest {
         pceOpticalNode = new PceOpticalNode(node,
                 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
         pceOpticalNode.initSrgTps();
-        pceOpticalNode.getRdmSrgClient("2");
+        Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
+        Assert.assertFalse(pceOpticalNode.isValid());
+        Assert.assertFalse(pceOpticalNode.checkWL(12));
+        Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
     }
 
     private List<SupportingNode> geSupportingNodes() {
@@ -256,20 +278,17 @@ public class PceOpticalNodeTest extends AbstractTest {
     private DegreeAttributes getDegAttributes() {
         return (new DegreeAttributesBuilder())
                 .setAvailableWavelengths(
-                        Collections.singletonList(new AvailableWavelengthsBuilder()
-                                .setIndex(20L)
-                                .build()))
+                        Collections.singletonList(new AvailableWavelengthsBuilder().setIndex(20L).build()))
                 .build();
     }
 
     private SrgAttributes getSrgAttributes() {
-        return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
+        return new SrgAttributesBuilder().setAvailableWavelengths(TransactionUtils.create96AvalWaveSrg()).build();
     }
 
     private DegreeAttributes getEmptyDegAttributes() {
         return (new DegreeAttributesBuilder())
-                .setAvailableWavelengths(
-                        new ArrayList<>())
+                .setAvailableWavelengths(new ArrayList<>())
                 .build();
     }
 
@@ -281,14 +300,12 @@ public class PceOpticalNodeTest extends AbstractTest {
     }
 
     private TerminationPointBuilder getTerminationPointBuilder() {
-        return new TerminationPointBuilder()
-                .setTpId(new TpId("2"));
+        return new TerminationPointBuilder().setTpId(new TpId("2"));
     }
 
     private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
 
-        return new TerminationPoint1Builder()
-                .setTpType(openroadmTpType);
+        return new TerminationPoint1Builder().setTpType(openroadmTpType);
 
     }
 
@@ -308,23 +325,4 @@ public class PceOpticalNodeTest extends AbstractTest {
                         .setTailEquipmentId("destNode" + "--" + "destTp").build());
     }
 
-    private static List<org.opendaylight.yang.gen
-            .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
-
-        List<org.opendaylight.yang.gen
-                .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
-                waveList = new ArrayList<>();
-
-        for (int i = 1; i < 97; i++) {
-            org.opendaylight.yang.gen
-                    .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
-                    avalBldr = new org.opendaylight.yang.gen
-                    .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
-                    .setIndex(Uint32.valueOf(i))
-                    .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
-                            .AvailableWavelengthsKey(Uint32.valueOf(i)));
-            waveList.add(avalBldr.build());
-        }
-        return waveList;
-    }
 }
index 02fef6512801fbb6bdb4a35f01701c08f0f9863e..20d904e1e140abe60421053a6795befb5f2828a5 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.transportpce.pce.service;
 
+import java.math.BigDecimal;
+import java.util.Arrays;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -23,6 +25,16 @@ import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.pce.utils.PceTestUtils;
 import org.opendaylight.transportpce.pce.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.PathBandwidth;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.generic.path.properties.PathPropertiesBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.generic.path.properties.path.properties.PathMetricBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.no.path.info.NoPathBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.Response;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.ResponseBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.response.response.type.NoPathCaseBuilder;
+import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.result.response.response.type.PathCaseBuilder;
+
+
 
 public class PathComputationServiceImplTest extends AbstractTest {
 
@@ -52,6 +64,31 @@ public class PathComputationServiceImplTest extends AbstractTest {
 
     }
 
+    @Test
+    public void testPathComputationRequestNoPath() {
+        Response response = new ResponseBuilder().setResponseType(new NoPathCaseBuilder()
+                .setNoPath(new NoPathBuilder().setNoPath("no path").build()).build()).build();
+
+        pathComputationServiceImpl.generateGnpyResponse(response,"path");
+        Assert.assertNotNull(
+                pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCE_test3_request_54()));
+
+    }
+
+    @Test
+    public void testPathComputationRequestPathCase() {
+        Response response = new ResponseBuilder().setResponseType(new PathCaseBuilder()
+                .setPathProperties(new PathPropertiesBuilder().setPathMetric(Arrays.asList(new PathMetricBuilder()
+                .setAccumulativeValue(new BigDecimal(21))
+                        .setMetricType(PathBandwidth.class).build()))
+                .build()).build()).build();
+
+        pathComputationServiceImpl.generateGnpyResponse(response,"path");
+        Assert.assertNotNull(
+                pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCE_test3_request_54()));
+
+    }
+
     @Test(expected = Exception.class)
     public void generateGnpyResponse() throws Exception {
         PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss());
index 194048da82455b288862bdcff7984d2afd8522e0..d355fa2a3a48cd077139a382909f876ad5875efa 100644 (file)
@@ -23,7 +23,10 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.MappingBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengthsBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.Interface;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceKey;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice;
@@ -37,7 +40,12 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev18113
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.SpanBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.CurrentPmList;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.CurrentPmListBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev181019.current.pm.group.CurrentPm;
@@ -66,6 +74,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 public final class TransactionUtils {
 
@@ -105,11 +114,19 @@ public final class TransactionUtils {
         supportingNodeListA.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
                 .setNodeRef(new NodeId("ROADM-A1")).build());
         Node ietfNodeA = new NodeBuilder().setNodeId(new NodeId("ROADM-A1-DEG2")).setSupportingNode(supportingNodeListA)
-                .build();
+                .addAugmentation(Node1.class,getNode1AugImpl()).build();
         List<SupportingNode> supportingNodeListC = new ArrayList<>();
         supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("openroadm-network"))
+
                 .setNodeRef(new NodeId("ROADM-C1")).build());
+        supportingNodeListC.add(new SupportingNodeBuilder().setNetworkRef(new NetworkId("clli-network"))
+                .setNodeRef(new NodeId("ROADM-C2")).build());
+
         Node ietfNodeC = new NodeBuilder().setNodeId(new NodeId("ROADM-C1-DEG1")).setSupportingNode(supportingNodeListC)
+                .addAugmentation(Node1.class,getNode1AugImpl())
+                .addAugmentation(
+                        org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
+                        getNode1())
                 .build();
         List<Node> ietfNodeList = new ArrayList<>();
         ietfNodeList.add(ietfNodeA);
@@ -218,6 +235,10 @@ public final class TransactionUtils {
         return ietfNetworkBldr.build();
     }
 
+    private static Augmentation<Node> getNode1AugImpl() {
+        return  new Node1Builder().setNodeType(OpenroadmNodeType.DEGREE).build();
+    }
+
     public static Mapping getMapping1() {
         return new MappingBuilder().setLogicalConnectionPoint("DEG2-TTP-TXRX").setSupportingOts("OTS-DEG2-TTP-TXRX")
                 .build();
@@ -289,4 +310,47 @@ public final class TransactionUtils {
         currentPmEntryListC.add(currentPmEntryC);
         return Optional.of(new CurrentPmListBuilder().setCurrentPmEntry(currentPmEntryListC).build());
     }
+
+    private static org.opendaylight
+            .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
+        return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
+                .setSrgAttributes(getSrgAttributes())
+                .setDegreeAttributes(getDegAttributes())
+                .build();
+    }
+
+    private static DegreeAttributes getDegAttributes() {
+        return (new DegreeAttributesBuilder())
+                .setAvailableWavelengths(
+                        Collections.singletonList(new AvailableWavelengthsBuilder()
+                                .setIndex(20L)
+                                .build()))
+                .build();
+    }
+
+    private static  SrgAttributes getSrgAttributes() {
+        return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
+    }
+
+    public static List<org.opendaylight.yang.gen
+            .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
+
+        List<org.opendaylight.yang.gen
+                .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
+                waveList = new ArrayList<>();
+
+        for (int i = 1; i < 97; i++) {
+            org.opendaylight.yang.gen
+                    .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
+                    avalBldr = new org.opendaylight.yang.gen
+                    .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
+                    .setIndex(Uint32.valueOf(i))
+                    .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
+                            .AvailableWavelengthsKey(Uint32.valueOf(i)));
+            waveList.add(avalBldr.build());
+        }
+        return waveList;
+    }
+
+
 }