From ff8bf11dc25b19db803b0e4157163b92df52d931 Mon Sep 17 00:00:00 2001 From: ShaabanEltanany Date: Thu, 21 May 2020 22:52:26 +0200 Subject: [PATCH] add some unit tests and refactor isPceOtnNodeValid JIRA: TRNSPRTPCE-209 Signed-off-by: ShaabanEltanany Change-Id: Ifbe167a1148d592e7719a4c1f8061f01b1d6ab38 --- .../pce/networkanalyzer/PceOtnNode.java | 55 +++++++++++++++++++ .../pce/networkanalyzer/PceOtnNodeTest.java | 41 ++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java index 5dbe3679d..4545c3002 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java @@ -52,6 +52,7 @@ public class PceOtnNode implements PceNode { private final OpenroadmNodeType nodeType; private final String pceNodeType; private final String otnServiceType; + private String modeType; private Map> tpAvailableTribPort = new TreeMap<>(); private Map> tpAvailableTribSlot = new TreeMap<>(); @@ -94,6 +95,8 @@ public class PceOtnNode implements PceNode { LOG.info("PceOtnNode: initXndrTps for node {}", this.nodeId.getValue()); this.availableXponderTp.clear(); + this.modeType = mode; + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 nodeTp = this.node.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.network.topology.rev180226.Node1.class); @@ -387,6 +390,58 @@ public class PceOtnNode implements PceNode { return valid; } + public boolean isPceOtnNodeValid(final PceOtnNode pceOtnNode) { + if (pceOtnNode == null || pceOtnNode.node == null + || pceOtnNode.getNodeId() == null || pceOtnNode.nodeType == null || pceOtnNode.getSupNetworkNodeId() == null + || pceOtnNode.getSupClliNodeId() == null || pceOtnNode.otnServiceType == null) { + LOG.error( + "PceOtnNode: one of parameters is not populated : nodeId, node type, supporting nodeId, otnServiceType" + ); + return false; + } + + if (!isNodeTypeValid(pceOtnNode)) { + LOG.error("PceOtnNode node type: node type isn't one of MUXPDR or SWITCH or TPDR"); + return false; + } + + return isOtnServiceTypeValid(pceOtnNode); + } + + private boolean isOtnServiceTypeValid(PceOtnNode pceOtnNode) { + if (pceOtnNode.modeType == null) { + return false; + } + + //Todo refactor Strings (mode and otnServiceType ) to enums + if ((pceOtnNode.otnServiceType.equals("ODU4") && pceOtnNode.modeType.equals("AZ"))) { + return true; + } + + if ((pceOtnNode.otnServiceType.equals("10GE") || pceOtnNode.otnServiceType.equals("1GE")) + && (isAz(pceOtnNode) || isIntermediate(pceOtnNode))) { + return true; + } + + return false; + } + + private boolean isIntermediate(PceOtnNode pceOtnNode) { + return pceOtnNode.modeType.equals("intermediate") + && checkSwPool(null, pceOtnNode.availableXpdrNWTps, 0, 2); + } + + private boolean isAz(PceOtnNode pceOtnNode) { + return pceOtnNode.modeType.equals("AZ") + && checkSwPool(pceOtnNode.availableXpdrClientTps, pceOtnNode.availableXpdrNWTps, 1, 1); + } + + private boolean isNodeTypeValid(final PceOtnNode pceOtnNode) { + return (pceOtnNode.nodeType == OpenroadmNodeType.MUXPDR) + || (pceOtnNode.nodeType == OpenroadmNodeType.SWITCH) + || (pceOtnNode.nodeType == OpenroadmNodeType.TPDR); + } + @Override public void addOutgoingLink(PceLink outLink) { this.outgoingLinks.add(outLink); diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java index 65ec2b9eb..b0276c816 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNodeTest.java @@ -127,6 +127,47 @@ public class PceOtnNodeTest extends AbstractTest { } + @Test + public void testIsPceOtnNodeValid() { + pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, + new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE"); + pceOtnNode.initXndrTps("AZ"); + Assert.assertFalse(pceOtnNode.isPceOtnNodeValid(pceOtnNode)); + } + + @Test + public void testIsPceOtnNodeValidNodeTypeNull() { + pceOtnNode = new PceOtnNode(node, null, + new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE"); + pceOtnNode.initXndrTps("AZ"); + Assert.assertFalse(pceOtnNode.isPceOtnNodeValid(pceOtnNode)); + } + + @Test + public void testIsPceOtnNodeValidNodeTypeDeg() { + pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE, + new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE"); + pceOtnNode.initXndrTps("AZ"); + Assert.assertFalse(pceOtnNode.isPceOtnNodeValid(pceOtnNode)); + } + + @Test + public void testIsPceOtnNodeValidTrue() { + pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, + new NodeId("optical"), ServiceFormat.OMS.getName(), "ODU4"); + pceOtnNode.initXndrTps("AZ"); + Assert.assertTrue(pceOtnNode.isPceOtnNodeValid(pceOtnNode)); + } + + @Test + public void testIsPceOtnNodeValidChecksw() { + node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build(); + pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR, + new NodeId("optical"), ServiceFormat.OMS.getName(), "1GE"); + pceOtnNode.initXndrTps("mode"); + pceOtnNode.isPceOtnNodeValid(pceOtnNode); + } + private List geSupportingNodes() { List supportingNodes1 = new ArrayList<>(); supportingNodes1 -- 2.36.6