add unit test for graph package. 73/89673/2
authorAhmedEldeeb50 <ahmed.eldeeb.ext@orange.com>
Tue, 5 May 2020 09:37:50 +0000 (11:37 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Wed, 27 May 2020 08:39:10 +0000 (08:39 +0000)
JIRA: TRNSPRTPCE-209
Signed-off-by: AhmedEldeeb50 <ahmed.eldeeb.ext@orange.com>
Change-Id: Ice69da80f9ff1d8adedda73e70f9aa3c6db4c595
(cherry picked from commit a5f7278347a0e089111233bb81926746ad9f1936)

pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java
pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphEdgeTest.java [new file with mode: 0644]
pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java [new file with mode: 0644]
pce/src/test/java/org/opendaylight/transportpce/pce/utils/NodeUtils.java [new file with mode: 0644]

index a2e8f2351458397e4416485d7a9ea28fc0cb295c..b58b676d45494a2893436d000efe2fb7b027ef77 100644 (file)
@@ -8,15 +8,11 @@
 
 package org.opendaylight.transportpce.pce;
 
-import com.google.common.collect.ImmutableList;
-import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
@@ -25,51 +21,22 @@ import org.opendaylight.transportpce.pce.networkanalyzer.MapUtils;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
+import org.opendaylight.transportpce.pce.utils.NodeUtils;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
-import org.opendaylight.transportpce.pce.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
-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.Link1Builder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
-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.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.network.types.rev181130.OpenroadmTpType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
-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.networks.network.Link;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
-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.binding.Augmentation;
+
 
 public class PcePathDescriptionTests extends AbstractTest {
 
     private PcePathDescription pcePathDescription;
     private PceResult pceResult;
-    private static final String LINK_ID_FORMAT = "%1$s-%2$sto%3$s-%4$s";
     private static final Long WAVE_LENGTH = 20L;
     private PceLink pceLink = null;
     private Link link = null;
@@ -78,13 +45,13 @@ public class PcePathDescriptionTests extends AbstractTest {
     @Before
     public void setUp() {
         // Build Link
-        link = createRoadmToRoadm("OpenROADM-3-2-DEG1",
+        link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
                 "OpenROADM-3-1-DEG1",
                 "DEG1-TTP-TX", "DEG1-TTP-RX").build();
 
         //  Link link=genereateLinkBuilder();
 
-        NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
+        NodeBuilder node1Builder = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes());
         node = node1Builder.build();
 
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
@@ -125,185 +92,4 @@ public class PcePathDescriptionTests extends AbstractTest {
         MapUtils.getSRLGfromLink(link);
     }
 
-    private static LinkBuilder createLinkBuilder(
-            String srcNode, String destNode, String srcTp, String destTp, Link1Builder link1Builder) {
-        SourceBuilder ietfSrcLinkBldr =
-                new SourceBuilder().setSourceNode(new NodeId(srcNode)).setSourceTp(srcTp);
-        //create destination link
-        DestinationBuilder ietfDestLinkBldr =
-                new DestinationBuilder().setDestNode(new NodeId(destNode))
-                        .setDestTp(destTp);
-        LinkId linkId = new LinkId(String.format(LINK_ID_FORMAT, srcNode, srcTp, destNode, destTp));
-
-        LinkId oppositeLinkId = new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1");
-        //For setting up attributes for openRoadm augment
-        OMSAttributesBuilder omsAttributesBuilder =
-                new OMSAttributesBuilder().setOppositeLink(oppositeLinkId);
-
-        // Augementation
-        Augmentation<Link> aug11 = new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130
-                .Link1Builder()
-                .setAdministrativeGroup(Long.valueOf(123))
-                .setAdministrativeState(State.InService)
-                .setAmplified(true)
-                .setLinkLatency(Long.valueOf(123))
-                .setLinkLength(BigDecimal.valueOf(123))
-                .setOMSAttributes(new OMSAttributesBuilder()
-                        .setOppositeLink(new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1"))
-                        .setSpan(new SpanBuilder().build())
-                        .setTEMetric(Long.valueOf(123)).build())
-                .setOperationalState(State.InService).build();
-
-        LinkBuilder linkBuilder = new LinkBuilder()
-                .setSource(ietfSrcLinkBldr.build())
-                .setDestination(ietfDestLinkBldr.build())
-                .setLinkId(linkId)
-                .addAugmentation(Link1.class, aug11)
-                .withKey(new LinkKey(linkId));
-
-        linkBuilder.addAugmentation(
-                org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
-                link1Builder.build());
-        return linkBuilder;
-    }
-
-    private static LinkBuilder createRoadmToRoadm(String srcNode, String destNode, String srcTp, String destTp) {
-        Link1Builder link1Builder = new Link1Builder()
-                .setLinkLatency(30L)
-                .setLinkType(OpenroadmLinkType.ROADMTOROADM);
-        return createLinkBuilder(srcNode, destNode, srcTp, destTp, link1Builder);
-
-    }
-
-    private List<SupportingNode> geSupportingNodes() {
-        List<SupportingNode> supportingNodes1 = new ArrayList<>();
-//
-        supportingNodes1
-                .add(new SupportingNodeBuilder()
-                        .setNodeRef(new NodeId("node 1"))
-                        .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
-                        .build());
-
-        supportingNodes1
-                .add(new SupportingNodeBuilder()
-                        .setNodeRef(new NodeId("node 2"))
-                        .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-                        .build());
-        return supportingNodes1;
-    }
-
-    private NodeBuilder getNodeBuilder(List<SupportingNode> supportingNodes1) {
-
-
-        //update tp of nodes
-        TerminationPointBuilder xpdrTpBldr = new TerminationPointBuilder();
-        TerminationPoint1Builder tp1Bldr = new TerminationPoint1Builder();
-
-        tp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
-        xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
-        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 =
-                new Node1Builder().setTerminationPoint(ImmutableList.of(xpdrTpBldr.build())).build();
-
-
-        return new NodeBuilder()
-                .setNodeId(new NodeId("node 1"))
-                .withKey(new NodeKey(new NodeId("node 1")))
-                .addAugmentation(
-                        Node1.class, node1)
-                .setSupportingNode(supportingNodes1);
-    }
-
-    private Link genereateLinkBuilder() {
-
-        List<LinkConcatenation> linkConcentationValues = new ArrayList<>();
-        LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
-                .setFiberType(LinkConcatenation.FiberType.Truewave)
-                .setPmd(new FiberPmd(BigDecimal.ONE))
-                .setSRLGId(Long.valueOf(1))
-                .setSRLGLength(Long.valueOf(1))
-                .build();
-        LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
-                .setFiberType(LinkConcatenation.FiberType.Truewave)
-                .setPmd(new FiberPmd(BigDecimal.ONE))
-                .setSRLGId(Long.valueOf(1))
-                .setSRLGLength(Long.valueOf(1))
-                .build();
-        linkConcentationValues.add(linkConcatenation);
-        linkConcentationValues.add(linkConcatenation2);
-
-        List<AmplifiedLink>
-                amplifiedLinkValues = new ArrayList<>();
-        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
-                        .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
-                        .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
-                                .amplified.link.attributes.amplified.link.section.element.section.element
-                                .SpanBuilder()
-                                .setSpan(
-                                        new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified
-                                                .link.attributes.amplified.link.section.element.section
-                                                .element.span.SpanBuilder()
-                                                .setAdministrativeState(AdminStates.InService)
-                                                .setAutoSpanloss(true)
-                                                .setClfi("clfi")
-                                                .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
-                                                .setLinkConcatenation(linkConcentationValues)
-                                                .setSpanlossBase(new RatioDB(BigDecimal.ONE))
-                                                .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
-                                                .build())
-                                .build())
-                        .build())
-                        .setSectionEltNumber(Integer.valueOf(1)).build();
-        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
-                        .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
-                        .setSectionElement(
-                                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
-                                        .attributes.amplified.link.section.element.section.element.SpanBuilder()
-                                        .setSpan(
-                                                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
-                                                        .amplified.link
-                                                        .attributes.amplified.link.section.element.section.element.span
-                                                        .SpanBuilder()
-                                                        .setAdministrativeState(AdminStates.InService)
-                                                        .setAutoSpanloss(true)
-                                                        .setClfi("clfi")
-                                                        .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
-                                                        .setLinkConcatenation(linkConcentationValues)
-                                                        .setSpanlossBase(new RatioDB(BigDecimal.ONE))
-                                                        .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
-                                                        .build())
-                                        .build())
-                        .build())
-                        .setSectionEltNumber(Integer.valueOf(1)).build();
-
-        amplifiedLinkValues.add(al);
-        amplifiedLinkValues.add(al2);
-        Augmentation<Link> aug11 =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder()
-                        .setAdministrativeGroup(Long.valueOf(123))
-                        .setAdministrativeState(State.InService)
-                        .setAmplified(true)
-                        .setLinkLatency(Long.valueOf(123))
-                        .setLinkLength(BigDecimal.valueOf(123))
-                        .setOMSAttributes(new OMSAttributesBuilder()
-                                .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues)
-                                        .build())
-                                .setOppositeLink(new LinkId("link 1"))
-                                .setSpan(new SpanBuilder().build())
-                                .setTEMetric(Long.valueOf(123)).build())
-                        .setOperationalState(State.InService).build();
-
-        TransactionUtils.getNetworkForSpanLoss();
-        return new LinkBuilder().setLinkId(new LinkId("OpenROADM-3-1-DEG1-to-OpenROADM-3-2-DEG1"))
-                .setSource(new SourceBuilder().setSourceNode(new NodeId("OpenROADM-3-2-DEG1"))
-                        .setSourceTp("DEG1-TTP-TX").build())
-                .setDestination(
-                        new DestinationBuilder().setDestNode(new NodeId("OpenROADM-3-1-DEG1"))
-                                .setDestTp("DEG1-TTP-RX").build())
-                .addAugmentation(Link1.class, aug11)
-                .build();
-
-
-    }
 }
\ No newline at end of file
diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphEdgeTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphEdgeTest.java
new file mode 100644 (file)
index 0000000..097644a
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright © 2020 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.pce.graph;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
+import org.opendaylight.transportpce.pce.utils.NodeUtils;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
+
+public class PceGraphEdgeTest {
+
+    private Link link = null;
+    private Node node = null;
+    private PceLink pceLink = null;
+    private PceGraphEdge pceGraphEdge = null;
+
+
+    @Before
+    public void setUp() {
+        // Build Link
+        link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
+                "OpenROADM-3-1-DEG1",
+                "DEG1-TTP-TX", "DEG1-TTP-RX").build();
+
+        //  Link link=genereateLinkBuilder();
+        node =  NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes()).build();
+
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+                OpenroadmNodeType.SRG, new NodeId("OpenROADM-3-2-DEG1"), ServiceFormat.Ethernet,
+                "DEGREE");
+        PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
+                OpenroadmNodeType.SRG, new NodeId("OpenROADM-3-1-DEG1"), ServiceFormat.Ethernet,
+                "DEGREE");
+
+        pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
+        pceLink.setClient("XPONDER-CLIENT");
+
+        pceGraphEdge = new PceGraphEdge(pceLink);
+    }
+
+    @Test
+    public void getLink() {
+        Assert.assertEquals(pceGraphEdge.link().getLinkId(),
+                pceLink.getLinkId());
+    }
+}
diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java
new file mode 100644 (file)
index 0000000..5eb9343
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright © 2020 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.pce.graph;
+
+import java.util.Map;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.transportpce.pce.constraints.PceConstraints;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
+import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
+import org.opendaylight.transportpce.pce.utils.NodeUtils;
+import org.opendaylight.transportpce.pce.utils.PceTestData;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
+
+
+public class PceGraphTest {
+
+    private Link link = null;
+    private Node node = null;
+    private PceLink pceLink = null;
+    private PceGraph pceGraph = null;
+    private PathComputationRequestInput requestInput = PceTestData.getPCE_test2_request_54();
+    private PceConstraints pceHardConstraints = null;
+    private PceResult rc = null;
+    private PceOpticalNode pceOpticalNode = null;
+    private PceOpticalNode pceOpticalNode2 = null;
+    private Map<NodeId, PceNode> allPceNodes = null;
+
+    @Before
+    public void setUp() {
+        // Build Link
+        link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
+                "OpenROADM-3-1-DEG1",
+                "DEG1-TTP-TX", "DEG1-TTP-RX").build();
+
+        node =  NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes()).build();
+
+        pceOpticalNode = new PceOpticalNode(node,
+                OpenroadmNodeType.SRG, new NodeId("OpenROADM-3-2-DEG1"), ServiceFormat.Ethernet,
+                "DEGREE");
+
+        pceOpticalNode2 = new PceOpticalNode(node,
+                OpenroadmNodeType.SRG, new NodeId("OpenROADM-3-1-DEG1"), ServiceFormat.Ethernet,
+                "DEGREE");
+
+        pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
+        pceLink.setClient("XPONDER-CLIENT");
+
+        pceLink.getDestId();
+        pceOpticalNode.addOutgoingLink(pceLink);
+
+        // init PceHardContraints
+        pceHardConstraints = new PceConstraints();
+        // pceHardConstraints.setp
+        allPceNodes = Map.of(new NodeId("OpenROADM-3-2-DEG1"), pceOpticalNode,
+                new NodeId("OpenROADM-3-1-DEG1"), pceOpticalNode2);
+        rc = new PceResult();
+        pceGraph = new PceGraph(pceOpticalNode, pceOpticalNode2, allPceNodes,
+                pceHardConstraints,
+                null, rc,
+                "ODU4");
+    }
+
+    @Test
+    public void clacPath() {
+
+        Assert.assertEquals(pceGraph.calcPath(), true);
+    }
+
+    @Test
+    public void clacPathFalse() {
+        pceGraph = new PceGraph(pceOpticalNode, pceOpticalNode2, allPceNodes,
+                pceHardConstraints,
+                null, rc,
+                "100GE");
+
+        Assert.assertEquals(pceGraph.calcPath(), false);
+    }
+
+    @Test(expected = Exception.class)
+    public void clacPath1GE() {
+        pceGraph = new PceGraph(pceOpticalNode, pceOpticalNode2, allPceNodes,
+                pceHardConstraints,
+                null, rc,
+                "10GE");
+
+        Assert.assertEquals(pceGraph.calcPath(), false);
+    }
+}
+
diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/NodeUtils.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/NodeUtils.java
new file mode 100644 (file)
index 0000000..42b1fe5
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * Copyright © 2020 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.transportpce.pce.utils;
+
+import com.google.common.collect.ImmutableList;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import org.opendaylight.transportpce.common.NetworkUtils;
+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.Link1Builder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
+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.types.rev181130.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
+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.networks.network.Link;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
+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.binding.Augmentation;
+
+public class NodeUtils {
+
+    private static final String LINK_ID_FORMAT = "%1$s-%2$sto%3$s-%4$s";
+
+    public static LinkBuilder createLinkBuilder(
+            String srcNode, String destNode, String srcTp, String destTp, Link1Builder link1Builder) {
+        SourceBuilder ietfSrcLinkBldr =
+                new SourceBuilder().setSourceNode(new NodeId(srcNode)).setSourceTp(srcTp);
+        //create destination link
+        DestinationBuilder ietfDestLinkBldr =
+                new DestinationBuilder().setDestNode(new NodeId(destNode)).setDestTp(destTp);
+        LinkId linkId = new LinkId(String.format(LINK_ID_FORMAT, srcNode, srcTp, destNode, destTp));
+
+        LinkId oppositeLinkId = new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1");
+        //For setting up attributes for openRoadm augment
+        OMSAttributesBuilder omsAttributesBuilder =
+                new OMSAttributesBuilder().setOppositeLink(oppositeLinkId);
+
+        // Augementation
+        Augmentation<Link> aug11 = new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130
+                .Link1Builder()
+                .setAdministrativeGroup(Long.valueOf(123))
+                .setAdministrativeState(State.InService)
+                .setAmplified(true)
+                .setLinkLatency(Long.valueOf(123))
+                .setLinkLength(BigDecimal.valueOf(123))
+                .setOMSAttributes(new OMSAttributesBuilder()
+                        .setOppositeLink(new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1"))
+                        .setSpan(new SpanBuilder().build())
+                        .setTEMetric(Long.valueOf(123)).build())
+                .setOperationalState(State.InService).build();
+
+        LinkBuilder linkBuilder = new LinkBuilder()
+                .setSource(ietfSrcLinkBldr.build())
+                .setDestination(ietfDestLinkBldr.build())
+                .setLinkId(linkId)
+                .addAugmentation(Link1.class, aug11)
+                .withKey(new LinkKey(linkId));
+
+        linkBuilder.addAugmentation(
+                org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class,
+                link1Builder.build());
+        return linkBuilder;
+    }
+
+    public static LinkBuilder createRoadmToRoadm(String srcNode, String destNode, String srcTp, String destTp) {
+        Link1Builder link1Builder = new Link1Builder()
+                .setLinkLatency(30L)
+                .setLinkType(OpenroadmLinkType.ROADMTOROADM);
+        return createLinkBuilder(srcNode, destNode, srcTp, destTp, link1Builder);
+
+    }
+
+    public static List<SupportingNode> geSupportingNodes() {
+        List<SupportingNode> supportingNodes1 = new ArrayList<>();
+//
+        supportingNodes1
+                .add(new SupportingNodeBuilder()
+                        .setNodeRef(new NodeId("node 1"))
+                        .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
+                        .build());
+
+        supportingNodes1
+                .add(new SupportingNodeBuilder()
+                        .setNodeRef(new NodeId("node 2"))
+                        .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+                        .build());
+        return supportingNodes1;
+    }
+
+    public static NodeBuilder getNodeBuilder(List<SupportingNode> supportingNodes1) {
+
+
+        //update tp of nodes
+        TerminationPointBuilder xpdrTpBldr = new TerminationPointBuilder();
+        TerminationPoint1Builder tp1Bldr = new TerminationPoint1Builder();
+
+        tp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
+        xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
+        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 =
+                new Node1Builder().setTerminationPoint(ImmutableList.of(xpdrTpBldr.build())).build();
+
+
+        return new NodeBuilder()
+                .setNodeId(new NodeId("node 1"))
+                .withKey(new NodeKey(new NodeId("node 1")))
+                .addAugmentation(
+                        Node1.class, node1)
+                .setSupportingNode(supportingNodes1);
+    }
+
+    private Link genereateLinkBuilder() {
+
+        List<LinkConcatenation> linkConcentationValues = new ArrayList<>();
+        LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
+                .setFiberType(LinkConcatenation.FiberType.Truewave)
+                .setPmd(new FiberPmd(BigDecimal.ONE))
+                .setSRLGId(Long.valueOf(1))
+                .setSRLGLength(Long.valueOf(1))
+                .build();
+        LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
+                .setFiberType(LinkConcatenation.FiberType.Truewave)
+                .setPmd(new FiberPmd(BigDecimal.ONE))
+                .setSRLGId(Long.valueOf(1))
+                .setSRLGLength(Long.valueOf(1))
+                .build();
+        linkConcentationValues.add(linkConcatenation);
+        linkConcentationValues.add(linkConcatenation2);
+
+        List<AmplifiedLink>
+                amplifiedLinkValues = new ArrayList<>();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+                        .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+                        .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
+                                .amplified.link.attributes.amplified.link.section.element.section.element
+                                .SpanBuilder()
+                                .setSpan(
+                                        new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified
+                                                .link.attributes.amplified.link.section.element.section
+                                                .element.span.SpanBuilder()
+                                                .setAdministrativeState(AdminStates.InService)
+                                                .setAutoSpanloss(true)
+                                                .setClfi("clfi")
+                                                .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
+                                                .setLinkConcatenation(linkConcentationValues)
+                                                .setSpanlossBase(new RatioDB(BigDecimal.ONE))
+                                                .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
+                                                .build())
+                                .build())
+                        .build())
+                        .setSectionEltNumber(Integer.valueOf(1)).build();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 =
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
+                        .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+                        .setSectionElement(
+                                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
+                                        .attributes.amplified.link.section.element.section.element.SpanBuilder()
+                                        .setSpan(
+                                                new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
+                                                        .amplified.link
+                                                        .attributes.amplified.link.section.element.section.element.span
+                                                        .SpanBuilder()
+                                                        .setAdministrativeState(AdminStates.InService)
+                                                        .setAutoSpanloss(true)
+                                                        .setClfi("clfi")
+                                                        .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
+                                                        .setLinkConcatenation(linkConcentationValues)
+                                                        .setSpanlossBase(new RatioDB(BigDecimal.ONE))
+                                                        .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
+                                                        .build())
+                                        .build())
+                        .build())
+                        .setSectionEltNumber(Integer.valueOf(1)).build();
+
+        amplifiedLinkValues.add(al);
+        amplifiedLinkValues.add(al2);
+        Augmentation<Link> aug11 =
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder()
+                        .setAdministrativeGroup(Long.valueOf(123))
+                        .setAdministrativeState(State.InService)
+                        .setAmplified(true)
+                        .setLinkLatency(Long.valueOf(123))
+                        .setLinkLength(BigDecimal.valueOf(123))
+                        .setOMSAttributes(new OMSAttributesBuilder()
+                                .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues)
+                                        .build())
+                                .setOppositeLink(new LinkId("link 1"))
+                                .setSpan(new SpanBuilder().build())
+                                .setTEMetric(Long.valueOf(123)).build())
+                        .setOperationalState(State.InService).build();
+
+        TransactionUtils.getNetworkForSpanLoss();
+        return new LinkBuilder().setLinkId(new LinkId("OpenROADM-3-1-DEG1-to-OpenROADM-3-2-DEG1"))
+                .setSource(
+                        new SourceBuilder().setSourceNode(new NodeId("OpenROADM-3-2-DEG1"))
+                        .setSourceTp("DEG1-TTP-TX").build())
+                .setDestination(
+                        new DestinationBuilder().setDestNode(new NodeId("OpenROADM-3-1-DEG1"))
+                                .setDestTp("DEG1-TTP-RX").build())
+                .addAugmentation(Link1.class, aug11)
+                .build();
+
+
+    }
+}