Adapt PCE to compute a 400GE path 41/95141/8
authorChristophe Betoule <christophe.betoule@orange.com>
Thu, 11 Feb 2021 11:24:03 +0000 (12:24 +0100)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Tue, 2 Mar 2021 10:26:50 +0000 (10:26 +0000)
- 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 6d11ddf2196781ac05cdc60e70a22b6996b2c877..9e5fc4bcd6c7252ac1e442d9453f2e9b8320bb9e 100644 (file)
@@ -92,6 +92,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()));
@@ -113,6 +114,7 @@ public class PcePathDescription {
                 }
                 break;
             default:
+                LOG.warn("unknown service type : unable to set Min/Max frequencies");
                 break;
         }
         return atoZDirectionBldr;
@@ -129,6 +131,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()));
@@ -150,6 +153,7 @@ public class PcePathDescription {
                 }
                 break;
             default:
+                LOG.warn("unknown service type : unable to set Min/Max frequencies");
                 break;
         }
         return ztoADirectionBldr;
index d0610c8cf1c9868d0cd9ab1ad6a744fe4ed2d7ce..c0da36d19750160fe9d52a8b8092d174faef445f 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 0c90ce290f3cd350867bf8006c122957a837d7d2..2b199309eb831afc3f5b6cac6f537ec994d4b8ac 100644 (file)
@@ -97,7 +97,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;
             }
 
@@ -111,6 +111,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 508191f3a350c67fb66fbc5cfda4041b02b7554f..6fb58fcdd56e204fa5734d8ad669c18192374fe7 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;
@@ -81,6 +82,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;
@@ -89,13 +91,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();
     }
 
@@ -155,7 +159,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;
@@ -184,14 +190,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();
@@ -251,8 +256,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);
@@ -374,9 +380,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);
@@ -486,18 +493,18 @@ 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;
         }
         if (State.OutOfService.equals(node1.getOperationalState())) {
             LOG.error("getNodeType: node is ignored due to operational state - {}", node1.getOperationalState()
                     .getName());
-            return false;
+            return;
         }
         OpenroadmNodeType nodeType = node1.getNodeType();
         String deviceNodeId = MapUtils.getSupNetworkNode(node);
@@ -506,18 +513,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")) {
@@ -530,7 +538,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) {
@@ -557,7 +565,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) {
@@ -568,10 +576,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;
@@ -581,10 +589,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 210a2c653cfb64fb4a2ba673d3d98aa6f6ec42cd..86688d2b31c8b084cf1bb0f39028dcd7b0a820a5 100644 (file)
@@ -18,7 +18,9 @@ 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.common.state.types.rev191129.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
@@ -26,6 +28,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev20052
 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;
@@ -40,9 +44,12 @@ public class PceOpticalNode implements PceNode {
 
     private Node node;
     private NodeId nodeId;
+    private String deviceNodeId;
     private OpenroadmNodeType nodeType;
     private AdminStates adminStates;
     private State state;
+    private String serviceType;
+    private PortMapping portMapping;
 
     private Map<String, OpenroadmTpType> availableSrgPp = new TreeMap<>();
     private Map<String, OpenroadmTpType> availableSrgCp = new TreeMap<>();
@@ -54,12 +61,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;
@@ -150,6 +164,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;
@@ -223,18 +264,22 @@ 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);
-            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) {
                 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;
+            }
             if (!State.InService.equals(cntp1.getOperationalState())) {
                 LOG.warn("initXndrTps: XPONDER tp = {} is OOS/degraded", tp.getTpId().getValue());
                 this.valid = false;
                 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 (nttp1 != null && nttp1.getXpdrNetworkAttributes().getWavelength() != null) {
                 this.usedXpndrNWTps.add(tp.getTpId().getValue());
                 LOG.info("initXndrTps: XPONDER tp = {} is used", tp.getTpId().getValue());
index 24ec30ff404eeab453df8520f2fb82d41ee5c609..d3536def95575a62112371c9c7b1572fa06bf6ac 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 d07c0140799d8cb15be007111562a993399f6198..243a1bb17d52b6936879e55eed12a706128d23d8 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;
@@ -58,10 +61,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
@@ -71,7 +78,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);
     }
@@ -84,7 +91,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);
     }
@@ -97,7 +104,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);
 
@@ -111,7 +118,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);
     }
@@ -124,7 +131,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 935a5d8a57581fc6a3a0263bfbdcec6e9e714512..da0144307aeaf1a29820cc4f7a10f92eff4393f6 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.Node1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder;
@@ -65,26 +68,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);
@@ -101,7 +109,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());
@@ -111,7 +119,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());
@@ -121,7 +129,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());
@@ -131,7 +139,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();
@@ -142,7 +150,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"));
@@ -155,7 +163,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();
@@ -168,7 +176,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"));
@@ -181,7 +189,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());
@@ -194,7 +202,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 0ab6d1c1e1227526f53eeb798889bba2b26ee2d5..29d40e3299c60ce4ff8fe56d2cf83c78005a191b 100644 (file)
@@ -49,7 +49,7 @@ public class PathComputationServiceImplTest extends AbstractTest {
         gnpyResult = Mockito.mock(GnpyResult.class);
         pathComputationServiceImpl = new PathComputationServiceImpl(
                 networkTransactionService,
-                this.getNotificationPublishService(), null);
+                this.getNotificationPublishService(), null, null);
         pathComputationServiceImpl.init();
     }