From e631441244bd5437554d1f85ff4b591ed4a54e7a Mon Sep 17 00:00:00 2001 From: AhmedEldeeb50 Date: Wed, 15 Apr 2020 20:28:52 +0200 Subject: [PATCH] Fix previous and add new PCE Junit test cases - add unit tests for PceLink JIRA TRNSPRTPCE-209 Signed-off-by: AhmedEldeeb50 Change-Id: I01b5c172481f56691f1ef8dc17837354262154b7 --- .../pce/PceComplianceCheckResultTest.java | 3 +- .../pce/PceComplianceCheckTest.java | 43 ++ .../pce/PcePathDescriptionTest.java | 112 +++++ .../pce/PceSendingPceRPCsTest.java | 38 +- .../constraints/PceConstraintsCalcTest.java | 46 ++ .../pce/constraints/PceConstraintsTest.java | 26 + .../pce/gnpy/GnpyUtilitiesImplTest.java | 48 ++ .../networkanalyzer/PceCalculationTest.java | 4 +- .../pce/networkanalyzer/PceLinkTest.java | 291 +++++++++++ .../PathComputationServiceImplTest.java | 25 +- .../transportpce/pce/utils/PceTestData.java | 475 ++++++++++++------ 11 files changed, 942 insertions(+), 169 deletions(-) create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java create mode 100644 pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckResultTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckResultTest.java index a7e1f17fa..622ee130d 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckResultTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckResultTest.java @@ -5,11 +5,10 @@ * 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; +package org.opendaylight.transportpce.pce; import org.junit.Assert; import org.junit.Test; -import org.opendaylight.transportpce.pce.PceComplianceCheckResult; public class PceComplianceCheckResultTest { diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckTest.java new file mode 100644 index 000000000..7b82fd4e0 --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PceComplianceCheckTest.java @@ -0,0 +1,43 @@ +/* + * Copyright © 2020 Orange Labs, 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; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import org.opendaylight.transportpce.pce.utils.PceTestData; +import org.opendaylight.transportpce.test.AbstractTest; + +public class PceComplianceCheckTest extends AbstractTest { + + + @Before + public void setup() { + + } + + @Test + public void testCheckFalse() { + Assert.assertFalse( + PceComplianceCheck.check(PceTestData.getEmptyPCERequest()).hasPassed()); + } + + @Test + public void testCheckTrue() { + Assert.assertTrue( + PceComplianceCheck.check(PceTestData.getEmptyPCERequestServiceNameWithRequestId()).hasPassed()); + } + + @Test + public void testCheckFalseWihtoutRequestID() { + Assert.assertFalse( + PceComplianceCheck.check(PceTestData.getEmptyPCERequestServiceNameWithOutRequestId()).hasPassed()); + } +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTest.java new file mode 100644 index 000000000..fbd6c270f --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTest.java @@ -0,0 +1,112 @@ +/* + * 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; + +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.pce.networkanalyzer.PceLink; +import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode; +import org.opendaylight.transportpce.pce.networkanalyzer.PceResult; +import org.opendaylight.transportpce.test.AbstractTest; +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.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.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; + + + +public class PcePathDescriptionTest extends AbstractTest { + + private List pathAtoZ = null; + private List pathZtoA = null; + private PceResult rc; + private Map allPceLinks = null; + private static PcePathDescription pcePathDescription = null; + private static final String LINK_ID_FORMAT = "%1$s-%2$sto%3$s-%4$s"; + private PceSendingPceRPCs pceSendingPceRPCs; + + @Before + public void setup() { + + Link link = createLink("srcNode", "destNode", "srcTp", "destTp").build(); + + + /*PceOtnNode pceOtnNode = + new PceOtnNode(node, OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OTM.getName(), "test");*/ + //PceLink pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode); + /* rc = new PceResult(); + + pcePathDescription = new PcePathDescription(List.of(pceLink), new HashMap<>(), rc);*/ + } + + + @Test + public void buildPceOpticalNodeRoadmTest() { + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceOpticalNode.initSrgTps(); + pceOpticalNode.initXndrTps(); + pceOpticalNode.initWLlist(); + Assert.assertFalse(pceOpticalNode.isValid()); + Assert.assertFalse(pceOpticalNode.checkWL(12)); + Assert.assertTrue(pceOpticalNode.checkTP("testTP")); + } + + private List geSupportingNodes() { + List supportingNodes1 = new ArrayList<>(); + + supportingNodes1 + .add(new SupportingNodeBuilder() + .setNodeRef(new NodeId("node 2")) + .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)) + .build()); + return supportingNodes1; + } + + private NodeBuilder getNodeBuilder(List supportingNodes1) { + return new NodeBuilder() + .setNodeId(new NodeId("node 1")) + .withKey(new NodeKey(new NodeId("node 1"))) + .setSupportingNode(supportingNodes1); + } + + private static LinkBuilder createLink(String srcNode, String destNode, String srcTp, String destTp) { + //create source link + 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)); + return new LinkBuilder() + .setSource(ietfSrcLinkBldr.build()) + .setDestination(ietfDestLinkBldr.build()) + .setLinkId(linkId) + .withKey(new LinkKey(linkId)); + } +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java index d94f58319..8cd611e28 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java @@ -10,15 +10,35 @@ package org.opendaylight.transportpce.pce; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.transportpce.common.DataStoreContext; +import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; +import org.opendaylight.transportpce.common.network.RequestProcessor; import org.opendaylight.transportpce.pce.utils.PceTestData; +import org.opendaylight.transportpce.test.AbstractTest; -public class PceSendingPceRPCsTest { + + +@RunWith(MockitoJUnitRunner.class) +public class PceSendingPceRPCsTest extends AbstractTest { private PceSendingPceRPCs pceSendingPceRPCs; + private NetworkTransactionImpl networkTransaction; + private DataStoreContext dataStoreContext = this.getDataStoreContextUtil(); + private DataBroker dataBroker = dataStoreContext.getDataBroker(); + @Before - public void setUp() { - pceSendingPceRPCs = new PceSendingPceRPCs(PceTestData.getPCE_test1_request_54(), null); + public void setUp() throws Exception { +// PceTestUtils.writeTopologyIntoDataStore( +// dataBroker, dataStoreContext, "./topologyData/basePceTopology.json"); + networkTransaction = new NetworkTransactionImpl(new RequestProcessor(dataBroker)); + pceSendingPceRPCs = new PceSendingPceRPCs(); + pceSendingPceRPCs = + new PceSendingPceRPCs(PceTestData.getPCERequest(), networkTransaction + ); } @Test @@ -29,7 +49,6 @@ public class PceSendingPceRPCsTest { @Test public void pathComputationTest() throws Exception { - pceSendingPceRPCs.pathComputation(); } @@ -45,7 +64,14 @@ public class PceSendingPceRPCsTest { } @Test - public void pathComputationWithConstraintsTest() { - pceSendingPceRPCs.pathComputationWithConstraints(null, null); + public void gnpyAtoZ() { + Assert.assertNull(pceSendingPceRPCs.getGnpyAtoZ()); } + + @Test + public void getGnpyZtoA() { + Assert.assertNull(pceSendingPceRPCs.getGnpyZtoA()); + } + + } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java new file mode 100644 index 000000000..f3d815266 --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsCalcTest.java @@ -0,0 +1,46 @@ +/* + * Copyright © 2020 Orange Labs, 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.constraints; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.opendaylight.transportpce.common.network.NetworkTransactionService; +import org.opendaylight.transportpce.pce.utils.PceTestData; +import org.opendaylight.transportpce.test.AbstractTest; + +public class PceConstraintsCalcTest extends AbstractTest { + private static PceConstraintsCalc pceConstraintsCalc = null; + private static NetworkTransactionService networkTransactionService = null; + + @Before + public void setup() { + networkTransactionService = Mockito.mock(NetworkTransactionService.class); + + } + + @Test + public void testNoHardOrSoftConstrainsExists() { + pceConstraintsCalc = new PceConstraintsCalc(PceTestData + .getEmptyPCERequest(), networkTransactionService); + } + + @Test(expected = NullPointerException.class) + public void testHardConstrainsExists() { + pceConstraintsCalc = new PceConstraintsCalc(PceTestData + .getPCE_test2_request_54(), networkTransactionService); + } + + @Test + public void testSoftConstrainsExists() { + pceConstraintsCalc = new PceConstraintsCalc(PceTestData + .getPCERequest(), networkTransactionService); + } + +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsTest.java index e462b79be..900061989 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsTest.java @@ -10,12 +10,16 @@ package org.opendaylight.transportpce.pce.constraints; import java.util.ArrayList; import java.util.List; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode; import org.opendaylight.transportpce.test.AbstractTest; + + public class PceConstraintsTest extends AbstractTest { private static PceConstraints pceConstraints = new PceConstraints(); @@ -103,4 +107,26 @@ public class PceConstraintsTest extends AbstractTest { } + + @Test + public void getIncludePceNodesTest() { + Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 0); + pceConstraints.setIncludePceNode(new PceOpticalNode(null, null, null, null, null)); + Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 1); + + } + + @Test + public void getListToIncludeTest() { + Assert.assertTrue(pceConstraints.getListToInclude().size() == 0); + PceConstraints.ResourcePair resourcePair = new PceConstraints + .ResourcePair(PceConstraints.ResourceType.SRLG, "test"); + pceConstraints.setListToInclude(resourcePair); + Assert.assertTrue(pceConstraints.getListToInclude().size() == 1); + Assert.assertTrue(pceConstraints.getSRLGnames().size() == 1); + + } + } + + diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java new file mode 100644 index 000000000..986d782fe --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java @@ -0,0 +1,48 @@ +/* + * Copyright © 2020 Orange Labs, 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.gnpy; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; +import org.opendaylight.transportpce.common.network.RequestProcessor; +import org.opendaylight.transportpce.pce.constraints.PceConstraints; +import org.opendaylight.transportpce.pce.constraints.PceConstraintsCalc; +import org.opendaylight.transportpce.pce.utils.PceTestData; +import org.opendaylight.transportpce.test.AbstractTest; + +@Ignore + +public class GnpyUtilitiesImplTest extends AbstractTest { + + private GnpyUtilitiesImpl gnpyUtilitiesImpl; + private NetworkTransactionImpl networkTransaction; + + @Before + public void setUp()throws Exception { + networkTransaction = new NetworkTransactionImpl(new RequestProcessor(this.getNewDataBroker())); + + gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getPCE_test1_request_54()); + } + + @Test(expected = Exception.class) + public void askNewPathFromGnpyTest() throws Exception { + PceConstraintsCalc constraints = + new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(), networkTransaction); + PceConstraints pceHardConstraints = constraints.getPceHardConstraints(); + gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints); + } + + @Test(expected = Exception.class) + public void gnpyResponseOneDirectionTest() throws Exception { + gnpyUtilitiesImpl.gnpyResponseOneDirection(null); + } + + +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculationTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculationTest.java index e26e306f3..c2192a123 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculationTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculationTest.java @@ -5,15 +5,13 @@ * 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.networkanalyzer; +package org.opendaylight.transportpce.pce.networkanalyzer; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.RequestProcessor; -import org.opendaylight.transportpce.pce.networkanalyzer.PceCalculation; -import org.opendaylight.transportpce.pce.networkanalyzer.PceResult; import org.opendaylight.transportpce.pce.utils.PceTestData; import org.opendaylight.transportpce.test.AbstractTest; diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java new file mode 100644 index 000000000..c796151fd --- /dev/null +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java @@ -0,0 +1,291 @@ +/* + * 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.networkanalyzer; + +import com.google.common.collect.ImmutableList; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.transportpce.common.NetworkUtils; +import org.opendaylight.transportpce.test.AbstractTest; +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.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.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.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; + + + + +public class PceLinkTest extends AbstractTest { + + 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; + + @Before + public void setup() { + + } + + @Test + public void testBuildPceLinkRoadmToRoadm() { + Link link = createRoadmToRoadm("srcNode", + "destNode", + "srcTp", "destTp").build(); + + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode); + } + + @Test + public void testBuildPceLinkOTN() { + Link link = createOTNLink("srcNode", + "destNode", + "srcTp", "destTp").build(); + + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode); + + } + + @Test + public void testBuildPceLinkExponder() { + Link link = createXponderLink("srcNode", + "destNode", + "srcTp", "destTp").build(); + + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode); + } + + @Test + public void testCalcSpanOSNR() { + Link link = createRoadmToRoadm("srcNode", + "destNode", + "srcTp", "destTp").build(); + + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode); + Assert.assertNotNull(MapUtils.getOmsAttributesSpan(link)); + Assert.assertNotNull(pceLink.calcSpanOSNR()); + Assert.assertEquals(0, pceLink.getsrlgList().size()); + Assert.assertTrue(7.857119000000001 == pceLink.calcSpanOSNR()); + Assert.assertNull(pceLink.getOppositeLink()); + Assert.assertNull(pceLink.getOppositeLink()); + Assert.assertNotNull(pceLink.getDestTP()); + Assert.assertNotNull(pceLink.getlinkType()); + Assert.assertNotNull(pceLink.getLinkId()); + Assert.assertNotNull(pceLink.getSourceId()); + Assert.assertNotNull(pceLink.getDestId()); + Assert.assertNotNull(pceLink.getClient()); + Assert.assertNotNull(pceLink.getLatency()); + Assert.assertNotNull(pceLink.getAvailableBandwidth()); + Assert.assertNotNull(pceLink.getUsedBandwidth()); + Assert.assertNotNull(pceLink.getsourceNetworkSupNodeId()); + Assert.assertNotNull(pceLink.getdestNetworkSupNodeId()); + Assert.assertNotNull(pceLink.getosnr()); + Assert.assertNull(pceLink.getsourceCLLI()); + Assert.assertNull(pceLink.getdestCLLI()); + } + + @Test + public void testPceOpticalNode() { + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + + PceOpticalNode pceOpticalNode = new PceOpticalNode(node, + OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test"); + pceOpticalNode.initSrgTps(); + pceOpticalNode.initXndrTps(); + pceOpticalNode.initWLlist(); + Assert.assertFalse(pceOpticalNode.isValid()); + Assert.assertFalse(pceOpticalNode.checkWL(12)); + Assert.assertTrue(pceOpticalNode.checkTP("testTP")); + } + + @Test(expected = NullPointerException.class) + public void testPceOTNNode() { + NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes()); + Node node = node1Builder.build(); + Assert.assertNotNull(node.augmentation(Node1.class)); + // OpenroadmNodeType nodeType = node.augmentation(Node1.class).; + + PceOtnNode pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.SRG, node.getNodeId(), "otn", "serviceType"); + + //pceOtnNode.validateXponder(anodeId, znodeId); + /* + PceOtnNode pceOtnNode = + new PceOtnNode(node, OpenroadmNodeType.DEGREE, + new NodeId("optical"), + ServiceFormat.OTM.getName(), "test");*/ + // pceOtnNode.initXndrTps("mode"); + /* pceOtnNode.initSrgTps(); + pceOtnNode.initXndrTps(); + pceOtnNode.initWLlist(); + Assert.assertFalse(pceOtnNode.isValid()); + Assert.assertFalse(pceOtnNode.checkWL(12)); + Assert.assertTrue(pceOtnNode.checkTP("testTP"));*/ + } + + private static LinkBuilder createOTNLink(String srcNode, String destNode, String srcTp, String destTp) { + Link1Builder link1Builder = new Link1Builder() + .setLinkType(OpenroadmLinkType.OTNLINK); + + //create source link + return createLinkBuilder(srcNode, destNode, srcTp, destTp, link1Builder); + + } + + private static LinkBuilder createXponderLink(String srcNode, String destNode, String srcTp, String destTp) { + Link1Builder link1Builder = new Link1Builder() + .setLinkType(OpenroadmLinkType.XPONDERINPUT); + + //create source link + return createLinkBuilder(srcNode, destNode, srcTp, destTp, link1Builder); + + } + + 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("opposite"); + //For setting up attributes for openRoadm augment + OMSAttributesBuilder omsAttributesBuilder = + new OMSAttributesBuilder() + .setSpan(new SpanBuilder() + .setSpanlossCurrent(new RatioDB(new BigDecimal("55"))) + .setLinkConcatenation(Arrays.asList( + new LinkConcatenationBuilder() + .setFiberType(LinkConcatenation.FiberType.Dsf) + .build() + )).build()).setOppositeLink(oppositeLinkId); + + + LinkBuilder linkBuilder = new LinkBuilder() + .setSource(ietfSrcLinkBldr.build()) + .setDestination(ietfDestLinkBldr.build()) + .setLinkId(linkId) + .withKey(new LinkKey(linkId)); + + linkBuilder.addAugmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, + link1Builder.build()); + + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder linkBuilderNetworkLink + = new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder() + .setOMSAttributes(omsAttributesBuilder + .build()); + + + linkBuilder.addAugmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1.class, + linkBuilderNetworkLink.build()); + + return linkBuilder; + } + + private static LinkBuilder createRoadmToRoadm(String srcNode, String destNode, String srcTp, String destTp) { + Link1Builder link1Builder = new Link1Builder() + .setLinkLatency(100L) + .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); + } + +} diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java index 71d57e075..b7ccf9183 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java @@ -5,14 +5,16 @@ * 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.service; +package org.opendaylight.transportpce.pce.service; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.RequestProcessor; -import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl; +import org.opendaylight.transportpce.pce.gnpy.GnpyResult; +import org.opendaylight.transportpce.pce.gnpy.GnpyTopoImpl; import org.opendaylight.transportpce.pce.utils.PceTestData; import org.opendaylight.transportpce.test.AbstractTest; @@ -30,7 +32,24 @@ public class PathComputationServiceImplTest extends AbstractTest { @Test public void pathComputationRequestTest() { - Assert.assertNotNull(pathComputationServiceImpl.pathComputationRequest(PceTestData.getPCERequest())); + Assert.assertNotNull( + pathComputationServiceImpl.pathComputationRequest(PceTestData.getEmptyPCERequest())); + + } + + @Test(expected = Exception.class) + public void generateGnpyResponse() throws Exception { + + GnpyResult gnpyResult = + new GnpyResult("A-to-Z", + new GnpyTopoImpl(new NetworkTransactionImpl( + new RequestProcessor(this.getNewDataBroker())))); + pathComputationServiceImpl.generateGnpyResponse(gnpyResult.getResponse(), "A-to-Z"); + } + + + @After + public void destroy() { pathComputationServiceImpl.close(); } } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java index b822b7a8b..d471002db 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java @@ -8,6 +8,7 @@ package org.opendaylight.transportpce.pce.utils; import java.util.Arrays; + import org.opendaylight.transportpce.common.ResponseCodes; 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; @@ -35,9 +36,14 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.GeneralBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.DiversityBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.ExcludeBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.IncludeBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.LatencyBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.constraints.sp.co.routing.or.general.general.include_.OrderedHopsBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicability; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.diversity.existing.service.contraints.sp.ExistingServiceApplicabilityBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraintsBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraints; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraintsBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder; @@ -48,6 +54,8 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeader; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder; + + public final class PceTestData { private PceTestData() { @@ -63,6 +71,120 @@ public final class PceTestData { return input; } + public static PathComputationRequestInput getEmptyPCERequestServiceNameWithRequestId() { + ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + .setRequestId("request1") + .build(); + PathComputationRequestInput input = new PathComputationRequestInputBuilder() + .setServiceName("serviceName") + .setServiceHandlerHeader(serviceHandlerHeader) + .build(); + return input; + } + + public static PathComputationRequestInput getEmptyPCERequestServiceNameWithOutRequestId() { + ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + .build(); + PathComputationRequestInput input = new PathComputationRequestInputBuilder() + .setServiceName("serviceName") + .setServiceHandlerHeader(serviceHandlerHeader) + .build(); + return input; + } + + public static PathComputationRequestInput getPathComputationRequestInputWithCoRoutingOrGeneral() { + ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + .setRequestId("request1") + .build(); + ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(100L) + .setClli("clli11") + .setNodeId("XPONDER-2-2") + .setTxDirection(new TxDirectionBuilder().setPort( + new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build() + ).build()) + .setRxDirection(new RxDirectionBuilder().setPort( + new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build() + ).build()) + .build(); + ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setServiceFormat(ServiceFormat.Ethernet) + .setServiceRate(0L) + .setClli("Some clli11") + .setNodeId("XPONDER-1-2") + .setTxDirection(new TxDirectionBuilder().setPort( + new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build() + ).build()) + .setRxDirection(new RxDirectionBuilder().setPort( + new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build() + ).build()) + .build(); + PathComputationRequestInput input = new PathComputationRequestInputBuilder() + .setServiceName("service1") + .setResourceReserve(true) + .setPceMetric(PceMetric.HopCount) + .setLocallyProtectedLinks(true) + .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceAEnd(serviceAEnd) + .setServiceZEnd(serviceZEnd) + .setHardConstraints(new HardConstraintsBuilder() + .setCustomerCode(Arrays.asList("Some customer-code")) + .setCoRoutingOrGeneral(new CoRoutingBuilder() + .setCoRouting(new org.opendaylight.yang.gen.v1.http.org + .transportpce.b.c._interface.routing.constraints.rev171017 + .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() + .setExistingService(Arrays.asList("Some existing-service")) + + .build()) + .build()) + .build()) + .setSoftConstraints(new SoftConstraintsBuilder() + .setCustomerCode(Arrays.asList("Some customer-code")) + .setCoRoutingOrGeneral(new CoRoutingBuilder() + .setCoRouting(new org.opendaylight.yang.gen.v1.http.org + .transportpce.b.c._interface.routing.constraints.rev171017 + .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() + .setExistingService(Arrays.asList("Some existing-service")) + .build()) + .build()) + .build()) + .build(); + return input; + } + public static PathComputationRequestInput getPCERequest() { ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() .setRequestId("request1") @@ -124,32 +246,34 @@ public final class PceTestData { ).build()) .build(); PathComputationRequestInput input = new PathComputationRequestInputBuilder() - .setServiceName("service1") - .setResourceReserve(true) - .setPceMetric(PceMetric.HopCount) - .setLocallyProtectedLinks(true) - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) - .setHardConstraints(new HardConstraintsBuilder() - .setCustomerCode(Arrays.asList("Some customer-code")) - .setCoRoutingOrGeneral(new CoRoutingBuilder() - .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints - .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() - .setExistingService(Arrays.asList("Some existing-service")) - .build()) - .build()) - .build()) - .setSoftConstraints(new SoftConstraintsBuilder() - .setCustomerCode(Arrays.asList("Some customer-code")) - .setCoRoutingOrGeneral(new CoRoutingBuilder() - .setCoRouting(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints - .rev171017.constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() - .setExistingService(Arrays.asList("Some existing-service")) - .build()) - .build()) - .build()) - .build(); + .setServiceName("service1") + .setResourceReserve(true) + .setPceMetric(PceMetric.HopCount) + .setLocallyProtectedLinks(true) + .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceAEnd(serviceAEnd) + .setServiceZEnd(serviceZEnd) + .setHardConstraints(new HardConstraintsBuilder() + .setCustomerCode(Arrays.asList("Some customer-code")) + .setCoRoutingOrGeneral(new CoRoutingBuilder() + .setCoRouting(new org.opendaylight.yang.gen.v1.http.org + .transportpce.b.c._interface.routing.constraints.rev171017 + .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() + .setExistingService(Arrays.asList("Some existing-service")) + .build()) + .build()) + .build()) + .setSoftConstraints(new SoftConstraintsBuilder() + .setCustomerCode(Arrays.asList("Some customer-code")) + .setCoRoutingOrGeneral(new CoRoutingBuilder() + .setCoRouting(new org.opendaylight.yang.gen.v1.http.org + .transportpce.b.c._interface.routing.constraints.rev171017 + .constraints.sp.co.routing.or.general.co.routing.CoRoutingBuilder() + .setExistingService(Arrays.asList("Some existing-service")) + .build()) + .build()) + .build()) + .build(); return input; } @@ -178,23 +302,23 @@ public final class PceTestData { /** * Generate Data for Test 1 request 5-4. * { - "pce:input": { - "pce:service-name": "service 1", - "pce:resource-reserve": "true", - "pce:service-handler-header": { - "pce:request-id": "request 1" - }, - "pce:service-a-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-1-2" - }, - "pce:service-z-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-3-2" - }, - "pce:pce-metric": "hop-count" - } - } + * "pce:input": { + * "pce:service-name": "service 1", + * "pce:resource-reserve": "true", + * "pce:service-handler-header": { + * "pce:request-id": "request 1" + * }, + * "pce:service-a-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-1-2" + * }, + * "pce:service-z-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-3-2" + * }, + * "pce:pce-metric": "hop-count" + * } + * } * * @return input PathComputationRequestInput data */ @@ -223,8 +347,8 @@ public final class PceTestData { /** * Generate Data for Test 1 result 5-4. - * @param wl WaveLength * + * @param wl WaveLength * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test_result_54(Long wl) { @@ -239,29 +363,30 @@ public final class PceTestData { /** * Generate Data for Test 2 request 5-4. - *{ - "pce:input": { - "pce:service-name": "service 1", - "pce:resource-reserve": "true", - "pce:service-handler-header": { - "pce:request-id": "request 1" - }, - "pce:service-a-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-1-2" - }, - "pce:service-z-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-3-2" - }, - "pce:hard-constraints": { - "pce:exclude_": { - "node-id": [ "OpenROADM-2-2" ] - } - }, - "pce:pce-metric": "hop-count" - } - } + * { + * "pce:input": { + * "pce:service-name": "service 1", + * "pce:resource-reserve": "true", + * "pce:service-handler-header": { + * "pce:request-id": "request 1" + * }, + * "pce:service-a-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-1-2" + * }, + * "pce:service-z-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-3-2" + * }, + * "pce:hard-constraints": { + * "pce:exclude_": { + * "node-id": [ "OpenROADM-2-2" ] + * } + * }, + * "pce:pce-metric": "hop-count" + * } + * } + * * @return input PathComputationRequestInput data */ public static PathComputationRequestInput getPCE_test2_request_54() { @@ -288,6 +413,16 @@ public final class PceTestData { .setExclude(new ExcludeBuilder() .setNodeId(Arrays.asList("OpenROADM-2-2")) .build()) + .setLatency(new LatencyBuilder() + .setMaxLatency(3223L).build()) + .setInclude(new IncludeBuilder() + .setOrderedHops( + Arrays.asList(new OrderedHopsBuilder() + .setHopNumber(22) + // .setHopType(new HopTypeBuilder() + // .setHopType(new ClliBuilder().getClli()) + .build())) + .build()) .build()) .build()) .build(); @@ -296,6 +431,7 @@ public final class PceTestData { /** * Generate Data for Test 2 result 5-4. + * * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test2_result_54() { @@ -310,29 +446,30 @@ public final class PceTestData { /** * Generate Data for Test 2 request 5-4. - *{ - "pce:input": { - "pce:service-name": "service 1", - "pce:resource-reserve": "true", - "pce:service-handler-header": { - "pce:request-id": "request 1" - }, - "pce:service-a-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-1-2" - }, - "pce:service-z-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-3-2" - }, - "pce:hard-constraints": { - "pce:exclude_": { - "node-id": [ "OpenROADM-2-1", "OpenROADM-2-2" ] - } - }, - "pce:pce-metric": "hop-count" - } - } + * { + * "pce:input": { + * "pce:service-name": "service 1", + * "pce:resource-reserve": "true", + * "pce:service-handler-header": { + * "pce:request-id": "request 1" + * }, + * "pce:service-a-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-1-2" + * }, + * "pce:service-z-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-3-2" + * }, + * "pce:hard-constraints": { + * "pce:exclude_": { + * "node-id": [ "OpenROADM-2-1", "OpenROADM-2-2" ] + * } + * }, + * "pce:pce-metric": "hop-count" + * } + * } + * * @return input PathComputationRequestInput data */ public static PathComputationRequestInput getPCE_test3_request_54() { @@ -367,6 +504,7 @@ public final class PceTestData { /** * Generate Data for Test 3 result 5-4. + * * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test3_result_54() { @@ -379,6 +517,33 @@ public final class PceTestData { return outputBuilder.build(); } + public static PathComputationRequestInput getPCE_simpletopology_test1_requestSetHardAndSoftConstrains() { + ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + .setRequestId("request 1") + .build(); + ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .setServiceRate(0L) + .setNodeId("XPONDER-1-2") + .build(); + ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setServiceRate(0L) + .setNodeId("XPONDER-3-2") + .build(); + HardConstraints hardConstrains = new HardConstraintsBuilder().build(); + SoftConstraints softConstraints = new SoftConstraintsBuilder().build(); + PathComputationRequestInput input = new PathComputationRequestInputBuilder() + .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceName("service 1") + .setResourceReserve(true) + .setPceMetric(PceMetric.HopCount) + .setServiceAEnd(serviceAEnd) + .setServiceZEnd(serviceZEnd) + .setHardConstraints(hardConstrains) + .setSoftConstraints(softConstraints) + .build(); + return input; + } + public static PathComputationRequestInput getPCE_simpletopology_test1_request() { ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() .setRequestId("request 1") @@ -422,7 +587,7 @@ public final class PceTestData { } private static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate, - long zaWaveLength) { + long zaWaveLength) { AToZDirection atozDirection = new AToZDirectionBuilder() .setRate(azRate) .setAToZWavelengthNumber(azWaveLength) @@ -442,34 +607,34 @@ public final class PceTestData { /** * Generate Data for Test Diversity test 1 request 5-4. - *{ - "pce:input": { - "pce:service-name": "service 1", - "pce:resource-reserve": "true", - "pce:service-handler-header": { - "pce:request-id": "request 1" - }, - "pce:service-a-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-1-1" - }, - "pce:service-z-end": { - "pce:service-rate": "0", - "pce:node-id": "XPONDER-3-1" - }, - "pce:hard-constraints": { - "pce:diversity": { - "existing-service": ["Path test-1-54"], - "existing-service-applicability": { - "node": "true" - } - } - }, - "pce:pce-metric": "hop-count" - } - } - * @param base Path Computation Request Input base + * { + * "pce:input": { + * "pce:service-name": "service 1", + * "pce:resource-reserve": "true", + * "pce:service-handler-header": { + * "pce:request-id": "request 1" + * }, + * "pce:service-a-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-1-1" + * }, + * "pce:service-z-end": { + * "pce:service-rate": "0", + * "pce:node-id": "XPONDER-3-1" + * }, + * "pce:hard-constraints": { + * "pce:diversity": { + * "existing-service": ["Path test-1-54"], + * "existing-service-applicability": { + * "node": "true" + * } + * } + * }, + * "pce:pce-metric": "hop-count" + * } + * } * + * @param base Path Computation Request Input base * @return input PathComputationRequestInput data */ public static PathComputationRequestInput build_diversity_from_request(PathComputationRequestInput base) { @@ -505,47 +670,47 @@ public final class PceTestData { public static ServiceCreateInput buildServiceCreateInput() { org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceAEnd serviceAEnd = - new org.opendaylight.yang.gen.v1.http.org.openroadm.service - .rev190531.service.create.input.ServiceAEndBuilder() - .setClli("clli") - .setServiceRate((long)0) - .setNodeId(new NodeIdType("XPONDER-1-2")) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types - .rev190531.service.endpoint.TxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types - .rev190531.service.endpoint.RxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build()) - .build(); + new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531 + .service.create.input.ServiceAEndBuilder() + .setClli("clli") + .setServiceRate((long) 0) + .setNodeId(new NodeIdType("XPONDER-1-2")) + .setTxDirection(new org.opendaylight.yang.gen.v1.http.org + .openroadm.common.service.types.rev190531.service.endpoint.TxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build()) + .setRxDirection(new org.opendaylight.yang.gen.v1.http.org + .openroadm.common.service.types.rev190531.service.endpoint.RxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build()) + .build(); org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input.ServiceZEnd serviceZEnd = - new org.opendaylight.yang.gen.v1.http.org.openroadm.service - .rev190531.service.create.input.ServiceZEndBuilder() - .setClli("clli") - .setServiceRate((long)0) - .setNodeId(new NodeIdType("XPONDER-3-2")) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types - .rev190531.service.endpoint.TxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types - .rev190531.service.endpoint.RxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build()) - .build(); + new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531 + .service.create.input.ServiceZEndBuilder() + .setClli("clli") + .setServiceRate((long) 0) + .setNodeId(new NodeIdType("XPONDER-3-2")) + .setTxDirection(new org.opendaylight.yang.gen.v1.http.org + .openroadm.common.service.types.rev190531.service.endpoint.TxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build()) + .setRxDirection(new org.opendaylight.yang.gen.v1.http.org + .openroadm.common.service.types.rev190531.service.endpoint.RxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build()) + .build(); ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder() - .setCommonId("commonId") - .setConnectionType(ConnectionType.Service) - .setCustomer("Customer") - .setServiceName("service 1") - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) - .setSdncRequestHeader(new SdncRequestHeaderBuilder() - .setRequestId("request 1") - .build()); + .setCommonId("commonId") + .setConnectionType(ConnectionType.Service) + .setCustomer("Customer") + .setServiceName("service 1") + .setServiceAEnd(serviceAEnd) + .setServiceZEnd(serviceZEnd) + .setSdncRequestHeader(new SdncRequestHeaderBuilder() + .setRequestId("request 1") + .build()); return builtInput.build(); } -- 2.36.6