27d8ba69cb53dba99d03dc01819d0bb2ee7f5df7
[transportpce.git] / tests / transportpce_tests / 1.2.1 / test05_olm.py
1 #!/usr/bin/env python
2
3 #############################################################################
4 # Copyright (c) 2017 Orange, Inc. and others.  All rights reserved.
5 #
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #############################################################################
11
12 # pylint: disable=no-member
13 # pylint: disable=too-many-public-methods
14
15 import unittest
16 import time
17 import requests
18 # pylint: disable=wrong-import-order
19 import sys
20 sys.path.append('transportpce_tests/common/')
21 # pylint: disable=wrong-import-position
22 # pylint: disable=import-error
23 import test_utils  # nopep8
24
25
26 class TransportOlmTesting(unittest.TestCase):
27
28     processes = None
29     NODE_VERSION = '1.2.1'
30
31     @classmethod
32     def setUpClass(cls):
33         cls.processes = test_utils.start_tpce()
34         cls.processes = test_utils.start_sims([('xpdra', cls.NODE_VERSION),
35                                                ('roadma-full', cls.NODE_VERSION),
36                                                ('roadmc-full', cls.NODE_VERSION),
37                                                ('xpdrc', cls.NODE_VERSION)])
38
39     @classmethod
40     def tearDownClass(cls):
41         # pylint: disable=not-an-iterable
42         for process in cls.processes:
43             test_utils.shutdown_process(process)
44         print("all processes killed")
45
46     def setUp(self):
47         # pylint: disable=consider-using-f-string
48         print("execution of {}".format(self.id().split(".")[-1]))
49         time.sleep(1)
50
51     def test_01_xpdrA_device_connected(self):
52         response = test_utils.mount_device("XPDRA01", ('xpdra', self.NODE_VERSION))
53         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
54
55     def test_02_xpdrC_device_connected(self):
56         response = test_utils.mount_device("XPDRC01", ('xpdrc', self.NODE_VERSION))
57         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
58
59     def test_03_rdmA_device_connected(self):
60         response = test_utils.mount_device("ROADMA01", ('roadma-full', self.NODE_VERSION))
61         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
62
63     def test_04_rdmC_device_connected(self):
64         response = test_utils.mount_device("ROADMC01", ('roadmc-full', self.NODE_VERSION))
65         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
66
67     def test_05_connect_xprdA_to_roadmA(self):
68         response = test_utils.connect_xpdr_to_rdm_request("XPDRA01", "1", "1",
69                                                           "ROADMA01", "1", "SRG1-PP1-TXRX")
70         self.assertEqual(response.status_code, requests.codes.ok)
71         res = response.json()
72         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
73
74     def test_06_connect_roadmA_to_xpdrA(self):
75         response = test_utils.connect_rdm_to_xpdr_request("XPDRA01", "1", "1",
76                                                           "ROADMA01", "1", "SRG1-PP1-TXRX")
77         self.assertEqual(response.status_code, requests.codes.ok)
78         res = response.json()
79         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
80
81     def test_07_connect_xprdC_to_roadmC(self):
82         response = test_utils.connect_xpdr_to_rdm_request("XPDRC01", "1", "1",
83                                                           "ROADMC01", "1", "SRG1-PP1-TXRX")
84         self.assertEqual(response.status_code, requests.codes.ok)
85         res = response.json()
86         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
87
88     def test_08_connect_roadmC_to_xpdrC(self):
89         response = test_utils.connect_rdm_to_xpdr_request("XPDRC01", "1", "1",
90                                                           "ROADMC01", "1", "SRG1-PP1-TXRX")
91         self.assertEqual(response.status_code, requests.codes.ok)
92         res = response.json()
93         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
94
95     def test_09_create_OTS_ROADMA(self):
96         response = test_utils.create_ots_oms_request("ROADMA01", "DEG1-TTP-TXRX")
97         self.assertEqual(response.status_code, requests.codes.ok)
98         res = response.json()
99         self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADMA01',
100                       res["output"]["result"])
101
102     def test_10_create_OTS_ROADMC(self):
103         response = test_utils.create_ots_oms_request("ROADMC01", "DEG2-TTP-TXRX")
104         self.assertEqual(response.status_code, requests.codes.ok)
105         res = response.json()
106         self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADMC01',
107                       res["output"]["result"])
108
109     def test_11_get_PM_ROADMA(self):
110         url = "{}/operations/transportpce-olm:get-pm"
111         data = {
112             "input": {
113                 "node-id": "ROADMA01",
114                 "resource-type": "interface",
115                 "granularity": "15min",
116                 "resource-identifier": {
117                     "resource-name": "OTS-DEG1-TTP-TXRX"
118                 }
119             }
120         }
121         response = test_utils.post_request(url, data)
122         self.assertEqual(response.status_code, requests.codes.ok)
123         res = response.json()
124         self.assertIn({
125             "pmparameter-name": "OpticalPowerOutput",
126             "pmparameter-value": "2.5"
127         }, res["output"]["measurements"])
128         self.assertIn({
129             "pmparameter-name": "OpticalReturnLoss",
130             "pmparameter-value": "49.9"
131         }, res["output"]["measurements"])
132         self.assertIn({
133             "pmparameter-name": "OpticalPowerInput",
134             "pmparameter-value": "3"
135         }, res["output"]["measurements"])
136
137     def test_12_get_PM_ROADMC(self):
138         url = "{}/operations/transportpce-olm:get-pm"
139         data = {
140             "input": {
141                 "node-id": "ROADMC01",
142                 "resource-type": "interface",
143                 "granularity": "15min",
144                 "resource-identifier": {
145                     "resource-name": "OTS-DEG2-TTP-TXRX"
146                 }
147             }
148         }
149         response = test_utils.post_request(url, data)
150         self.assertEqual(response.status_code, requests.codes.ok)
151         res = response.json()
152         self.assertIn({
153             "pmparameter-name": "OpticalPowerOutput",
154             "pmparameter-value": "18.1"
155         }, res["output"]["measurements"])
156         self.assertIn({
157             "pmparameter-name": "OpticalReturnLoss",
158             "pmparameter-value": "48.8"
159         }, res["output"]["measurements"])
160         self.assertIn({
161             "pmparameter-name": "OpticalPowerInput",
162             "pmparameter-value": "-3.2"
163         }, res["output"]["measurements"])
164
165     def test_13_calculate_span_loss_base_ROADMA_ROADMC(self):
166         url = "{}/operations/transportpce-olm:calculate-spanloss-base"
167         data = {
168             "input": {
169                 "src-type": "link",
170                 "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
171             }
172         }
173         response = test_utils.post_request(url, data)
174         self.assertEqual(response.status_code, requests.codes.ok)
175         res = response.json()
176         self.assertIn('Success',
177                       res["output"]["result"])
178         self.assertIn({
179             "spanloss": "5.7",
180             "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
181         }, res["output"]["spans"])
182         time.sleep(5)
183
184     def test_14_calculate_span_loss_base_all(self):
185         url = "{}/operations/transportpce-olm:calculate-spanloss-base"
186         data = {
187             "input": {
188                 "src-type": "all"
189             }
190         }
191         response = test_utils.post_request(url, data)
192         self.assertEqual(response.status_code, requests.codes.ok)
193         res = response.json()
194         self.assertIn('Success',
195                       res["output"]["result"])
196         self.assertIn({
197             "spanloss": "15.1",
198             "link-id": "ROADMC01-DEG2-DEG2-TTP-TXRXtoROADMA01-DEG1-DEG1-TTP-TXRX"
199         }, res["output"]["spans"])
200         self.assertIn({
201             "spanloss": "5.7",
202             "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
203         }, res["output"]["spans"])
204         time.sleep(5)
205
206     def test_15_get_OTS_DEG1_TTP_TXRX_ROADMA(self):
207         response = test_utils.check_netconf_node_request(
208             "ROADMA01",
209             "interface/OTS-DEG1-TTP-TXRX/org-openroadm-optical-transport-interfaces:ots")
210         self.assertEqual(response.status_code, requests.codes.ok)
211         res = response.json()
212         self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
213         self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
214
215     def test_16_get_OTS_DEG2_TTP_TXRX_ROADMC(self):
216         response = test_utils.check_netconf_node_request(
217             "ROADMC01",
218             "interface/OTS-DEG2-TTP-TXRX/org-openroadm-optical-transport-interfaces:ots")
219         self.assertEqual(response.status_code, requests.codes.ok)
220         res = response.json()
221         self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
222         self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
223
224     def test_17_servicePath_create_AToZ(self):
225         response = test_utils.service_path_request("create", "test", "1",
226                                                    [{"node-id": "XPDRA01",
227                                                      "dest-tp": "XPDR1-NETWORK1", "src-tp": "XPDR1-CLIENT1"},
228                                                     {"node-id": "ROADMA01",
229                                                      "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP1-TXRX"},
230                                                     {"node-id": "ROADMC01",
231                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG2-TTP-TXRX"},
232                                                     {"node-id": "XPDRC01",
233                                                      "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
234                                                    196.1, 40, 196.075, 196.125, 761,
235                                                    768)
236         self.assertEqual(response.status_code, requests.codes.ok)
237         res = response.json()
238         self.assertIn('Interfaces created successfully for nodes', res["output"]["result"])
239         # time.sleep(40)
240         time.sleep(10)
241
242     def test_18_servicePath_create_ZToA(self):
243         response = test_utils.service_path_request("create", "test", "1",
244                                                    [{"node-id": "XPDRC01",
245                                                      "dest-tp": "XPDR1-NETWORK1", "src-tp": "XPDR1-CLIENT1"},
246                                                     {"node-id": "ROADMC01",
247                                                      "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP1-TXRX"},
248                                                     {"node-id": "ROADMA01",
249                                                      "src-tp": "DEG1-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
250                                                     {"node-id": "XPDRA01",
251                                                      "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
252                                                    196.1, 40, 196.075, 196.125, 761,
253                                                    768)
254         self.assertEqual(response.status_code, requests.codes.ok)
255         res = response.json()
256         self.assertIn('Interfaces created successfully for nodes', res["output"]["result"])
257         # time.sleep(40)
258         time.sleep(10)
259
260     def test_19_service_power_setup_XPDRA_XPDRC(self):
261         url = "{}/operations/transportpce-olm:service-power-setup"
262         data = {
263             "input": {
264                 "service-name": "test",
265                 "wave-number": 1,
266                 "nodes": [
267                     {
268                         "dest-tp": "XPDR1-NETWORK1",
269                         "src-tp": "XPDR1-CLIENT1",
270                         "node-id": "XPDRA01"
271                     },
272                     {
273                         "dest-tp": "DEG1-TTP-TXRX",
274                         "src-tp": "SRG1-PP1-TXRX",
275                         "node-id": "ROADMA01"
276                     },
277                     {
278                         "dest-tp": "SRG1-PP1-TXRX",
279                         "src-tp": "DEG2-TTP-TXRX",
280                         "node-id": "ROADMC01"
281                     },
282                     {
283                         "dest-tp": "XPDR1-CLIENT1",
284                         "src-tp": "XPDR1-NETWORK1",
285                         "node-id": "XPDRC01"
286                     }
287                 ],
288                 "center-freq": 196.1,
289                 "nmc-width": 40,
290                 "min-freq": 196.075,
291                 "max-freq": 196.125,
292                 "lower-spectral-slot-number": 761,
293                 "higher-spectral-slot-number": 768
294             }
295         }
296         response = test_utils.post_request(url, data)
297         self.assertEqual(response.status_code, requests.codes.ok)
298         res = response.json()
299         self.assertIn('Success', res["output"]["result"])
300
301     def test_20_get_interface_XPDRA_XPDR1_NETWORK1(self):
302         response = test_utils.check_netconf_node_request(
303             "XPDRA01",
304             "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
305         self.assertEqual(response.status_code, requests.codes.ok)
306         res = response.json()
307         self.assertEqual(0, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
308         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
309
310     def test_21_get_roadmconnection_ROADMA(self):
311         response = test_utils.check_netconf_node_request(
312             "ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
313         self.assertEqual(response.status_code, requests.codes.ok)
314         res = response.json()
315         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
316         self.assertEqual(-3.3, res['roadm-connections'][0]['target-output-power'])
317
318     def test_22_get_roadmconnection_ROADMC(self):
319         response = test_utils.check_netconf_node_request(
320             "ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768")
321         self.assertEqual(response.status_code, requests.codes.ok)
322         res = response.json()
323         self.assertEqual("power", res['roadm-connections'][0]['opticalControlMode'])
324
325     def test_23_service_power_setup_XPDRC_XPDRA(self):
326         url = "{}/operations/transportpce-olm:service-power-setup"
327         data = {
328             "input": {
329                 "service-name": "test",
330                 "wave-number": 1,
331                 "nodes": [
332                     {
333                         "dest-tp": "XPDR1-NETWORK1",
334                         "src-tp": "XPDR1-CLIENT1",
335                         "node-id": "XPDRC01"
336                     },
337                     {
338                         "dest-tp": "DEG2-TTP-TXRX",
339                         "src-tp": "SRG1-PP1-TXRX",
340                         "node-id": "ROADMC01"
341                     },
342                     {
343                         "src-tp": "DEG1-TTP-TXRX",
344                         "dest-tp": "SRG1-PP1-TXRX",
345                         "node-id": "ROADMA01"
346                     },
347                     {
348                         "src-tp": "XPDR1-NETWORK1",
349                         "dest-tp": "XPDR1-CLIENT1",
350                         "node-id": "XPDRA01"
351                     }
352                 ],
353                 "center-freq": 196.1,
354                 "nmc-width": 40,
355                 "min-freq": 196.075,
356                 "max-freq": 196.125,
357                 "lower-spectral-slot-number": 761,
358                 "higher-spectral-slot-number": 768
359             }
360         }
361         response = test_utils.post_request(url, data)
362         self.assertEqual(response.status_code, requests.codes.ok)
363         res = response.json()
364         self.assertIn('Success', res["output"]["result"])
365
366     def test_24_get_interface_XPDRC_XPDR1_NETWORK1(self):
367         response = test_utils.check_netconf_node_request(
368             "XPDRC01",
369             "interface/XPDR1-NETWORK1-761:768/org-openroadm-optical-channel-interfaces:och")
370         self.assertEqual(response.status_code, requests.codes.ok)
371         res = response.json()
372         self.assertEqual(0, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
373         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
374
375     def test_25_get_roadmconnection_ROADMC(self):
376         response = test_utils.check_netconf_node_request(
377             "ROADMC01", "roadm-connections/SRG1-PP1-TXRX-DEG2-TTP-TXRX-761:768")
378         self.assertEqual(response.status_code, requests.codes.ok)
379         res = response.json()
380         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
381         self.assertEqual(2, res['roadm-connections'][0]['target-output-power'])
382
383     def test_26_service_power_turndown_XPDRA_XPDRC(self):
384         url = "{}/operations/transportpce-olm:service-power-turndown"
385         data = {
386             "input": {
387                 "service-name": "test",
388                 "wave-number": 1,
389                 "nodes": [
390                     {
391                         "dest-tp": "XPDR1-NETWORK1",
392                         "src-tp": "XPDR1-CLIENT1",
393                         "node-id": "XPDRA01"
394                     },
395                     {
396                         "dest-tp": "DEG1-TTP-TXRX",
397                         "src-tp": "SRG1-PP1-TXRX",
398                         "node-id": "ROADMA01"
399                     },
400                     {
401                         "dest-tp": "SRG1-PP1-TXRX",
402                         "src-tp": "DEG2-TTP-TXRX",
403                         "node-id": "ROADMC01"
404                     },
405                     {
406                         "dest-tp": "XPDR1-CLIENT1",
407                         "src-tp": "XPDR1-NETWORK1",
408                         "node-id": "XPDRC01"
409                     }
410                 ],
411                 "center-freq": 196.1,
412                 "nmc-width": 40,
413                 "min-freq": 196.075,
414                 "max-freq": 196.125,
415                 "lower-spectral-slot-number": 761,
416                 "higher-spectral-slot-number": 768
417             }
418         }
419         response = test_utils.post_request(url, data)
420         print(response.json())
421         self.assertEqual(response.status_code, requests.codes.ok)
422         res = response.json()
423         self.assertIn('Success', res["output"]["result"])
424
425     def test_27_get_roadmconnection_ROADMA(self):
426         response = test_utils.check_netconf_node_request(
427             "ROADMA01", "roadm-connections/SRG1-PP1-TXRX-DEG1-TTP-TXRX-761:768")
428         self.assertEqual(response.status_code, requests.codes.ok)
429         res = response.json()
430         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
431         self.assertEqual(-60, res['roadm-connections'][0]['target-output-power'])
432
433     def test_28_get_roadmconnection_ROADMC(self):
434         response = test_utils.check_netconf_node_request(
435             "ROADMC01", "roadm-connections/DEG2-TTP-TXRX-SRG1-PP1-TXRX-761:768")
436         self.assertEqual(response.status_code, requests.codes.ok)
437         res = response.json()
438         self.assertEqual("off", res['roadm-connections'][0]['opticalControlMode'])
439
440     def test_29_servicePath_delete_AToZ(self):
441         response = test_utils.service_path_request("delete", "test", "1",
442                                                    [{"node-id": "XPDRA01",
443                                                      "dest-tp": "XPDR1-NETWORK1", "src-tp": "XPDR1-CLIENT1"},
444                                                     {"node-id": "ROADMA01",
445                                                      "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP1-TXRX"},
446                                                     {"node-id": "ROADMC01",
447                                                      "dest-tp": "SRG1-PP1-TXRX", "src-tp": "DEG2-TTP-TXRX"},
448                                                     {"node-id": "XPDRC01",
449                                                      "dest-tp": "XPDR1-CLIENT1", "src-tp": "XPDR1-NETWORK1"}],
450                                                    196.1, 40, 196.075, 196.125, 761,
451                                                    768)
452         self.assertEqual(response.status_code, requests.codes.ok)
453         res = response.json()
454         self.assertIn('Request processed', res["output"]["result"])
455         time.sleep(10)
456
457     def test_30_servicePath_delete_ZToA(self):
458         response = test_utils.service_path_request("delete", "test", "1",
459                                                    [{"node-id": "XPDRC01",
460                                                      "dest-tp": "XPDR1-NETWORK1", "src-tp": "XPDR1-CLIENT1"},
461                                                     {"node-id": "ROADMC01",
462                                                      "dest-tp": "DEG2-TTP-TXRX", "src-tp": "SRG1-PP1-TXRX"},
463                                                     {"node-id": "ROADMA01",
464                                                      "src-tp": "DEG1-TTP-TXRX", "dest-tp": "SRG1-PP1-TXRX"},
465                                                     {"node-id": "XPDRA01",
466                                                      "src-tp": "XPDR1-NETWORK1", "dest-tp": "XPDR1-CLIENT1"}],
467                                                    196.1, 40, 196.075, 196.125, 761,
468                                                    768)
469         self.assertEqual(response.status_code, requests.codes.ok)
470         res = response.json()
471         self.assertIn('Request processed', res["output"]["result"])
472         time.sleep(10)
473
474     #"""to test case where SRG where the xpdr is connected to has no optical range data"""
475
476     def test_31_connect_xprdA_to_roadmA(self):
477         response = test_utils.connect_xpdr_to_rdm_request("XPDRA01", "1", "2",
478                                                           "ROADMA01", "1", "SRG1-PP2-TXRX")
479         self.assertEqual(response.status_code, requests.codes.ok)
480         res = response.json()
481         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
482
483     def test_32_connect_roadmA_to_xpdrA(self):
484         response = test_utils.connect_rdm_to_xpdr_request("XPDRA01", "1", "2",
485                                                           "ROADMA01", "1", "SRG1-PP2-TXRX")
486         self.assertEqual(response.status_code, requests.codes.ok)
487         res = response.json()
488         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
489
490     def test_33_servicePath_create_AToZ(self):
491         response = test_utils.service_path_request("create", "test2", "2",
492                                                    [{"node-id": "XPDRA01",
493                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
494                                                     {"node-id": "ROADMA01",
495                                                      "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
496                                                    196.05, 40, 196.025, 196.075, 753,
497                                                    760)
498         self.assertEqual(response.status_code, requests.codes.ok)
499         res = response.json()
500         self.assertIn('Interfaces created successfully for nodes', res["output"]["result"])
501         # time.sleep(40)
502         time.sleep(10)
503
504     def test_34_get_interface_XPDRA_XPDR1_NETWORK2(self):
505         response = test_utils.check_netconf_node_request(
506             "XPDRA01",
507             "interface/XPDR1-NETWORK2-753:760/org-openroadm-optical-channel-interfaces:och")
508         self.assertEqual(response.status_code, requests.codes.ok)
509         res = response.json()
510         self.assertEqual(-5, res['org-openroadm-optical-channel-interfaces:och']['transmit-power'])
511         self.assertEqual(2, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
512
513     def test_35_servicePath_delete_AToZ(self):
514         response = test_utils.service_path_request("delete", "test", "1",
515                                                    [{"node-id": "XPDRA01",
516                                                      "dest-tp": "XPDR1-NETWORK2", "src-tp": "XPDR1-CLIENT2"},
517                                                     {"node-id": "ROADMA01",
518                                                      "dest-tp": "DEG1-TTP-TXRX", "src-tp": "SRG1-PP2-TXRX"}],
519                                                    196.1, 40, 196.075, 196.125, 761,
520                                                    768)
521         self.assertEqual(response.status_code, requests.codes.ok)
522         res = response.json()
523         self.assertIn('Request processed', res["output"]["result"])
524         time.sleep(10)
525
526     def test_36_xpdrA_device_disconnected(self):
527         response = test_utils.unmount_device("XPDRA01")
528         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
529
530     def test_37_xpdrC_device_disconnected(self):
531         response = test_utils.unmount_device("XPDRC01")
532         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
533
534     def test_38_calculate_span_loss_current(self):
535         url = "{}/operations/transportpce-olm:calculate-spanloss-current"
536         response = test_utils.post_request(url, None)
537         self.assertEqual(response.status_code, requests.codes.ok)
538         res = response.json()
539         self.assertIn('Success',
540                       res["output"]["result"])
541         time.sleep(5)
542
543     def test_39_rdmA_device_disconnected(self):
544         response = test_utils.unmount_device("ROADMA01")
545         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
546
547     def test_40_rdmC_device_disconnected(self):
548         response = test_utils.unmount_device("ROADMC01")
549         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
550
551
552 if __name__ == "__main__":
553     unittest.main(verbosity=2)