Use slot width granularity in PCE 62/94562/8
authormanuedelf <emmanuelle.delfour@orange.com>
Fri, 18 Dec 2020 07:26:27 +0000 (08:26 +0100)
committermanuedelf <emmanuelle.delfour@orange.com>
Tue, 12 Jan 2021 08:51:40 +0000 (09:51 +0100)
Adding a new constraint in spectrum assignment for path calculation:
slot width granularity from mc capabilities. If for node, slot width
granularity is equals to 50GHz then spectrum assignment will be done
in fixed mode.
- Add new method to PceNode interface and its implementation to get
 slot width granularity.
- Add new method to MappingUtils to get mc capabilities for a node.
- Update unit tests

JIRA: TRNSPRTPCE-230
Signed-off-by: manuedelf <emmanuelle.delfour@orange.com>
Change-Id: I84356d45c1b8652a05fee0ef66aa53b50b1de5b0

15 files changed:
common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtils.java
common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java
common/src/test/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImplTest.java
common/src/test/resources/network.json [new file with mode: 0644]
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/PceNode.java
pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java
pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOtnNode.java
pce/src/test/java/org/opendaylight/transportpce/pce/PcePathDescriptionTests.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/networkanalyzer/PceLinkTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNodeTest.java

index 42797c712334850ed27eacfeaec59747c88afb3e..b617cec39d883c59f2a1dc074e051ba9a7840ec0 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.transportpce.common.mapping;
 
+import java.util.List;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilities;
+
 public interface MappingUtils {
 
     /*
@@ -14,4 +17,11 @@ public interface MappingUtils {
         supported by the device.
      */
     String getOpenRoadmVersion(String nodeId);
+
+    /**
+     * Get list of mc capabilities for node with nodeId.
+     * @param nodeId String
+     * @return the list of McCapabilities for the node.
+     */
+    List<McCapabilities> getMcCapabilitiesForNode(String nodeId);
 }
index fd8ec6c2cdecf7f3654114fdcc46c1feda27324f..8da678ef7b59358f4ac5ddb05a3bca145b8d03c4 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.transportpce.common.mapping;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.mdsal.binding.api.DataBroker;
@@ -16,6 +18,7 @@ import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilities;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
@@ -62,4 +65,32 @@ public class MappingUtilsImpl implements MappingUtils {
         }
         return null;
     }
+
+    /*
+    * (non-Javadoc)
+    *
+    * @see org.opendaylight.transportpce.common.mapping.MappingUtils#getMcCapabilitiesForNode(java.lang.String)
+    */
+    @Override
+    public List<McCapabilities> getMcCapabilitiesForNode(String nodeId) {
+        List<McCapabilities> mcCapabilities = new ArrayList<>();
+        InstanceIdentifier<Nodes> nodePortMappingIID = InstanceIdentifier.builder(Network.class)
+                .child(Nodes.class, new NodesKey(nodeId)).build();
+        try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
+            Optional<Nodes> nodePortMapObject = readTx.read(LogicalDatastoreType.CONFIGURATION, nodePortMappingIID)
+                    .get();
+            if (nodePortMapObject.isPresent()) {
+                LOG.info("Found node {}", nodeId);
+                Nodes node = nodePortMapObject.get();
+                mcCapabilities.addAll(node.nonnullMcCapabilities().values());
+            }
+        } catch (ExecutionException e) {
+            LOG.error("Something went wrong while getting node {}", nodeId, e);
+        } catch (InterruptedException e) {
+            LOG.error("Request interrupted for node {} interrupted", nodeId, e);
+            Thread.currentThread().interrupt();
+        }
+        LOG.info("Capabilitities for node {}: {}", nodeId, mcCapabilities);
+        return mcCapabilities;
+    }
 }
index 35dfa697a5f354be35a2157e300f092396d3c9fa..9a4b4323a161079f1e64f4a9d85c644c9ddb2301 100644 (file)
@@ -10,64 +10,74 @@ package org.opendaylight.transportpce.common.mapping;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
 import java.util.concurrent.ExecutionException;
-import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
-import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.transportpce.test.DataStoreContext;
-import org.opendaylight.transportpce.test.DataStoreContextImpl;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.transportpce.test.converter.DataObjectConverter;
+import org.opendaylight.transportpce.test.converter.JSONDataObjectConverter;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfoBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public class MappingUtilsImplTest {
+public class MappingUtilsImplTest extends AbstractTest {
+    private static final Logger LOG = LoggerFactory.getLogger(MappingUtilsImplTest.class);
+    private static MappingUtils mappingUtils;
 
-    private DataBroker dataBroker = null;
-
-    @Before
-    public void setUp() {
-        DataStoreContext dataStoreContext = new DataStoreContextImpl();
-        dataBroker = dataStoreContext.getDataBroker();
+    @BeforeClass
+    public static void setUp() throws InterruptedException, ExecutionException, FileNotFoundException {
+        DataObjectConverter dataObjectConverter = JSONDataObjectConverter
+                .createWithDataStoreUtil(getDataStoreContextUtil());
+        try (Reader reader = new FileReader("src/test/resources/network.json", StandardCharsets.UTF_8)) {
+            NormalizedNode<? extends PathArgument, ?> normalizedNode = dataObjectConverter
+                    .transformIntoNormalizedNode(reader).get();
+            Network network = (Network) getDataStoreContextUtil()
+                    .getBindingDOMCodecServices().fromNormalizedNode(YangInstanceIdentifier
+                            .of(Network.QNAME), normalizedNode).getValue();
+            WriteTransaction writeNetworkTransaction = getDataBroker().newWriteOnlyTransaction();
+            writeNetworkTransaction.put(LogicalDatastoreType.CONFIGURATION,
+                    InstanceIdentifier.builder(Network.class).build(), network);
+            writeNetworkTransaction.commit().get();
+        } catch (IOException e) {
+            LOG.error("Cannot load network ", e);
+            fail("Cannot load network");
+        }
+        mappingUtils = new MappingUtilsImpl(getDataBroker());
     }
 
     @Test
     public void getOpenRoadmVersionTest() throws ExecutionException, InterruptedException {
-        final MappingUtils mappingUtils = new MappingUtilsImpl(dataBroker);
-        final NodeInfo nodeInfo = new NodeInfoBuilder().setOpenroadmVersion(NodeInfo.OpenroadmVersion._121).build();
-        final NodeInfo nodeInfo2 = new NodeInfoBuilder().setOpenroadmVersion(NodeInfo.OpenroadmVersion._221).build();
-        Nodes nodes = new NodesBuilder().setNodeId("nodes").setNodeInfo(nodeInfo).build();
-        Nodes nodes2 = new NodesBuilder().setNodeId("nodes2").setNodeInfo(nodeInfo2).build();
-        Nodes nodes3 = new NodesBuilder().setNodeId("nodes3").build();
-        InstanceIdentifier<Nodes> nodeIID = InstanceIdentifier.builder(Network.class).child(Nodes.class,
-                new NodesKey("nodes")).build();
-        InstanceIdentifier<Nodes> nodeIID2 = InstanceIdentifier.builder(Network.class).child(Nodes.class,
-                new NodesKey("nodes2")).build();
-        InstanceIdentifier<Nodes> nodeIID3 = InstanceIdentifier.builder(Network.class).child(Nodes.class,
-                new NodesKey("nodes3")).build();
-        WriteTransaction wr = dataBroker.newWriteOnlyTransaction();
-
-        //Create a node version 1, a node version 2, and a node no version
-        wr.merge(LogicalDatastoreType.CONFIGURATION, nodeIID, nodes);
-        wr.merge(LogicalDatastoreType.CONFIGURATION, nodeIID2, nodes2);
-        wr.merge(LogicalDatastoreType.CONFIGURATION, nodeIID3, nodes3);
-        wr.commit().get();
-        //Test the versions are returned OK
-        assertEquals("NodeInfo with nodes as id should be 1.2.1 version",
+        assertEquals("NodeInfo with ROADM-C1 as id should be 1.2.1 version",
                 StringConstants.OPENROADM_DEVICE_VERSION_1_2_1,
-                mappingUtils.getOpenRoadmVersion("nodes"));
-        assertEquals("NodeInfo with nodes as id should be 2.2.1 version",
+                mappingUtils.getOpenRoadmVersion("ROADM-C1"));
+        assertEquals("NodeInfo with ROADM-A1 as id should be 2.2.1 version",
                 StringConstants.OPENROADM_DEVICE_VERSION_2_2_1,
-                mappingUtils.getOpenRoadmVersion("nodes2"));
+                mappingUtils.getOpenRoadmVersion("ROADM-A1"));
         assertNull("NodeInfo with nodes3 as id should not exist", mappingUtils.getOpenRoadmVersion("nodes3"));
     }
 
+    @Test
+    public void getMcCapabilitiesForNodeTest() {
+        assertEquals("Mc capabilities list size should be 2", 2,
+                mappingUtils.getMcCapabilitiesForNode("ROADM-A1").size());
+        assertTrue("Mc capabilities list size should be empty",
+                mappingUtils.getMcCapabilitiesForNode("ROADM-A2").isEmpty());
+    }
+
 
 }
diff --git a/common/src/test/resources/network.json b/common/src/test/resources/network.json
new file mode 100644 (file)
index 0000000..14eed1b
--- /dev/null
@@ -0,0 +1,78 @@
+{
+    "transportpce-portmapping:network": {
+        "nodes": [
+            {
+                "node-id": "ROADM-A1",
+                "node-info": {
+                    "node-type": "rdm",
+                    "openroadm-version": "2.2.1",
+                    "node-clli": "nodeA",
+                    "node-vendor": "vendorA",
+                    "node-model": "modelA",
+                    "node-ip-address": "127.0.0.1"
+                },
+                "mapping": [],
+                "mc-capabilities": [
+                    {
+                        "mc-node-name": "DEG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 50
+                    },
+                    {
+                        "mc-node-name": "SRG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 50
+                    }
+                ]
+            },
+            {
+                "node-id": "ROADM-B1",
+                "node-info": {
+                    "node-type": "rdm",
+                    "openroadm-version": "2.2.1",
+                    "node-clli": "nodeB",
+                    "node-vendor": "vendorB",
+                    "node-model": "modelB",
+                    "node-ip-address": "127.0.0.2"
+                },
+                "mapping": [],
+                "mc-capabilities": [
+                    {
+                        "mc-node-name": "DEG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 12.5
+                    },
+                    {
+                        "mc-node-name": "SRG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 12.5
+                    }
+                ]
+            },
+            {
+                "node-id": "ROADM-C1",
+                "node-info": {
+                    "node-type": "rdm",
+                    "openroadm-version": "1.2.1",
+                    "node-clli": "nodeC",
+                    "node-vendor": "vendorC",
+                    "node-model": "modelC",
+                    "node-ip-address": "127.0.0.3"
+                },
+                "mapping": [],
+                "mc-capabilities": [
+                    {
+                        "mc-node-name": "DEG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 50
+                    },
+                    {
+                        "mc-node-name": "SRG1-TTP",
+                        "center-freq-granularity": 6.25,
+                        "slot-width-granularity": 50
+                    }
+                ]
+            }
+        ]
+    }
+}
\ No newline at end of file
index dceefde5e8acca52e18cba79b2752249683e13b5..d1e1d30216e2e27b9a9a446a145d3e24704ea0e9 100644 (file)
@@ -393,14 +393,17 @@ public class PostAlgoPathValidator {
         Arrays.fill(freqMap, (byte) GridConstant.AVAILABLE_SLOT_VALUE);
         BitSet result = BitSet.valueOf(freqMap);
         boolean isFlexGrid = true;
-        LOG.debug("Processing path {} with length {}", path, path.getLength());
+        LOG.info("Processing path {} with length {}", path, path.getLength());
         BitSet pceNodeFreqMap;
         for (PceGraphEdge edge : path.getEdgeList()) {
-            LOG.debug("Processing source {} ", edge.link().getSourceId());
+            LOG.info("Processing source {} ", edge.link().getSourceId());
             if (allPceNodes.containsKey(edge.link().getSourceId())) {
                 PceNode pceNode = allPceNodes.get(edge.link().getSourceId());
-                if (StringConstants.OPENROADM_DEVICE_VERSION_1_2_1.equals(pceNode.getVersion())) {
-                    LOG.info("Node {} is 1.2.1 node", pceNode.getNodeId());
+                LOG.info("Processing PCE node {}", pceNode);
+                if (StringConstants.OPENROADM_DEVICE_VERSION_1_2_1.equals(pceNode.getVersion())
+                        || pceNode.getSlotWidthGranularity().compareTo(GridConstant.SLOT_WIDTH_50) == 0) {
+                    LOG.info("Node {}: version is {} and slot width granularity is {} -> fixed grid mode",
+                            pceNode.getNodeId(), pceNode.getVersion(), pceNode.getSlotWidthGranularity());
                     isFlexGrid = false;
                 }
                 pceNodeFreqMap = pceNode.getBitSetData();
index aeb2938fca93cf83a3ed9c7ff6270a4cdef60541..077105e1ecd113f7717e5b56f3ba304a15377f0d 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.pce.networkanalyzer;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -21,11 +22,13 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.ResponseCodes;
 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.network.NetworkTransactionService;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilities;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
@@ -490,7 +493,8 @@ public class PceCalculation {
             deviceNodeId = node.getNodeId().getValue();
         }
         LOG.info("Device node id {} for {}", deviceNodeId, node);
-        PceOpticalNode pceNode = new PceOpticalNode(node, nodeType, mappingUtils.getOpenRoadmVersion(deviceNodeId));
+        PceOpticalNode pceNode = new PceOpticalNode(node, nodeType, mappingUtils.getOpenRoadmVersion(deviceNodeId),
+                getSlotWidthGranularity(deviceNodeId, node.getNodeId()));
         pceNode.validateAZxponder(anodeId, znodeId, input.getServiceAEnd().getServiceFormat());
         pceNode.initFrequenciesBitSet();
 
@@ -666,4 +670,26 @@ public class PceCalculation {
                     pceNode.getOutgoingLinks());
         }));
     }
+
+    /**
+     * Get mc capability slot width granularity for device.
+     * @param deviceNodeId String
+     * @param nodeId NodeId
+     * @return slot width granularity
+     */
+    private BigDecimal getSlotWidthGranularity(String deviceNodeId, NodeId nodeId) {
+        // nodeId: openroadm-topology level node
+        // deviceNodeId: openroadm-network level node
+        List<McCapabilities> mcCapabilities = mappingUtils.getMcCapabilitiesForNode(deviceNodeId);
+        String[] params = nodeId.getValue().split("-");
+        // DEGX or SRGX
+        String rdmModuleName = params[params.length - 1];
+        for (McCapabilities mcCapabitility : mcCapabilities) {
+            if (mcCapabitility.getMcNodeName().contains(rdmModuleName)
+                    && mcCapabitility.getSlotWidthGranularity() != null) {
+                return mcCapabitility.getSlotWidthGranularity().getValue();
+            }
+        }
+        return GridConstant.SLOT_WIDTH_50;
+    }
 }
index 35b1dee3bf41101a071bcb7f17b5c12e7148ee7b..27f99331f43a527c03980ff534574fc4bbfe2ed0 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.pce.networkanalyzer;
 
+import java.math.BigDecimal;
 import java.util.BitSet;
 import java.util.List;
 import java.util.Map;
@@ -48,4 +49,10 @@ public interface PceNode {
      * @return BitSet.
      */
     BitSet getBitSetData();
+
+    /**
+     * For optical node the slot width granularity from mc capabilities.
+     * @return BigDecimal.
+     */
+    BigDecimal getSlotWidthGranularity();
 }
index 17000587b6fa564f35997fa9d456c14d1590f982..fb463e762dddee4a9fc8e0f49e9e5d9387772faf 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.pce.networkanalyzer;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.BitSet;
@@ -47,18 +48,21 @@ public class PceOpticalNode implements PceNode {
     private final AvailFreqMapsKey freqMapKey = new AvailFreqMapsKey(GridConstant.C_BAND);
     private BitSet frequenciesBitSet;
     private String version;
+    private BigDecimal slotWidthGranularity;
 
-    public PceOpticalNode(Node node, OpenroadmNodeType nodeType, String version) {
+    public PceOpticalNode(Node node, OpenroadmNodeType nodeType, String version, BigDecimal slotWidthGranularity) {
         if (node != null
                 && node.getNodeId() != null
                 && nodeType != null
-                && version != null) {
+                && version != null
+                && slotWidthGranularity != null) {
             this.node = node;
             this.nodeId = node.getNodeId();
             this.nodeType = nodeType;
             this.version = version;
+            this.slotWidthGranularity = slotWidthGranularity;
         } else {
-            LOG.error("PceNode: one of parameters is not populated : nodeId, node type");
+            LOG.error("PceNode: one of parameters is not populated : nodeId, node type, slot width granularity");
             this.valid = false;
         }
     }
@@ -372,4 +376,14 @@ public class PceOpticalNode implements PceNode {
         return this.version;
     }
 
+    /*
+    * (non-Javadoc)
+    *
+    * @see org.opendaylight.transportpce.pce.networkanalyzer.PceNode#getSlotWidthGranularity()
+    */
+    @Override
+    public BigDecimal getSlotWidthGranularity() {
+        return slotWidthGranularity;
+    }
+
 }
index 931b621f82a9b893183f1a5fcfd3a37d0068a6f4..80fc4a13ec86f5b2896db0ca742fe7083ad1ac41 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.pce.networkanalyzer;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Comparator;
@@ -544,4 +545,14 @@ public class PceOtnNode implements PceNode {
         // TODO Auto-generated method stub
         return null;
     }
+
+    /*
+    * (non-Javadoc)
+    *
+    * @see org.opendaylight.transportpce.pce.networkanalyzer.PceNode#getSlotWidthGranularity()
+    */
+    @Override
+    public BigDecimal getSlotWidthGranularity() {
+        return null;
+    }
 }
index 9e7496255d034bdd47cc6fbc7baad7853edce3f6..323f0c454dccd5bb7bc37c84df8e16fb509df0dc 100644 (file)
@@ -14,6 +14,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
 import org.opendaylight.transportpce.common.network.RequestProcessor;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
@@ -52,9 +53,9 @@ public class PcePathDescriptionTests extends AbstractTest {
         NodeBuilder node1Builder = NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes());
         node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
 
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
         pceLink.setClient("XPONDER-CLIENT");
index ad6b006bf45d02bb78eba973380eedd828620201..74f1051ad85132813c1c1231ea0cf6e363528904 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));
+        pceConstraints.setIncludePceNode(new PceOpticalNode(null, null, null, null));
         Assert.assertTrue(pceConstraints.getIncludePceNodes().size() == 1);
 
     }
index fc32c64064c903dae2c5a159e62fa7e9bda838df..9e8a61dc4617619154f57729da250fa5958a51ff 100644 (file)
@@ -12,6 +12,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceOpticalNode;
 import org.opendaylight.transportpce.pce.utils.NodeUtils;
@@ -38,9 +39,9 @@ public class PceGraphEdgeTest {
         node =  NodeUtils.getNodeBuilder(NodeUtils.geSupportingNodes()).build();
 
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         PceOpticalNode pceOpticalNode2 = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
 
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
         pceLink.setClient("XPONDER-CLIENT");
index 9e8575717af04926ea5b7260464bcc55cad35759..cedf39046d1780fe1b35cf08f2fe962c04acbe6a 100644 (file)
@@ -14,6 +14,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 import org.opendaylight.transportpce.pce.constraints.PceConstraints;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceLink;
 import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
@@ -57,12 +58,12 @@ public class PceGraphTest {
                 .setNodeId(nodeId).withKey(new NodeKey(nodeId))
                 .build();
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                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,
-                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode2);
         pceLink.setClient("XPONDER-CLIENT");
 
index 8e1dabc6a334c7d5a11f4aa8811182db5c26db0e..2bccf8c35f4dd230cc753dc6596fdf13b78b0ee2 100644 (file)
@@ -16,6 +16,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.transportpce.common.NetworkUtils;
 import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.transportpce.common.fixedflex.GridConstant;
 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;
@@ -69,7 +70,7 @@ public class PceLinkTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
 
@@ -82,7 +83,7 @@ public class PceLinkTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
 
@@ -95,7 +96,7 @@ public class PceLinkTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
 
     }
@@ -109,7 +110,7 @@ public class PceLinkTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
     }
 
@@ -122,7 +123,7 @@ public class PceLinkTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes());
         Node node = node1Builder.setNodeId(new NodeId("test")).build();
         PceOpticalNode pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceLink = new PceLink(link, pceOpticalNode, pceOpticalNode);
         Assert.assertNotNull(MapUtils.getOmsAttributesSpan(link));
         Assert.assertNotNull(pceLink.calcSpanOSNR());
index ab7b3be0e7074279728f7acce45a84328c530065..06f7565d4d4bd937d1d20d160e1bd61896b4b7a9 100644 (file)
@@ -73,7 +73,8 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void isValidTest() {
         OpenroadmNodeType nodeType = OpenroadmNodeType.ROADM;
-        pceOpticalNode = new PceOpticalNode(node, nodeType, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+        pceOpticalNode = new PceOpticalNode(node, nodeType, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1,
+                GridConstant.SLOT_WIDTH_50);
         Assert.assertTrue(pceOpticalNode.isValid());
     }
 
@@ -81,7 +82,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     public void testInitSrgTps() {
 
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         pceOpticalNode.initXndrTps(ServiceFormat.OMS);
         pceOpticalNode.initFrequenciesBitSet();
@@ -98,7 +99,7 @@ public class PceOpticalNodeTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK);
         Node specificNode = node1Builder.build();
         pceOpticalNode = new PceOpticalNode(specificNode,
-                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.SRG, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
         Assert.assertEquals(availableBitSet, pceOpticalNode.getBitSetData().get(88,96));
@@ -108,7 +109,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void testInitXndrTpDegTypes() {
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
         Assert.assertEquals(usedBitSet,pceOpticalNode.getBitSetData().get(88,96));
@@ -118,7 +119,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void testInitXndrTpXpondrTypes() {
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.XPONDER, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.XPONDER, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertTrue(pceOpticalNode.isValid());
         Assert.assertEquals(availableBitSet, pceOpticalNode.getBitSetData().get(88,96));
@@ -128,7 +129,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void testinitFrequenciesBitSet() {
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initXndrTps(ServiceFormat.OMS);
         pceOpticalNode.initFrequenciesBitSet();
         Assert.assertFalse(pceOpticalNode.isValid());
@@ -139,7 +140,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void testGetRdmSrgClient() {
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
         Assert.assertFalse(pceOpticalNode.isValid());
@@ -152,7 +153,7 @@ public class PceOpticalNodeTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilderEmpty(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
         Node specificNode = node1Builder.setNodeId(new NodeId("test")).build();
         pceOpticalNode = new PceOpticalNode(specificNode,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         pceOpticalNode.initFrequenciesBitSet();
         pceOpticalNode.initXndrTps(ServiceFormat.OMS);
@@ -165,7 +166,7 @@ public class PceOpticalNodeTest extends AbstractTest {
     @Test
     public void testGetRdmSrgClientDeg() {
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.DEGREE, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
         Assert.assertFalse(pceOpticalNode.isValid());
@@ -178,7 +179,7 @@ public class PceOpticalNodeTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXCP);
         Node specificNode = node1Builder.build();
         pceOpticalNode = new PceOpticalNode(specificNode,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertFalse(pceOpticalNode.isValid());
         Assert.assertNull(pceOpticalNode.getBitSetData());
@@ -191,7 +192,7 @@ public class PceOpticalNodeTest extends AbstractTest {
         NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.DEGREERXTTP);
         node = node1Builder.build();
         pceOpticalNode = new PceOpticalNode(node,
-                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1);
+                OpenroadmNodeType.ROADM, StringConstants.OPENROADM_DEVICE_VERSION_2_2_1, GridConstant.SLOT_WIDTH_50);
         pceOpticalNode.initSrgTps();
         Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
         Assert.assertFalse(pceOpticalNode.isValid());