From: AhmedEldeeb50 Date: Tue, 5 May 2020 09:37:50 +0000 (+0200) Subject: add unit test for graph package. X-Git-Tag: 1.2.0~107 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=9a025738536cedcb9a27ae6dd30f2f0ea1cec1c6;p=transportpce.git add unit test for graph package. JIRA: TRNSPRTPCE-209 Signed-off-by: AhmedEldeeb50 Change-Id: Ice69da80f9ff1d8adedda73e70f9aa3c6db4c595 (cherry picked from commit a5f7278347a0e089111233bb81926746ad9f1936) --- diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java index a2e8f2351..b58b676d4 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java @@ -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 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 geSupportingNodes() { - List 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 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 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 - 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 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 index 000000000..097644acd --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphEdgeTest.java @@ -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 index 000000000..5eb93435a --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java @@ -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 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 index 000000000..42b1fe5b8 --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/NodeUtils.java @@ -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 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 geSupportingNodes() { + List 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 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 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 + 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 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(); + + + } +}