Adapt PCE to compute a 400GE path 66/95466/6
authorChristophe Betoule <christophe.betoule@orange.com>
Thu, 11 Feb 2021 11:24:03 +0000 (12:24 +0100)
committerChristophe Betoule <christophe.betoule@orange.com>
Wed, 31 Mar 2021 13:09:35 +0000 (15:09 +0200)
- on a simple openroadm-topology with only tpdr-400GE
- in PceCalculation, remove boolean returned by validateNode() and
validateOtnNode() since not used anywhere
- inject PortMapping instance in several PCE classes to retrieve
if-capabilities from portmapping in order to prune invalid nodes from
openroadm-topology
- add a new isTpWithGoodCapabilities() method in PceOpticalNode class to
check the node capabilities with regards to the type of service to
compute
- adapt blue-print to inject portmapping instance
- adapt PCE UT mocking PortMapping instance in all adequate constructors

JIRA: TRNSPRTPCE-372
Signed-off-by: Christophe Betoule <christophe.betoule@orange.com>
Co-authored-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: I02e8de3689d1df0b55a8018dd4f629429f6deb2b

19 files changed:
pce/src/main/java/org/opendaylight/transportpce/pce/PcePathDescription.java
pce/src/main/java/org/opendaylight/transportpce/pce/PceSendingPceRPCs.java
pce/src/main/java/org/opendaylight/transportpce/pce/graph/PceGraph.java
pce/src/main/java/org/opendaylight/transportpce/pce/graph/PostAlgoPathValidator.java
pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java
pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java
pce/src/main/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImpl.java
pce/src/main/resources/OSGI-INF/blueprint/pce-blueprint.xml
pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.java
pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/constraints/PceConstraintsTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphEdgeTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/impl/PceProviderTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/impl/PceServiceRPCImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculationTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceLinkTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java

index 834958ea383492cb45731cec361c13b8fcffac0d..2843c389c04959ff2dd5f019204fcd59c83ca66a 100644 (file)
@@ -91,6 +91,7 @@ public class PcePathDescription {
                     .getOrDefault(Uint32.valueOf(rc.getRate()), ModulationFormat.DpQpsk).getName())
             .setAToZ(atozMap);
         switch (rc.getServiceType()) {
+            case StringConstants.SERVICE_TYPE_400GE:
             case StringConstants.SERVICE_TYPE_100GE:
             case StringConstants.SERVICE_TYPE_OTU4:
                 atoZDirectionBldr.setAToZMaxFrequency(new FrequencyTHz(rc.getMaxFreq()));
@@ -112,6 +113,7 @@ public class PcePathDescription {
                 }
                 break;
             default:
+                LOG.warn("unknown service type : unable to set Min/Max frequencies");
                 break;
         }
         return atoZDirectionBldr;
@@ -128,6 +130,7 @@ public class PcePathDescription {
                         .getOrDefault(Uint32.valueOf(rc.getRate()), ModulationFormat.DpQpsk).getName())
                 .setZToA(ztoaMap);
         switch (rc.getServiceType()) {
+            case StringConstants.SERVICE_TYPE_400GE:
             case StringConstants.SERVICE_TYPE_100GE:
             case StringConstants.SERVICE_TYPE_OTU4:
                 ztoADirectionBldr.setZToAMaxFrequency(new FrequencyTHz(rc.getMaxFreq()));
@@ -149,6 +152,7 @@ public class PcePathDescription {
                 }
                 break;
             default:
+                LOG.warn("unknown service type : unable to set Min/Max frequencies");
                 break;
         }
         return ztoADirectionBldr;
index 4e734d2f4958afba37f7ec375b3c38738d680504..94ad1f8b3baa05c094db4ab89bc619135e680101 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.transportpce.pce;
 
 import org.opendaylight.transportpce.common.ResponseCodes;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.transportpce.pce.constraints.PceConstraintsCalc;
@@ -59,6 +60,7 @@ public class PceSendingPceRPCs {
     private String message;
     private String responseCode;
     private final GnpyConsumer gnpyConsumer;
+    private PortMapping portMapping;
 
     public PceSendingPceRPCs(GnpyConsumer gnpyConsumer) {
         setPathDescription(null);
@@ -68,13 +70,14 @@ public class PceSendingPceRPCs {
     }
 
     public PceSendingPceRPCs(PathComputationRequestInput input,
-        NetworkTransactionService networkTransaction, GnpyConsumer gnpyConsumer) {
+        NetworkTransactionService networkTransaction, GnpyConsumer gnpyConsumer, PortMapping portMapping) {
         this.gnpyConsumer = gnpyConsumer;
         setPathDescription(null);
 
         // TODO compliance check to check that input is not empty
         this.input = input;
         this.networkTransaction = networkTransaction;
+        this.portMapping = portMapping;
     }
 
     public void cancelResourceReserve() {
@@ -93,7 +96,7 @@ public class PceSendingPceRPCs {
     public void pathComputationWithConstraints(PceConstraints hardConstraints, PceConstraints softConstraints) {
 
         PceCalculation nwAnalizer =
-            new PceCalculation(input, networkTransaction, hardConstraints, softConstraints, rc);
+            new PceCalculation(input, networkTransaction, hardConstraints, softConstraints, rc, portMapping);
         nwAnalizer.retrievePceNetwork();
         rc = nwAnalizer.getReturnStructure();
         String serviceType = nwAnalizer.getServiceType();
index b637ccddd8cb28fe9e40e8172adbf09825328326..d9bf1ca48ac58d37b6d89e0b6e9e0d42ef6389a9 100644 (file)
@@ -96,7 +96,7 @@ public class PceGraph {
                     pceResult.getResponseCode(), ResponseCodes.RESPONSE_OK);
 
             if (!pceResult.getResponseCode().equals(ResponseCodes.RESPONSE_OK)) {
-                LOG.info("In calcPath: post algo validations DROPPED the path {}", path);
+                LOG.warn("In calcPath: post algo validations DROPPED the path {}", path);
                 continue;
             }
 
@@ -110,6 +110,7 @@ public class PceGraph {
             switch (serviceType) {
 
                 case StringConstants.SERVICE_TYPE_100GE:
+                case StringConstants.SERVICE_TYPE_400GE:
                 case StringConstants.SERVICE_TYPE_OTU4:
                     LOG.info(
                         "In calcPath Path FOUND path for wl [{}], min Freq assignment {}, max Freq assignment {},"
index 7560e4c48ca5444637a71d35385b0524f9c59ee0..171af2f7c5bf8e69401263f5dccf2483daa3d7c5 100644 (file)
@@ -54,14 +54,18 @@ public class PostAlgoPathValidator {
             return pceResult;
         }
         int tribSlotNb = 1;
+        int spectralWidthSlotNumber = GridConstant.SPECTRAL_WIDTH_SLOT_NUMBER_MAP
+            .getOrDefault(serviceType, GridConstant.NB_SLOTS_100G);
+        SpectrumAssignment spectrumAssignment = null;
         //variable to deal with 1GE (Nb=1) and 10GE (Nb=10) cases
         switch (serviceType) {
-
+            case StringConstants.SERVICE_TYPE_400GE:
+                spectralWidthSlotNumber = GridConstant.SPECTRAL_WIDTH_SLOT_NUMBER_MAP
+                    .getOrDefault(serviceType, GridConstant.NB_SLOTS_400G);
+            //fallthrough
             case StringConstants.SERVICE_TYPE_100GE:
             case StringConstants.SERVICE_TYPE_OTU4:
-                int spectralWidthSlotNumber = GridConstant.SPECTRAL_WIDTH_SLOT_NUMBER_MAP
-                    .getOrDefault(serviceType, GridConstant.NB_SLOTS_100G);
-                SpectrumAssignment spectrumAssignment = getSpectrumAssignment(path,
+                spectrumAssignment = getSpectrumAssignment(path,
                         allPceNodes, spectralWidthSlotNumber);
                 pceResult.setServiceType(serviceType);
                 if (spectrumAssignment.getBeginIndex() == 0 && spectrumAssignment.getStopIndex() == 0) {
@@ -108,9 +112,7 @@ public class PostAlgoPathValidator {
 
                 pceResult.setRC(ResponseCodes.RESPONSE_OK);
                 pceResult.setLocalCause(PceResult.LocalCause.NONE);
-
                 break;
-
             case StringConstants.SERVICE_TYPE_10GE:
                 tribSlotNb = 8;
             //fallthrough
@@ -129,19 +131,16 @@ public class PostAlgoPathValidator {
                         tribPort, tribSlot, tribSlotNb);
                 }
                 break;
-
             case StringConstants.SERVICE_TYPE_ODU4:
                 pceResult.setRC(ResponseCodes.RESPONSE_OK);
                 LOG.info("In PostAlgoPathValidator: ODU4 path found {}", path);
                 break;
-
             default:
                 pceResult.setRC(ResponseCodes.RESPONSE_FAILED);
                 LOG.warn("In PostAlgoPathValidator checkPath: unsupported serviceType {} found {}",
                     serviceType, path);
                 break;
         }
-
         return pceResult;
     }
 
index d3c73e8baa2404a3242f9030a817675181d77cb9..1defea5fee6e0d82d8ffdfea99e3a0592c5f0e84 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.mapping.MappingUtils;
 import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
@@ -79,6 +80,7 @@ public class PceCalculation {
     private Map<LinkId, PceLink> allPceLinks = new HashMap<>();
     private Set<LinkId> linksToExclude = new HashSet<>();
     private PceResult returnStructure;
+    private PortMapping portMapping;
 
     private enum ConstraintTypes {
         NONE, HARD_EXCLUDE, HARD_INCLUDE, HARD_DIVERSITY, SOFT_EXCLUDE, SOFT_INCLUDE, SOFT_DIVERSITY;
@@ -87,13 +89,15 @@ public class PceCalculation {
     private MappingUtils mappingUtils;
 
     public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService,
-            PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc) {
+            PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc,
+            PortMapping portMapping) {
         this.input = input;
         this.networkTransactionService = networkTransactionService;
         this.returnStructure = rc;
 
         this.pceHardConstraints = pceHardConstraints;
         this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker());
+        this.portMapping = portMapping;
         parseInput();
     }
 
@@ -153,7 +157,9 @@ public class PceCalculation {
             //Maybe HashMap and similar options should also be considered here.
         } else if ("Ethernet".equals(serviceFormatA)) {
         //only rate 100L is currently supported except in Ethernet
-            if (serviceRate == 10L) {
+            if (serviceRate == 400L) {
+                serviceType = StringConstants.SERVICE_TYPE_400GE;
+            } else if (serviceRate == 10L) {
                 serviceType = StringConstants.SERVICE_TYPE_10GE;
             } else if (serviceRate == 1L) {
                 serviceType = StringConstants.SERVICE_TYPE_1GE;
@@ -182,14 +188,13 @@ public class PceCalculation {
     private boolean readMdSal() {
         InstanceIdentifier<Network> nwInstanceIdentifier = null;
         Network nw = null;
-        if (("OC".equals(serviceFormatA)) || ("OTU".equals(serviceFormatA)) || (("Ethernet".equals(serviceFormatA))
-            && (serviceRate == 100L))) {
-
+        if (("OC".equals(serviceFormatA)) || ("OTU".equals(serviceFormatA))
+            || ("Ethernet".equals(serviceFormatA) && ((serviceRate == 100L) || (serviceRate == 400L)))) {
             LOG.info("readMdSal: network {}", NetworkUtils.OVERLAY_NETWORK_ID);
             nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).build();
-        } else if ("ODU".equals(serviceFormatA) || ("Ethernet".equals(serviceFormatA) && serviceRate == 10L)
-            || ("Ethernet".equals(serviceFormatA) && serviceRate == 1L)) {
+        } else if ("ODU".equals(serviceFormatA)
+            || ("Ethernet".equals(serviceFormatA) && ((serviceRate == 10L) || (serviceRate == 1L)))) {
             LOG.info("readMdSal: network {}", NetworkUtils.OTN_NETWORK_ID);
             nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))).build();
@@ -249,8 +254,9 @@ public class PceCalculation {
 
         LOG.debug("analyzeNw: allNodes size {}, allLinks size {}", allNodes.size(), allLinks.size());
 
-        if ((StringConstants.SERVICE_TYPE_100GE.equals(serviceType))
-                || (StringConstants.SERVICE_TYPE_OTU4.equals(serviceType))) {
+        if (StringConstants.SERVICE_TYPE_100GE.equals(serviceType)
+                || StringConstants.SERVICE_TYPE_OTU4.equals(serviceType)
+                || StringConstants.SERVICE_TYPE_400GE.equals(serviceType)) {
             // 100GE service and OTU4 service are handled at the openroadm-topology layer
             for (Node node : allNodes) {
                 validateNode(node);
@@ -365,9 +371,10 @@ public class PceCalculation {
             return false;
         }
 
-        if ((StringConstants.SERVICE_TYPE_100GE.equals(serviceType))
-                || (StringConstants.SERVICE_TYPE_OTU4.equals(serviceType))) {
-            // 100GE or OTU4 services are handled at WDM Layer
+        if (StringConstants.SERVICE_TYPE_100GE.equals(serviceType)
+                || StringConstants.SERVICE_TYPE_OTU4.equals(serviceType)
+                || StringConstants.SERVICE_TYPE_400GE.equals(serviceType)) {
+            // 100GE or 400GE or OTU4 services are handled at WDM Layer
             PceLink pcelink = new PceLink(link, source, dest);
             if (!pcelink.isValid()) {
                 dropOppositeLink(link);
@@ -477,13 +484,13 @@ public class PceCalculation {
 
     }
 
-    private boolean validateNode(Node node) {
+    private void validateNode(Node node) {
         LOG.debug("validateNode: node {} ", node);
         // PceNode will be used in Graph algorithm
         Node1 node1 = node.augmentation(Node1.class);
         if (node1 == null) {
             LOG.error("getNodeType: no Node1 (type) Augmentation for node: [{}]. Node is ignored", node.getNodeId());
-            return false;
+            return;
         }
         OpenroadmNodeType nodeType = node1.getNodeType();
         String deviceNodeId = MapUtils.getSupNetworkNode(node);
@@ -492,18 +499,19 @@ public class PceCalculation {
         if (deviceNodeId == null || deviceNodeId.isBlank()) {
             deviceNodeId = node.getNodeId().getValue();
         }
+
         LOG.info("Device node id {} for {}", deviceNodeId, node);
-        PceOpticalNode pceNode = new PceOpticalNode(node, nodeType, mappingUtils.getOpenRoadmVersion(deviceNodeId),
-                getSlotWidthGranularity(deviceNodeId, node.getNodeId()));
+        PceOpticalNode pceNode = new PceOpticalNode(deviceNodeId, this.serviceType, portMapping, node, nodeType,
+            mappingUtils.getOpenRoadmVersion(deviceNodeId), getSlotWidthGranularity(deviceNodeId, node.getNodeId()));
         pceNode.validateAZxponder(anodeId, znodeId, input.getServiceAEnd().getServiceFormat());
         pceNode.initFrequenciesBitSet();
 
         if (!pceNode.isValid()) {
             LOG.warn(" validateNode: Node is ignored");
-            return false;
+            return;
         }
         if (validateNodeConstraints(pceNode).equals(ConstraintTypes.HARD_EXCLUDE)) {
-            return false;
+            return;
         }
         if (endPceNode(nodeType, pceNode.getNodeId(), pceNode) && this.aendPceNode == null
             && isAZendPceNode(this.serviceFormatA, pceNode, anodeId, "A")) {
@@ -516,7 +524,7 @@ public class PceCalculation {
 
         allPceNodes.put(pceNode.getNodeId(), pceNode);
         LOG.debug("validateNode: node is saved {}", pceNode.getNodeId().getValue());
-        return true;
+        return;
     }
 
     private boolean isAZendPceNode(String serviceFormat, PceOpticalNode pceNode, String azNodeId, String azEndPoint) {
@@ -543,7 +551,7 @@ public class PceCalculation {
         }
     }
 
-    private boolean validateOtnNode(Node node) {
+    private void validateOtnNode(Node node) {
         LOG.info("validateOtnNode: {} ", node.getNodeId().getValue());
         // PceOtnNode will be used in Graph algorithm
         if (node.augmentation(Node1.class) != null) {
@@ -554,10 +562,10 @@ public class PceCalculation {
 
             if (!pceOtnNode.isValid()) {
                 LOG.warn(" validateOtnNode: Node {} is ignored", node.getNodeId().getValue());
-                return false;
+                return;
             }
             if (validateNodeConstraints(pceOtnNode).equals(ConstraintTypes.HARD_EXCLUDE)) {
-                return false;
+                return;
             }
             if (pceOtnNode.getNodeId().getValue().equals(anodeId) && this.aendPceNode == null) {
                 this.aendPceNode = pceOtnNode;
@@ -567,10 +575,10 @@ public class PceCalculation {
             }
             allPceNodes.put(pceOtnNode.getNodeId(), pceOtnNode);
             LOG.info("validateOtnNode: node {} is saved", node.getNodeId().getValue());
-            return true;
+            return;
         } else {
             LOG.error("ValidateOtnNode: no node-type augmentation. Node {} is ignored", node.getNodeId().getValue());
-            return false;
+            return;
         }
     }
 
index fb463e762dddee4a9fc8e0f49e9e5d9387772faf..91c61740137f5fd9ce754e93785b53d55b866162 100644 (file)
@@ -18,12 +18,16 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.TreeMap;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.pce.SortPortsByName;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.IfOCH;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.IfOTUCnODUCn;
 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;
@@ -38,7 +42,10 @@ public class PceOpticalNode implements PceNode {
 
     private Node node;
     private NodeId nodeId;
+    private String deviceNodeId;
     private OpenroadmNodeType nodeType;
+    private String serviceType;
+    private PortMapping portMapping;
 
     private Map<String, OpenroadmTpType> availableSrgPp = new TreeMap<>();
     private Map<String, OpenroadmTpType> availableSrgCp = new TreeMap<>();
@@ -50,12 +57,19 @@ public class PceOpticalNode implements PceNode {
     private String version;
     private BigDecimal slotWidthGranularity;
 
-    public PceOpticalNode(Node node, OpenroadmNodeType nodeType, String version, BigDecimal slotWidthGranularity) {
-        if (node != null
+    public PceOpticalNode(String deviceNodeId, String serviceType, PortMapping portMapping, Node node,
+        OpenroadmNodeType nodeType, String version, BigDecimal slotWidthGranularity) {
+        if (deviceNodeId != null
+                && serviceType != null
+                && portMapping != null
+                && node != null
                 && node.getNodeId() != null
                 && nodeType != null
                 && version != null
                 && slotWidthGranularity != null) {
+            this.deviceNodeId = deviceNodeId;
+            this.serviceType = serviceType;
+            this.portMapping = portMapping;
             this.node = node;
             this.nodeId = node.getNodeId();
             this.nodeType = nodeType;
@@ -136,6 +150,33 @@ public class PceOpticalNode implements PceNode {
                         availableByteArray);
     }
 
+    private boolean isTpWithGoodCapabilities(
+        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node
+        .TerminationPoint tp) {
+        Mapping mapping = this.portMapping.getMapping(deviceNodeId, tp.getTpId().getValue());
+        if (mapping == null || mapping.getSupportedInterfaceCapability() == null) {
+            return true;
+        }
+        switch (this.serviceType) {
+            case "400GE":
+                if (mapping.getSupportedInterfaceCapability().contains(IfOTUCnODUCn.class)) {
+                    return true;
+                } else {
+                    return false;
+                }
+            case "100GE":
+                if (mapping.getSupportedInterfaceCapability().contains(
+                        org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181019.IfOCH.class)
+                    || mapping.getSupportedInterfaceCapability().contains(IfOCH.class)) {
+                    return true;
+                } else {
+                    return false;
+                }
+            default:
+                return true;
+        }
+    }
+
     public void initFrequenciesBitSet() {
         if (!isValid()) {
             return;
@@ -191,36 +232,42 @@ public class PceOpticalNode implements PceNode {
         for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network
             .node.TerminationPoint tp : allTps) {
             TerminationPoint1 cntp1 = tp.augmentation(TerminationPoint1.class);
+            if (cntp1.getTpType() != OpenroadmTpType.XPONDERNETWORK) {
+                LOG.warn("initXndrTps: {} is not an Xponder network port", cntp1.getTpType().getName());
+                continue;
+            }
+            if (!isTpWithGoodCapabilities(tp)) {
+                LOG.warn("initXndrTps: {} network port has not correct if-capabilities", tp.getTpId().getValue());
+                continue;
+            }
             org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1 nttp1 = tp
                 .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529
                 .TerminationPoint1.class);
-            if (cntp1.getTpType() == OpenroadmTpType.XPONDERNETWORK) {
-                if (nttp1 != null && nttp1.getXpdrNetworkAttributes().getWavelength() != null) {
-                    this.usedXpndrNWTps.add(tp.getTpId().getValue());
-                    LOG.info("initXndrTps: XPONDER tp = {} is used", tp.getTpId().getValue());
-                } else {
-                    this.valid = true;
-                }
-                // find Client of this network TP
-                String client;
-                org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.TerminationPoint1 tpceTp1 =
+            if (nttp1 != null && nttp1.getXpdrNetworkAttributes().getWavelength() != null) {
+                this.usedXpndrNWTps.add(tp.getTpId().getValue());
+                LOG.info("initXndrTps: XPONDER tp = {} is used", tp.getTpId().getValue());
+            } else {
+                this.valid = true;
+            }
+            // find Client of this network TP
+            String client;
+            org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.TerminationPoint1 tpceTp1 =
                     tp.augmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019
                         .TerminationPoint1.class);
-                if (tpceTp1 != null) {
-                    client = tpceTp1.getAssociatedConnectionMapPort();
-                    if (client != null) {
-                        this.clientPerNwTp.put(tp.getTpId().getValue(), client);
-                        this.valid = true;
-                    } else {
-                        LOG.error("initXndrTps: XPONDER {} NW TP doesn't have defined Client {}",
-                            this, tp.getTpId().getValue());
-                    }
-                } else if (ServiceFormat.OTU.equals(serviceFormat)) {
-                    LOG.info("Infrastructure OTU4 connection");
+            if (tpceTp1 != null) {
+                client = tpceTp1.getAssociatedConnectionMapPort();
+                if (client != null) {
+                    this.clientPerNwTp.put(tp.getTpId().getValue(), client);
                     this.valid = true;
                 } else {
-                    LOG.error("Service Format {} not managed yet", serviceFormat.getName());
+                    LOG.error("initXndrTps: XPONDER {} NW TP doesn't have defined Client {}",
+                        this, tp.getTpId().getValue());
                 }
+            } else if (ServiceFormat.OTU.equals(serviceFormat)) {
+                LOG.info("Infrastructure OTU4 connection");
+                this.valid = true;
+            } else {
+                LOG.error("Service Format {} not managed yet", serviceFormat.getName());
             }
         }
         if (!isValid()) {
index 1d242bddbf9b482926b21f37b8ce66be4f7bd7f1..62f0d0290cd90932d84ffe16d3638d70e561fd8c 100644 (file)
@@ -17,6 +17,7 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
 import org.opendaylight.transportpce.pce.PceComplianceCheck;
 import org.opendaylight.transportpce.pce.PceComplianceCheckResult;
@@ -62,14 +63,16 @@ public class PathComputationServiceImpl implements PathComputationService {
     private final ListeningExecutorService executor;
     private ServicePathRpcResult notification = null;
     private final GnpyConsumer gnpyConsumer;
+    private PortMapping portMapping;
 
     public PathComputationServiceImpl(NetworkTransactionService networkTransactionService,
                                       NotificationPublishService notificationPublishService,
-                                      GnpyConsumer gnpyConsumer) {
+                                      GnpyConsumer gnpyConsumer, PortMapping portMapping) {
         this.notificationPublishService = notificationPublishService;
         this.networkTransactionService = networkTransactionService;
         this.executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5));
         this.gnpyConsumer = gnpyConsumer;
+        this.portMapping = portMapping;
     }
 
     public void init() {
@@ -158,7 +161,7 @@ public class PathComputationServiceImpl implements PathComputationService {
                 String message = "";
                 String responseCode = "";
                 PceSendingPceRPCs sendingPCE = new PceSendingPceRPCs(input, networkTransactionService,
-                        gnpyConsumer);
+                        gnpyConsumer, portMapping);
                 sendingPCE.pathComputation();
                 message = sendingPCE.getMessage();
                 responseCode = sendingPCE.getResponseCode();
index 2b7415a72870f9403aaf85bf373953fba1a6f61c..1716b4aeb1917511b7ee1d797d47a250f7bb48b2 100755 (executable)
@@ -22,18 +22,11 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
     </cm:property-placeholder>
 
   <reference id="networkTransactionImpl" interface="org.opendaylight.transportpce.common.network.NetworkTransactionService" />
-
   <reference id="bindingDOMCodecServices" interface="org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices" />
-
-
-  <reference id="dataBroker"
-        interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
-
-  <reference id="rpcService"
-        interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
-
-  <reference id="notificationPublishService"
-        interface="org.opendaylight.mdsal.binding.api.NotificationPublishService"/>
+  <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
+  <reference id="rpcService" interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
+  <reference id="notificationPublishService" interface="org.opendaylight.mdsal.binding.api.NotificationPublishService"/>
+  <reference id="portMapping" interface="org.opendaylight.transportpce.common.mapping.PortMapping"/>
 
   <bean id="pceServiceImpl"
         class="org.opendaylight.transportpce.pce.service.PathComputationServiceImpl"
@@ -41,6 +34,7 @@ Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
     <argument ref="networkTransactionImpl"/>
     <argument ref="notificationPublishService" />
     <argument ref="gnpyConsumer" />
+    <argument ref="portMapping" />
   </bean>
 
   <bean id="gnpyConsumer"
index 323f0c454dccd5bb7bc37c84df8e16fb509df0dc..6ea97283817cbb25c3d1b97977c8e8d174bb75c5 100644 (file)
@@ -13,8 +13,11 @@ import java.util.Map;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
@@ -40,9 +43,14 @@ public class PcePathDescriptionTests extends AbstractTest {
     private PceLink pceLink = null;
     private Link link = null;
     private Node node = null;
+    private String deviceNodeId = "device node";
+    private String serviceType = "100GE";
+    @Mock
+    private PortMapping portMapping;
 
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
         // Build Link
         link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
                 "OpenROADM-3-1-DEG1",
@@ -52,9 +60,9 @@ public class PcePathDescriptionTests extends AbstractTest {
 
         NodeBuilder node1Builder = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes());
         node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
-        PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode2 = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
 
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
@@ -67,7 +75,6 @@ public class PcePathDescriptionTests extends AbstractTest {
         Map<LinkId, PceLink> map = Map.of(new LinkId("OpenROADM-3-1-DEG1-to-OpenROADM-3-2-DEG1"), pceLink);
         pcePathDescription = new PcePathDescription(List.of(pceLink),
                 map, pceResult);
-
     }
 
     // TODO fix opposite link
index 299d9379ea61ffb2ef559f32cf0c2884cb1bb5a7..5ce1b63f7cc82b9c6d41f643bd0f49576ece4cf7 100644 (file)
@@ -16,6 +16,7 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.gnpy.JerseyServer;
@@ -38,6 +39,8 @@ public class PceSendingPceRPCsTest extends AbstractTest {
     private JerseyServer jerseyServer = new JerseyServer();
     private DataBroker dataBroker;
     private GnpyConsumer gnpyConsumer;
+    @Mock
+    private PortMapping portMapping;
 
 
     @Before
@@ -48,7 +51,7 @@ public class PceSendingPceRPCsTest extends AbstractTest {
         gnpyConsumer = new GnpyConsumerImpl("http://localhost:9998",
                 "mylogin", "mypassword", getDataStoreContextUtil().getBindingDOMCodecServices());
         pceSendingPceRPCs = new PceSendingPceRPCs(PceTestData.getPCE_test1_request_54(),
-                        networkTransaction, gnpyConsumer);
+                        networkTransaction, gnpyConsumer, portMapping);
     }
 
     @Test
@@ -62,7 +65,7 @@ public class PceSendingPceRPCsTest extends AbstractTest {
         jerseyServer.setUp();
         pceSendingPceRPCs =
                 new PceSendingPceRPCs(PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2"),
-                        networkTransaction, gnpyConsumer);
+                        networkTransaction, gnpyConsumer, portMapping);
 
         pceSendingPceRPCs.pathComputation();
         Assert.assertTrue(gnpyConsumer.isAvailable());
index 74f1051ad85132813c1c1231ea0cf6e363528904..be90393f870da0ada03609b22a512e553ce663e9 100644 (file)
@@ -107,7 +107,7 @@ public class PceConstraintsTest extends AbstractTest {
     @Test
     public void getIncludePceNodesTest() {
         Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 0);
-        pceConstraints.setIncludePceNode(new PceOpticalNode(null, null, null, null));
+        pceConstraints.setIncludePceNode(new PceOpticalNode(null, null, null, null, null, null, null));
         Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 1);
 
     }
index 9e8a61dc4617619154f57729da250fa5958a51ff..b7e38cbc9e028a87f0b900add2484ad26851034e 100644 (file)
@@ -11,8 +11,11 @@ package org.opendaylight.transportpce.pce.graph;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
 import org.opendaylight.transportpce.pce.utils.NodeUtils;
@@ -26,10 +29,15 @@ public class PceGraphEdgeTest {
     private Node node = null;
     private PceLink pceLink = null;
     private PceGraphEdge pceGraphEdge = null;
+    private String deviceNodeId = "device node";
+    private String serviceType = "100GE";
+    @Mock
+    private PortMapping portMapping;
 
 
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
         // Build Link
         link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
                 "OpenROADM-3-1-DEG1",
@@ -38,9 +46,9 @@ public class PceGraphEdgeTest {
         //  Link link=genereateLinkBuilder();
         node =  NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes()).build();
 
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
-        PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode2 = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
 
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
index cedf39046d1780fe1b35cf08f2fe962c04acbe6a..1b89575f88f1f3beb28f41916a7c000f19fec0c3 100644 (file)
@@ -13,8 +13,11 @@ import java.util.Optional;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
@@ -45,9 +48,14 @@ public class PceGraphTest {
     private PceOpticalNode pceOpticalNode = null;
     private PceOpticalNode pceOpticalNode2 = null;
     private Map<NodeId, PceNode> allPceNodes = null;
+    private String deviceNodeId = "device node";
+    private String serviceType = "100GE";
+    @Mock
+    private PortMapping portMapping;
 
     @Before
     public void setUp() {
+        MockitoAnnotations.initMocks(this);
         // Build Link
         link = NodeUtils.createRoadmToRoadm("OpenROADM-3-2-DEG1",
                 "OpenROADM-3-1-DEG1",
@@ -57,12 +65,12 @@ public class PceGraphTest {
         node = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes())
                 .setNodeId(nodeId).withKey(new NodeKey(nodeId))
                 .build();
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         NodeId nodeId2 = new NodeId("OpenROADM-3-1-DEG1");
         Node node2 = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes())
                 .setNodeId(nodeId2).withKey(new NodeKey(nodeId2)).build();
-        pceOpticalNode2 = new PceOpticalNode(node2,
+        pceOpticalNode2 = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node2,
                 OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
         pceLink.setClient("XPONDER-CLIENT");
index 1a69d3db4ad54bcfe3208fe69c723986efd73915..4f2bf07dc1c96c1a277b121271554ca665431e05 100644 (file)
@@ -42,7 +42,7 @@ public class PceProviderTest extends AbstractTest {
         requestProcessor = Mockito.mock(RequestProcessor.class);
         networkTransaction = new NetworkTransactionImpl(requestProcessor);
         pathComputationService = new PathComputationServiceImpl(networkTransaction, notificationPublishService,
-                null);
+                null, null);
         pceProvider = new PceProvider(rpcService, pathComputationService);
     }
 
index 3e953ea865150766e57eeb6ef351bc15c9e60319..48fdc779438fe3f60ce4353f47c4d31b7add7b46 100644 (file)
@@ -13,7 +13,9 @@ import static org.junit.Assert.assertNotNull;
 import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
@@ -32,6 +34,8 @@ public class PceServiceRPCImplTest extends AbstractTest {
     private NotificationPublishService notificationPublishService;
     private NetworkTransactionImpl networkTransaction;
     private PceServiceRPCImpl pceServiceRPC;
+    @Mock
+    private PortMapping portMapping;
 
     @Before
     public void setUp() throws ExecutionException, InterruptedException {
@@ -40,7 +44,7 @@ public class PceServiceRPCImplTest extends AbstractTest {
         notificationPublishService = new NotificationPublishServiceMock();
         networkTransaction =  new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker()));
         pathComputationService = new PathComputationServiceImpl(networkTransaction, notificationPublishService,
-                null);
+                null, portMapping);
         pceServiceRPC = new PceServiceRPCImpl(pathComputationService);
 
     }
index 4aeed59ab6340e15366d8478530089a753ef72d2..46c78cab7c0f3184c4ff423262ef164acc5c06c3 100644 (file)
@@ -42,7 +42,8 @@ public class PceCalculationTest extends AbstractTest {
                 new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())),
                 pceConstraintsCalc.getPceHardConstraints(),
                 pceConstraintsCalc.getPceSoftConstraints(),
-                pceResult);
+                pceResult,
+                null);
     }
 
     @Test
@@ -64,7 +65,7 @@ public class PceCalculationTest extends AbstractTest {
                 new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())),
                 pceConstraintsCalc.getPceHardConstraints(),
                 pceConstraintsCalc.getPceSoftConstraints(),
-                pceResult);
+                pceResult, null);
         pceCalculation.retrievePceNetwork();
         Assert.assertEquals(StringConstants.SERVICE_TYPE_100GE, pceCalculation.getServiceType());
         Assert.assertNotNull(pceCalculation.getReturnStructure());
@@ -85,7 +86,7 @@ public class PceCalculationTest extends AbstractTest {
                 new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())),
                 pceConstraintsCalc.getPceHardConstraints(),
                 pceConstraintsCalc.getPceSoftConstraints(),
-                pceResult);
+                pceResult, null);
 
         pceCalculation.retrievePceNetwork();
 //        Assert.assertEquals(StringConstants.SERVICE_TYPE_100GE, pceCalculation.getServiceType());
index 1932ee3f31dd82a8e755f908ccbb2662ec4d84a8..86ccb49749be3e2aa22bc936048ef107b6a0c260 100644 (file)
@@ -14,9 +14,12 @@ import java.util.Map;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev191129.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder;
@@ -53,10 +56,14 @@ public class PceLinkTest extends AbstractTest {
 
     private static final String LINK_ID_FORMAT = "%1$s-%2$sto%3$s-%4$s";
     private PceLink pceLink = null;
+    private String deviceNodeId = "device node";
+    private String serviceType = "100GE";
+    @Mock
+    private PortMapping portMapping;
 
     @Before
     public void setup() {
-
+        MockitoAnnotations.initMocks(this);
     }
 
     @Test
@@ -66,7 +73,7 @@ public class PceLinkTest extends AbstractTest {
                 "srcTp", "destTp").build();
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
@@ -79,7 +86,7 @@ public class PceLinkTest extends AbstractTest {
 
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
@@ -92,7 +99,7 @@ public class PceLinkTest extends AbstractTest {
 
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
 
@@ -106,7 +113,7 @@ public class PceLinkTest extends AbstractTest {
 
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
@@ -119,7 +126,7 @@ public class PceLinkTest extends AbstractTest {
 
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
-        PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
+        PceOpticalNode pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
         Assert.assertNotNull(MapUtils.getOmsAttributesSpan(link));
index 06f7565d4d4bd937d1d20d160e1bd61896b4b7a9..c73fc10c33e7603adbe6131343b35c488cfde7a5 100644 (file)
@@ -16,10 +16,13 @@ import java.util.Map;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.fixedflex.GridUtils;
+import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
@@ -62,26 +65,31 @@ public class PceOpticalNodeTest extends AbstractTest {
     private Node node;
     private BitSet usedBitSet = new BitSet(8);
     private BitSet availableBitSet = new BitSet(8);
+    private String deviceNodeId = "device node";
+    private String serviceType = "100GE";
+    @Mock
+    private PortMapping portMapping;
 
     @Before
     public void setUp() {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
         node = node1Builder.setNodeId(new NodeId("test")).build();
         availableBitSet.set(0,8);
+        MockitoAnnotations.initMocks(this);
     }
 
     @Test
     public void isValidTest() {
         OpenroadmNodeType nodeType = OpenroadmNodeType.ROADM;
-        pceOpticalNode = new PceOpticalNode(node, nodeType, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1,
-                GridConstant.SLOT_WIDTH_50);
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node, nodeType,
+            StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         Assert.assertTrue(pceOpticalNode.isValid());
     }
 
     @Test
     public void testInitSrgTps() {
 
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         pceOpticalNode.initXndrTps(ServiceFormat.OMS);
@@ -98,7 +106,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     public void testInitXndrTpSrgTypes() {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK);
         Node specificNode = node1Builder.build();
-        pceOpticalNode = new PceOpticalNode(specificNode,
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, specificNode,
                 OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
@@ -108,7 +116,7 @@ public class PceOpticalNodeTest extends AbstractTest {
 
     @Test
     public void testInitXndrTpDegTypes() {
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
@@ -118,7 +126,7 @@ public class PceOpticalNodeTest extends AbstractTest {
 
     @Test
     public void testInitXndrTpXpondrTypes() {
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(deviceNodeId, serviceType, portMapping, node,
                 OpenroadmNodeType.XPONDER, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
@@ -128,7 +136,7 @@ public class PceOpticalNodeTest extends AbstractTest {
 
     @Test
     public void testinitFrequenciesBitSet() {
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(null, null, null, node,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initXndrTps(ServiceFormat.OMS);
         pceOpticalNode.initFrequenciesBitSet();
@@ -139,7 +147,7 @@ public class PceOpticalNodeTest extends AbstractTest {
 
     @Test
     public void testGetRdmSrgClient() {
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(null, null, null, node,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
@@ -152,7 +160,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     public void testGetRdmSrgClientEmpty() {
         NodeBuilder node1Builder = getNodeBuilderEmpty(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
         Node specificNode = node1Builder.setNodeId(new NodeId("test")).build();
-        pceOpticalNode = new PceOpticalNode(specificNode,
+        pceOpticalNode = new PceOpticalNode(null, null, null, specificNode,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         pceOpticalNode.initFrequenciesBitSet();
@@ -165,7 +173,7 @@ public class PceOpticalNodeTest extends AbstractTest {
 
     @Test
     public void testGetRdmSrgClientDeg() {
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(null, null, null, node,
                 OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
@@ -178,7 +186,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     public void testGetRdmSrgClientsrgtxcp() {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXCP);
         Node specificNode = node1Builder.build();
-        pceOpticalNode = new PceOpticalNode(specificNode,
+        pceOpticalNode = new PceOpticalNode(null, null, null, specificNode,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertFalse(pceOpticalNode.isValid());
@@ -191,7 +199,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     public void testGetRdmSrgClientDegreerxtpp() {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.DEGREERXTTP);
         node = node1Builder.build();
-        pceOpticalNode = new PceOpticalNode(node,
+        pceOpticalNode = new PceOpticalNode(null, null, null, node,
                 OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
index 013a4cccae5065a8a511b14a9d3d0500b084928a..4a431368715be6c59db05d3d3c4380967468086e 100644 (file)
@@ -47,7 +47,7 @@ public class PathComputationServiceImplTest extends AbstractTest {
         gnpyResult = Mockito.mock(GnpyResult.class);
         pathComputationServiceImpl = new PathComputationServiceImpl(
                 networkTransactionService,
-                this.getNotificationPublishService(), null);
+                this.getNotificationPublishService(), null, null);
         pathComputationServiceImpl.init();
     }