3 ##############################################################################
4 # Copyright (c) 2020 Orange, Inc. and others. All rights reserved.
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 ##############################################################################
12 # pylint: disable=no-member
13 # pylint: disable=too-many-public-methods
18 # pylint: disable=wrong-import-order
20 sys.path.append('transportpce_tests/common/')
21 # pylint: disable=wrong-import-position
22 # pylint: disable=import-error
23 import test_utils_rfc8040 # nopep8
26 class TransportPCEtesting(unittest.TestCase):
29 NODE_VERSION = '2.2.1'
33 cls.processes = test_utils_rfc8040.start_tpce()
34 cls.processes = test_utils_rfc8040.start_sims([('spdra', cls.NODE_VERSION),
35 ('spdrc', cls.NODE_VERSION)])
38 def tearDownClass(cls):
39 # pylint: disable=not-an-iterable
40 for process in cls.processes:
41 test_utils_rfc8040.shutdown_process(process)
42 print("all processes killed")
47 def test_01_connect_SPDR_SA1(self):
48 response = test_utils_rfc8040.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
49 self.assertEqual(response.status_code, requests.codes.created,
50 test_utils_rfc8040.CODE_SHOULD_BE_201)
53 response = test_utils_rfc8040.check_device_connection("SPDR-SA1")
54 self.assertEqual(response['status_code'], requests.codes.ok)
55 self.assertEqual(response['connection-status'], 'connected')
57 def test_02_connect_SPDR_SC1(self):
58 response = test_utils_rfc8040.mount_device("SPDR-SC1", ('spdrc', self.NODE_VERSION))
59 self.assertEqual(response.status_code, requests.codes.created,
60 test_utils_rfc8040.CODE_SHOULD_BE_201)
63 response = test_utils_rfc8040.check_device_connection("SPDR-SC1")
64 self.assertEqual(response['status_code'], requests.codes.ok)
65 self.assertEqual(response['connection-status'], 'connected')
67 def test_03_service_create_OTU4(self):
68 response = test_utils_rfc8040.device_renderer_service_implementation_request(
70 'service-name': 'SPDRA-SPDRC-OTU4-ODU4',
71 'connection-type': 'infrastructure',
72 'service-handler-header': {
73 'request-id': 'abcd12-efgh34'
76 'service-format': 'OTU',
77 'otu-service-rate': 'org-openroadm-otn-common-types:OTU4',
83 'service-format': 'OTU',
84 'otu-service-rate': 'org-openroadm-otn-common-types:OTU4',
91 'modulation-format': 'dp-qpsk',
92 'aToZ-wavelength-number': 1,
97 'tp-node-id': 'SPDR-SA1-XPDR1',
104 'tp-node-id': 'SPDR-SA1-XPDR1',
105 'tp-id': 'XPDR1-NETWORK1'
111 'tp-node-id': 'SPDR-SC1-XPDR1',
112 'tp-id': 'XPDR1-NETWORK1'
118 'tp-node-id': 'SPDR-SC1-XPDR1',
123 'aToZ-min-frequency': 196.075,
124 'aToZ-max-frequency': 196.125
127 'zToA-wavelength-number': '1',
129 'modulation-format': 'dp-qpsk',
134 'tp-node-id': 'SPDR-SC1-XPDR1',
141 'tp-node-id': 'SPDR-SC1-XPDR1',
142 'tp-id': 'XPDR1-NETWORK1'
148 'tp-node-id': 'SPDR-SA1-XPDR1',
149 'tp-id': 'XPDR1-NETWORK1'
155 'tp-node-id': 'SPDR-SA1-XPDR1',
160 'zToA-min-frequency': 196.075,
161 'zToA-max-frequency': 196.125
165 self.assertEqual(response['status_code'], requests.codes.ok)
166 self.assertIn('Operation Successful',
167 response['output']['configuration-response-common']['response-message'])
169 # Test OCH-OTU interfaces on SPDR-A1
170 def test_04_check_interface_och(self):
171 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SA1", "interface", "XPDR1-NETWORK1-761:768")
172 self.assertEqual(response['status_code'], requests.codes.ok)
173 self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-761:768',
174 'administrative-state': 'inService',
175 'supporting-circuit-pack-name': 'CP1-CFP0',
176 'type': 'org-openroadm-interfaces:opticalChannel',
177 'supporting-port': 'CP1-CFP0-P1'
178 }, **response['interface'][0]),
179 response['interface'][0])
181 response['interface'][0]['org-openroadm-optical-channel-interfaces:och'],
182 [{'frequency': '196.1000', 'rate': 'org-openroadm-common-types:R100G',
183 'transmit-power': '-5', 'modulation-format': 'dp-qpsk'},
184 {'frequency': 196.1, 'rate': 'org-openroadm-common-types:R100G',
185 'transmit-power': -5, 'modulation-format': 'dp-qpsk'}])
187 def test_05_check_interface_OTU(self):
188 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SA1", "interface", "XPDR1-NETWORK1-OTU")
189 self.assertEqual(response['status_code'], requests.codes.ok)
190 input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
191 'administrative-state': 'inService',
192 'supporting-circuit-pack-name': 'CP1-CFP0',
193 'supporting-interface': 'XPDR1-NETWORK1-1',
194 'type': 'org-openroadm-interfaces:otnOtu',
195 'supporting-port': 'CP1-CFP0-P1'
197 input_dict_2 = {'tx-dapi': 'AMf1n5hK6Xkk',
198 'expected-sapi': 'AMf1n5hK6Xkk',
199 'tx-sapi': 'H/OelLynehI=',
200 'expected-dapi': 'H/OelLynehI=',
201 'rate': 'org-openroadm-otn-common-types:OTU4',
204 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
205 response['interface'][0])
206 self.assertDictEqual(dict(input_dict_2, **response['interface'][0]['org-openroadm-otn-otu-interfaces:otu']),
207 response['interface'][0]['org-openroadm-otn-otu-interfaces:otu'])
209 # Test OCH-OTU interfaces on SPDR-C1
210 def test_06_check_interface_och(self):
211 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SC1", "interface", "XPDR1-NETWORK1-761:768")
212 self.assertEqual(response['status_code'], requests.codes.ok)
213 self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
214 'administrative-state': 'inService',
215 'supporting-circuit-pack-name': 'CP1-CFP0',
216 'type': 'org-openroadm-interfaces:opticalChannel',
217 'supporting-port': 'CP1-CFP0-P1'
218 }, **response['interface'][0]),
219 response['interface'][0])
221 response['interface'][0]['org-openroadm-optical-channel-interfaces:och'],
222 [{'frequency': '196.1000', 'rate': 'org-openroadm-common-types:R100G',
223 'transmit-power': '-5', 'modulation-format': 'dp-qpsk'},
224 {'frequency': 196.1, 'rate': 'org-openroadm-common-types:R100G',
225 'transmit-power': -5, 'modulation-format': 'dp-qpsk'}])
227 def test_07_check_interface_OTU(self):
228 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SC1", "interface", "XPDR1-NETWORK1-OTU")
229 self.assertEqual(response['status_code'], requests.codes.ok)
230 input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
231 'administrative-state': 'inService',
232 'supporting-circuit-pack-name': 'CP1-CFP0',
233 'supporting-interface': 'XPDR1-NETWORK1-1',
234 'type': 'org-openroadm-interfaces:otnOtu',
235 'supporting-port': 'CP1-CFP0-P1'
237 input_dict_2 = {'tx-dapi': 'H/OelLynehI=',
238 'expected-sapi': 'H/OelLynehI=',
239 'tx-sapi': 'AMf1n5hK6Xkk',
240 'expected-dapi': 'AMf1n5hK6Xkk',
241 'rate': 'org-openroadm-otn-common-types:OTU4',
244 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
245 response['interface'][0])
246 self.assertDictEqual(dict(input_dict_2, **response['interface'][0]['org-openroadm-otn-otu-interfaces:otu']),
247 response['interface'][0]['org-openroadm-otn-otu-interfaces:otu'])
249 # Test creation of ODU4 service
250 def test_08_service_create_ODU4(self):
251 response = test_utils_rfc8040.device_renderer_service_implementation_request(
254 'SPDRA-SPDRC-OTU4-ODU4',
255 'connection-type': 'infrastructure',
256 'service-handler-header': {
257 'request-id': 'abcd12-efgh34'
260 'service-format': 'ODU',
262 'org-openroadm-otn-common-types:ODU4',
264 'node-id': 'SPDR-SA1'
268 'service-format': 'ODU',
270 'org-openroadm-otn-common-types:ODU4',
272 'node-id': 'SPDR-SC1'
274 'path-description': {
281 'tp-node-id': 'SPDR-SA1-XPDR1',
288 'tp-node-id': 'SPDR-SA1-XPDR1',
289 'tp-id': 'XPDR1-NETWORK1'
295 'tp-node-id': 'SPDR-SC1-XPDR1',
296 'tp-id': 'XPDR1-NETWORK1'
302 'tp-node-id': 'SPDR-SC1-XPDR1',
314 'tp-node-id': 'SPDR-SC1-XPDR1',
321 'tp-node-id': 'SPDR-SC1-XPDR1',
322 'tp-id': 'XPDR1-NETWORK1'
328 'tp-node-id': 'SPDR-SA1-XPDR1',
329 'tp-id': 'XPDR1-NETWORK1'
335 'tp-node-id': 'SPDR-SA1-XPDR1',
343 self.assertEqual(response['status_code'], requests.codes.ok)
344 self.assertIn('Operation Successful',
345 response['output']['configuration-response-common']['response-message'])
347 # Test ODU4 interfaces on SPDR-A1 and SPDR-C1
348 def test_09_check_interface_ODU4(self):
349 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SA1", "interface", "XPDR1-NETWORK1-ODU4")
350 self.assertEqual(response['status_code'], requests.codes.ok)
351 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
352 'administrative-state': 'inService',
353 'supporting-circuit-pack-name': 'CP1-CFP0',
354 'supporting-interface': 'XPDR1-NETWORK1-OTU',
355 'type': 'org-openroadm-interfaces:otnOdu',
356 'supporting-port': 'CP1-CFP0-P1'}
357 # SAPI/DAPI are added in the Otu4 renderer
358 input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
359 'rate': 'org-openroadm-otn-common-types:ODU4',
360 'expected-dapi': 'H/OelLynehI=',
361 'expected-sapi': 'AMf1n5hK6Xkk',
362 'tx-dapi': 'AMf1n5hK6Xkk',
363 'tx-sapi': 'H/OelLynehI='}
365 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
366 response['interface'][0])
367 self.assertDictEqual(dict(response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
369 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
371 self.assertDictEqual(
372 {'payload-type': '21', 'exp-payload-type': '21'},
373 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
375 def test_10_check_interface_ODU4(self):
376 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SC1", "interface", "XPDR1-NETWORK1-ODU4")
377 self.assertEqual(response['status_code'], requests.codes.ok)
378 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
379 'administrative-state': 'inService',
380 'supporting-circuit-pack-name': 'CP1-CFP0',
381 'supporting-interface': 'XPDR1-NETWORK1-OTU',
382 'type': 'org-openroadm-interfaces:otnOdu',
383 'supporting-port': 'CP1-CFP0-P1'}
384 # SAPI/DAPI are added in the Otu4 renderer
385 input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
386 'rate': 'org-openroadm-otn-common-types:ODU4',
387 'tx-sapi': 'AMf1n5hK6Xkk',
388 'tx-dapi': 'H/OelLynehI=',
389 'expected-sapi': 'H/OelLynehI=',
390 'expected-dapi': 'AMf1n5hK6Xkk'
392 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
393 response['interface'][0])
394 self.assertDictEqual(dict(response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
396 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
398 self.assertDictEqual(
399 {'payload-type': '21', 'exp-payload-type': '21'},
400 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
402 # Test creation of 10G service
403 def test_11_service_create_10GE(self):
404 response = test_utils_rfc8040.device_renderer_service_implementation_request(
406 'service-name': 'SPDRA-SPDRC-10G',
407 'connection-type': 'service',
408 'service-handler-header': {
409 'request-id': 'abcd12-efgh34'
412 'service-format': 'Ethernet',
413 'service-rate': '10',
415 'node-id': 'SPDR-SA1'
418 'service-format': 'Ethernet',
419 'service-rate': '10',
421 'node-id': 'SPDR-SC1'
423 'path-description': {
426 'min-trib-slot': '1.1',
427 'max-trib-slot': '1.8',
432 'tp-node-id': 'SPDR-SA1-XPDR1',
433 'tp-id': 'XPDR1-CLIENT1'
440 'tp-node-id': 'SPDR-SA1-XPDR1',
441 'tp-id': 'XPDR1-NETWORK1'
447 'tp-node-id': 'SPDR-SC1-XPDR1',
448 'tp-id': 'XPDR1-NETWORK1'
454 'tp-node-id': 'SPDR-SC1-XPDR1',
455 'tp-id': 'XPDR1-CLIENT1'
462 'min-trib-slot': '1.1',
463 'max-trib-slot': '1.8',
468 'tp-node-id': 'SPDR-SC1-XPDR1',
469 'tp-id': 'XPDR1-CLIENT1'
475 'tp-node-id': 'SPDR-SC1-XPDR1',
476 'tp-id': 'XPDR1-NETWORK1'
482 'tp-node-id': 'SPDR-SA1-XPDR1',
483 'tp-id': 'XPDR1-NETWORK1'
489 'tp-node-id': 'SPDR-SA1-XPDR1',
490 'tp-id': 'XPDR1-CLIENT1'
498 self.assertEqual(response['status_code'], requests.codes.ok)
499 self.assertIn('Operation Successful',
500 response['output']['configuration-response-common']['response-message'])
502 # Test the interfaces on SPDR-A1
503 def test_12_check_interface_10GE_CLIENT(self):
504 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SA1", "interface", "XPDR1-CLIENT1-ETHERNET10G")
505 self.assertEqual(response['status_code'], requests.codes.ok)
506 input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
507 'administrative-state': 'inService',
508 'supporting-circuit-pack-name': 'CP1-SFP4',
509 'type': 'org-openroadm-interfaces:ethernetCsmacd',
510 'supporting-port': 'CP1-SFP4-P1'
512 self.assertDictEqual(dict(input_dict, **response['interface'][0]),
513 response['interface'][0])
514 self.assertEqual(response['interface'][0]['org-openroadm-ethernet-interfaces:ethernet']['speed'], 10000)
516 def test_13_check_interface_ODU2E_CLIENT(self):
517 response = test_utils_rfc8040.check_node_attribute_request(
518 "SPDR-SA1", "interface", "XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G")
519 self.assertEqual(response['status_code'], requests.codes.ok)
520 input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G',
521 'administrative-state': 'inService',
522 'supporting-circuit-pack-name': 'CP1-SFP4',
523 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
524 'type': 'org-openroadm-interfaces:otnOdu',
525 'supporting-port': 'CP1-SFP4-P1'}
527 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
528 'rate': 'org-openroadm-otn-common-types:ODU2e',
529 'monitoring-mode': 'terminated'}
531 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
532 response['interface'][0])
533 self.assertDictEqual(dict(input_dict_2,
534 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
535 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
536 self.assertDictEqual(
537 {'payload-type': '03', 'exp-payload-type': '03'},
538 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
540 def test_14_check_ODU2E_connection(self):
541 response = test_utils_rfc8040.check_node_attribute_request(
543 "odu-connection", "XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
544 self.assertEqual(response['status_code'], requests.codes.ok)
547 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
548 'direction': 'bidirectional'
550 self.assertDictEqual(dict(input_dict_1, **response['odu-connection'][0]),
551 response['odu-connection'][0])
552 self.assertDictEqual({'dst-if': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G'},
553 response['odu-connection'][0]['destination'])
554 self.assertDictEqual({'src-if': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G'},
555 response['odu-connection'][0]['source'])
557 def test_15_check_interface_ODU2E_NETWORK(self):
558 response = test_utils_rfc8040.check_node_attribute_request(
559 "SPDR-SA1", "interface", "XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
560 self.assertEqual(response['status_code'], requests.codes.ok)
561 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
562 'administrative-state': 'inService',
563 'supporting-circuit-pack-name': 'CP1-CFP0',
564 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
565 'type': 'org-openroadm-interfaces:otnOdu',
566 'supporting-port': 'CP1-CFP0-P1'}
568 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
569 'rate': 'org-openroadm-otn-common-types:ODU2e',
570 'monitoring-mode': 'monitored'}
571 input_dict_3 = {'trib-port-number': 1}
572 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
573 response['interface'][0])
574 self.assertDictEqual(dict(input_dict_2,
575 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
576 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
577 self.assertDictEqual(dict(input_dict_3,
578 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
579 'parent-odu-allocation']),
580 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
581 'parent-odu-allocation'])
583 response['interface'][0][
584 'org-openroadm-otn-odu-interfaces:odu'][
585 'parent-odu-allocation']['trib-slots'])
587 # Test the interfaces on SPDR-C1
588 def test_16_check_interface_ODU2E_NETWORK(self):
589 response = test_utils_rfc8040.check_node_attribute_request(
590 "SPDR-SC1", "interface", "XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
591 self.assertEqual(response['status_code'], requests.codes.ok)
592 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
593 'administrative-state': 'inService',
594 'supporting-circuit-pack-name': 'CP1-CFP0',
595 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
596 'type': 'org-openroadm-interfaces:otnOdu',
597 'supporting-port': 'CP1-CFP0-P1'}
599 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
600 'rate': 'org-openroadm-otn-common-types:ODU2e',
601 'monitoring-mode': 'monitored'}
602 input_dict_3 = {'trib-port-number': 1}
603 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
604 response['interface'][0])
605 self.assertDictEqual(dict(input_dict_2,
606 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
607 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
608 self.assertDictEqual(dict(input_dict_3,
609 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
610 'parent-odu-allocation']),
611 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
612 'parent-odu-allocation'])
614 response['interface'][0][
615 'org-openroadm-otn-odu-interfaces:odu'][
616 'parent-odu-allocation']['trib-slots'])
618 def test_17_check_interface_10GE_CLIENT(self):
619 response = test_utils_rfc8040.check_node_attribute_request("SPDR-SC1", "interface", "XPDR1-CLIENT1-ETHERNET10G")
620 self.assertEqual(response['status_code'], requests.codes.ok)
621 input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
622 'administrative-state': 'inService',
623 'supporting-circuit-pack-name': 'CP1-SFP4',
624 'type': 'org-openroadm-interfaces:ethernetCsmacd',
625 'supporting-port': 'CP1-SFP4-P1'
627 self.assertDictEqual(dict(input_dict, **response['interface'][0]),
628 response['interface'][0])
629 self.assertEqual(response['interface'][0]['org-openroadm-ethernet-interfaces:ethernet']['speed'], 10000)
631 def test_18_check_interface_ODU2E_CLIENT(self):
632 response = test_utils_rfc8040.check_node_attribute_request(
633 "SPDR-SC1", "interface", "XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G")
634 self.assertEqual(response['status_code'], requests.codes.ok)
635 input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G',
636 'administrative-state': 'inService',
637 'supporting-circuit-pack-name': 'CP1-SFP4',
638 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
639 'type': 'org-openroadm-interfaces:otnOdu',
640 'supporting-port': 'CP1-SFP4-P1'}
642 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
643 'rate': 'org-openroadm-otn-common-types:ODU2e',
644 'monitoring-mode': 'terminated'}
645 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
646 response['interface'][0])
647 self.assertDictEqual(dict(input_dict_2,
648 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
649 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
650 self.assertDictEqual(
651 {'payload-type': '03', 'exp-payload-type': '03'},
652 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
654 def test_19_check_ODU2E_connection(self):
655 response = test_utils_rfc8040.check_node_attribute_request(
657 "odu-connection", "XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
658 self.assertEqual(response['status_code'], requests.codes.ok)
661 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
662 'direction': 'bidirectional'
664 self.assertDictEqual(dict(input_dict_1, **response['odu-connection'][0]),
665 response['odu-connection'][0])
666 self.assertDictEqual({'dst-if': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G'},
667 response['odu-connection'][0]['destination'])
668 self.assertDictEqual({'src-if': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G'},
669 response['odu-connection'][0]['source'])
671 def test_20_check_interface_ODU2E_NETWORK(self):
672 response = test_utils_rfc8040.check_node_attribute_request(
673 "SPDR-SC1", "interface", "XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
674 self.assertEqual(response['status_code'], requests.codes.ok)
675 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
676 'administrative-state': 'inService',
677 'supporting-circuit-pack-name': 'CP1-CFP0',
678 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
679 'type': 'org-openroadm-interfaces:otnOdu',
680 'supporting-port': 'CP1-CFP0-P1'}
682 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
683 'rate': 'org-openroadm-otn-common-types:ODU2e',
684 'monitoring-mode': 'monitored'}
686 input_dict_3 = {'trib-port-number': 1}
688 self.assertDictEqual(dict(input_dict_1, **response['interface'][0]),
689 response['interface'][0])
690 self.assertDictEqual(dict(input_dict_2,
691 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
692 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
693 self.assertDictEqual(dict(input_dict_3,
694 **response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
695 'parent-odu-allocation']),
696 response['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
697 'parent-odu-allocation'])
699 response['interface'][0][
700 'org-openroadm-otn-odu-interfaces:odu'][
701 'parent-odu-allocation']['trib-slots'])
703 # TODO: Delete the services (OTU, ODU, LO-ODU)
704 # TODO: Delete interfaces (SPDR-A1, SPDR-C1)
706 def test_21_disconnect_SPDR_SA1(self):
707 response = test_utils_rfc8040.unmount_device("SPDR-SA1")
708 self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
710 def test_22_disconnect_SPDR_SC1(self):
711 response = test_utils_rfc8040.unmount_device("SPDR-SC1")
712 self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
715 if __name__ == "__main__":
716 unittest.main(verbosity=2)