Measure and set spanloss with one fractional digit 79/90179/3
authorJonas Mårtensson <jonas.martensson@ri.se>
Sun, 31 May 2020 18:39:11 +0000 (20:39 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Tue, 9 Jun 2020 14:51:55 +0000 (14:51 +0000)
Currently spanloss is measured and set without any fractional digits.
This patch proposes to use one fractional digit for more precise
calculation of target power value.

Unit tests and functional tests have been updated with the more precise
spanloss and power values.

Signed-off-by: Jonas Mårtensson <jonas.martensson@ri.se>
Change-Id: I7b7aba070f7ecf7894c89de9807b686f75eecfeb

olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java
olm/src/test/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImplSpanLossBaseTest.java
tests/transportpce_tests/1.2.1/test_olm.py
tests/transportpce_tests/2.2.1/test_olm.py

index 943ad6b5cea5b1a7388a43349ecf62244bed0906..a0f3a77bf11026093c207a8c0c1066debb92e0d7 100644 (file)
@@ -528,7 +528,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
                 continue;
             }
             spanLoss = new BigDecimal(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
-                .setScale(0, RoundingMode.HALF_UP);
+                .setScale(1, RoundingMode.HALF_UP);
             LOG.info("Spanloss Calculated as :{}={}-{}",
                 spanLoss, srcOtsPmHoler.getOtsParameterVal(), destOtsPmHoler.getOtsParameterVal());
             if (spanLoss.doubleValue() > 28) {
index bf8b202ed4ac7363592385a8f02e2cedbe3763bc..ff3967b8e69be544d1576a878523810b7e19784f 100644 (file)
@@ -153,7 +153,7 @@ public class OlmPowerServiceImplSpanLossBaseTest extends AbstractTest {
 
         Assert.assertEquals("Success", output.getResult());
         Assert.assertEquals("ROADM-A1-to-ROADM-C1", output.getSpans().get(0).getLinkId().getValue());
-        Assert.assertEquals("15", output.getSpans().get(0).getSpanloss());
+        Assert.assertEquals("14.6", output.getSpans().get(0).getSpanloss());
     }
 
     @Test
@@ -176,6 +176,6 @@ public class OlmPowerServiceImplSpanLossBaseTest extends AbstractTest {
 
         Assert.assertEquals("Success", output.getResult());
         Assert.assertEquals("ROADM-A1-to-ROADM-C1", output.getSpans().get(0).getLinkId().getValue());
-        Assert.assertEquals("15", output.getSpans().get(0).getSpanloss());
+        Assert.assertEquals("14.6", output.getSpans().get(0).getSpanloss());
     }
 }
index b284f3d7de836b12b18aa6b3ce24feac38dcf106..a6059ecb3891e0602007f7ace924d0d83f178480 100644 (file)
@@ -368,7 +368,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-            "spanloss": "6",
+            "spanloss": "5.7",
             "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
         }, res["output"]["spans"])
         time.sleep(5)
@@ -389,11 +389,11 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-            "spanloss": "15",
+            "spanloss": "15.1",
             "link-id": "ROADMC01-DEG2-DEG2-TTP-TXRXtoROADMA01-DEG1-DEG1-TTP-TXRX"
         }, res["output"]["spans"])
         self.assertIn({
-            "spanloss": "6",
+            "spanloss": "5.7",
             "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
         }, res["output"]["spans"])
         time.sleep(5)
@@ -407,8 +407,8 @@ class TransportOlmTesting(unittest.TestCase):
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(15, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_16_get_OTS_DEG2_TTP_TXRX_ROADMC(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
@@ -419,8 +419,8 @@ class TransportOlmTesting(unittest.TestCase):
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(15, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_17_servicePath_create_AToZ(self):
         url = "{}/operations/transportpce-device-renderer:service-path".format(self.restconf_baseurl)
@@ -566,7 +566,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
-        self.assertEqual(-3, res['roadm-connections'][0]['target-output-power'])
+        self.assertEqual(-3.3, res['roadm-connections'][0]['target-output-power'])
 
     def test_22_get_roadmconnection_ROADMC(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC01/yang-ext:mount/"
index c721d591aec4e54c1e19a7842c6f01e67dd180c1..8a006833591a8ee1656786087753b199dc32faa2 100644 (file)
@@ -370,7 +370,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-            "spanloss": "18",
+            "spanloss": "17.6",
             "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
         }, res["output"]["spans"])
         time.sleep(5)
@@ -391,11 +391,11 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-            "spanloss": "26",
+            "spanloss": "25.7",
             "link-id": "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX"
         }, res["output"]["spans"])
         self.assertIn({
-            "spanloss": "18",
+            "spanloss": "17.6",
             "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
         }, res["output"]["spans"])
         time.sleep(5)
@@ -409,8 +409,8 @@ class TransportOlmTesting(unittest.TestCase):
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(18, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(26, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(17.6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(25.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_16_get_OTS_DEG1_TTP_TXRX_ROADMC(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
@@ -421,8 +421,8 @@ class TransportOlmTesting(unittest.TestCase):
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(26, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(18, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(25.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(17.6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_17_servicePath_create_AToZ(self):
         url = "{}/operations/transportpce-device-renderer:service-path".format(self.restconf_baseurl)