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 from common import test_utils
21 class TransportPCEtesting(unittest.TestCase):
27 cls.processes = test_utils.start_tpce()
28 cls.processes = test_utils.start_sims(['spdra', 'spdrc'])
31 def tearDownClass(cls):
32 # pylint: disable=not-an-iterable
33 for process in cls.processes:
34 test_utils.shutdown_process(process)
35 print("all processes killed")
40 def test_01_connect_SPDR_SA1(self):
41 response = test_utils.mount_device("SPDR-SA1", 'spdra')
42 self.assertEqual(response.status_code, requests.codes.created,
43 test_utils.CODE_SHOULD_BE_201)
46 response = test_utils.get_netconf_oper_request("SPDR-SA1")
47 self.assertEqual(response.status_code, requests.codes.ok)
50 res['node'][0]['netconf-node-topology:connection-status'],
53 def test_02_connect_SPDR_SC1(self):
54 response = test_utils.mount_device("SPDR-SC1", 'spdrc')
55 self.assertEqual(response.status_code, requests.codes.created,
56 test_utils.CODE_SHOULD_BE_201)
59 response = test_utils.get_netconf_oper_request("SPDR-SC1")
60 self.assertEqual(response.status_code, requests.codes.ok)
63 res['node'][0]['netconf-node-topology:connection-status'],
66 def test_03_service_create_OTU4(self):
67 url = "{}/operations/transportpce-renderer:service-implementation-request"
69 "transportpce-renderer:input": {
70 "transportpce-renderer:service-name": "SPDRA-SPDRC-OTU4-ODU4",
71 "transportpce-renderer:connection-type": "infrastructure",
72 "transportpce-renderer:service-handler-header": {
73 "transportpce-renderer:request-id": "abcd12-efgh34"
75 "transportpce-renderer:service-a-end": {
76 "transportpce-renderer:service-format": "OTU",
77 "transportpce-renderer:otu-service-rate": "org-openroadm-otn-common-types:OTU4",
78 "transportpce-renderer:clli": "nodeSA",
79 "transportpce-renderer:node-id": "SPDR-SA1"
82 "transportpce-renderer:service-z-end": {
83 "transportpce-renderer:service-format": "OTU",
84 "transportpce-renderer:otu-service-rate": "org-openroadm-otn-common-types:OTU4",
85 "transportpce-renderer:clli": "nodeSC",
86 "transportpce-renderer:node-id": "SPDR-SC1"
88 "transportpce-renderer:path-description": {
91 "transportpce-renderer: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 "transportpce-renderer:aToZ-min-frequency": 196.075,
124 "transportpce-renderer:aToZ-max-frequency": 196.125
126 "transportpce-renderer:zToA-direction": {
127 "transportpce-renderer:zToA-wavelength-number": "1",
128 "transportpce-renderer:rate": "100",
129 "transportpce-renderer: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 "transportpce-renderer:zToA-min-frequency": 196.075,
161 "transportpce-renderer:zToA-max-frequency": 196.125
166 response = test_utils.post_request(url, data)
168 print(response.json())
169 self.assertEqual(response.status_code, requests.codes.ok)
170 res = response.json()
171 self.assertIn('Operation Successful',
172 res["output"]["configuration-response-common"]["response-message"])
174 # Test OCH-OTU interfaces on SPDR-A1
175 def test_04_check_interface_och(self):
176 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-761:768")
177 self.assertEqual(response.status_code, requests.codes.ok)
178 res = response.json()
179 self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-761:768',
180 'administrative-state': 'inService',
181 'supporting-circuit-pack-name': 'CP1-CFP0',
182 'type': 'org-openroadm-interfaces:opticalChannel',
183 'supporting-port': 'CP1-CFP0-P1'
184 }, **res['interface'][0]),
187 self.assertDictEqual(
188 {u'frequency': 196.1, u'rate': u'org-openroadm-common-types:R100G',
189 u'transmit-power': -5, u'modulation-format': 'dp-qpsk'},
190 res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
192 def test_05_check_interface_OTU(self):
193 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-OTU")
194 self.assertEqual(response.status_code, requests.codes.ok)
195 res = response.json()
196 input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
197 'administrative-state': 'inService',
198 'supporting-circuit-pack-name': 'CP1-CFP0',
199 'supporting-interface': 'XPDR1-NETWORK1-1',
200 'type': 'org-openroadm-interfaces:otnOtu',
201 'supporting-port': 'CP1-CFP0-P1'
203 input_dict_2 = {'tx-dapi': 'fuYZwEO660g=',
204 'expected-sapi': 'fuYZwEO660g=',
205 'tx-sapi': 'Swfw02qXGyI=',
206 'expected-dapi': 'Swfw02qXGyI=',
207 'rate': 'org-openroadm-otn-common-types:OTU4',
210 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
213 self.assertDictEqual(input_dict_2,
215 ['org-openroadm-otn-otu-interfaces:otu'])
217 # Test OCH-OTU interfaces on SPDR-C1
218 def test_06_check_interface_och(self):
219 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-761:768")
220 self.assertEqual(response.status_code, requests.codes.ok)
221 res = response.json()
222 self.assertDictEqual(dict({'name': 'XPDR1-NETWORK1-1',
223 'administrative-state': 'inService',
224 'supporting-circuit-pack-name': 'CP1-CFP0',
225 'type': 'org-openroadm-interfaces:opticalChannel',
226 'supporting-port': 'CP1-CFP0-P1'
227 }, **res['interface'][0]),
230 self.assertDictEqual(
231 {u'frequency': 196.1, u'rate': u'org-openroadm-common-types:R100G',
232 u'transmit-power': -5, u'modulation-format': 'dp-qpsk'},
233 res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
235 def test_07_check_interface_OTU(self):
236 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-OTU")
237 self.assertEqual(response.status_code, requests.codes.ok)
238 res = response.json()
239 input_dict_1 = {'name': 'XPDR1-NETWORK1-OTU',
240 'administrative-state': 'inService',
241 'supporting-circuit-pack-name': 'CP1-CFP0',
242 'supporting-interface': 'XPDR1-NETWORK1-1',
243 'type': 'org-openroadm-interfaces:otnOtu',
244 'supporting-port': 'CP1-CFP0-P1'
246 input_dict_2 = {'tx-dapi': 'Swfw02qXGyI=',
247 'expected-sapi': 'Swfw02qXGyI=',
248 'tx-sapi': 'fuYZwEO660g=',
249 'expected-dapi': 'fuYZwEO660g=',
250 'rate': 'org-openroadm-otn-common-types:OTU4',
254 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
257 self.assertDictEqual(input_dict_2,
259 ['org-openroadm-otn-otu-interfaces:otu'])
261 # Test creation of ODU4 service
262 def test_08_service_create_ODU4(self):
263 url = "{}/operations/transportpce-renderer:service-implementation-request"
266 "transportpce-renderer:input": {
267 "transportpce-renderer:service-name":
268 "SPDRA-SPDRC-OTU4-ODU4",
269 "transportpce-renderer:connection-type": "infrastructure",
270 "transportpce-renderer:service-handler-header": {
271 "transportpce-renderer:request-id": "abcd12-efgh34"
273 "transportpce-renderer:service-a-end": {
274 "transportpce-renderer:service-format": "ODU",
275 "transportpce-renderer:odu-service-rate":
276 "org-openroadm-otn-common-types:ODU4",
277 "transportpce-renderer:clli": "nodeSA",
278 "transportpce-renderer:node-id": "SPDR-SA1"
281 "transportpce-renderer:service-z-end": {
282 "transportpce-renderer:service-format": "ODU",
283 "transportpce-renderer:odu-service-rate":
284 "org-openroadm-otn-common-types:ODU4",
285 "transportpce-renderer:clli": "nodeSC",
286 "transportpce-renderer:node-id": "SPDR-SC1"
288 "transportpce-renderer:path-description": {
295 "tp-node-id": "SPDR-SA1-XPDR1",
302 "tp-node-id": "SPDR-SA1-XPDR1",
303 "tp-id": "XPDR1-NETWORK1"
309 "tp-node-id": "SPDR-SC1-XPDR1",
310 "tp-id": "XPDR1-NETWORK1"
316 "tp-node-id": "SPDR-SC1-XPDR1",
322 "transportpce-renderer:zToA-direction": {
323 "transportpce-renderer:rate": "100",
328 "tp-node-id": "SPDR-SC1-XPDR1",
335 "tp-node-id": "SPDR-SC1-XPDR1",
336 "tp-id": "XPDR1-NETWORK1"
342 "tp-node-id": "SPDR-SA1-XPDR1",
343 "tp-id": "XPDR1-NETWORK1"
349 "tp-node-id": "SPDR-SA1-XPDR1",
358 response = test_utils.post_request(url, data)
360 self.assertEqual(response.status_code, requests.codes.ok)
361 res = response.json()
362 self.assertIn('Operation Successful',
363 res["output"]["configuration-response-common"]
364 ["response-message"])
366 # Test ODU4 interfaces on SPDR-A1 and SPDR-C1
367 def test_09_check_interface_ODU4(self):
368 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-ODU4")
369 self.assertEqual(response.status_code, requests.codes.ok)
370 res = response.json()
371 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
372 'administrative-state': 'inService',
373 'supporting-circuit-pack-name': 'CP1-CFP0',
374 'supporting-interface': 'XPDR1-NETWORK1-OTU',
375 'type': 'org-openroadm-interfaces:otnOdu',
376 'supporting-port': 'CP1-CFP0-P1'}
377 # SAPI/DAPI are added in the Otu4 renderer
378 input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
379 'rate': 'org-openroadm-otn-common-types:ODU4',
380 'expected-dapi': 'Swfw02qXGyI=',
381 'expected-sapi': 'fuYZwEO660g=',
382 'tx-dapi': 'fuYZwEO660g=',
383 'tx-sapi': 'Swfw02qXGyI='}
385 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
387 self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
389 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
391 self.assertDictEqual(
392 {u'payload-type': u'21', u'exp-payload-type': u'21'},
393 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
395 def test_10_check_interface_ODU4(self):
396 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-ODU4")
397 self.assertEqual(response.status_code, requests.codes.ok)
398 res = response.json()
399 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU4',
400 'administrative-state': 'inService',
401 'supporting-circuit-pack-name': 'CP1-CFP0',
402 'supporting-interface': 'XPDR1-NETWORK1-OTU',
403 'type': 'org-openroadm-interfaces:otnOdu',
404 'supporting-port': 'CP1-CFP0-P1'}
405 # SAPI/DAPI are added in the Otu4 renderer
406 input_dict_2 = {'odu-function': 'org-openroadm-otn-common-types:ODU-TTP',
407 'rate': 'org-openroadm-otn-common-types:ODU4',
408 'tx-sapi': 'fuYZwEO660g=',
409 'tx-dapi': 'Swfw02qXGyI=',
410 'expected-sapi': 'Swfw02qXGyI=',
411 'expected-dapi': 'fuYZwEO660g='
413 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
415 self.assertDictEqual(dict(res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'],
417 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
419 self.assertDictEqual(
420 {u'payload-type': u'21', u'exp-payload-type': u'21'},
421 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
423 # Test creation of 10G service
424 def test_11_service_create_10GE(self):
425 url = "{}/operations/transportpce-renderer:service-implementation-request"
428 "transportpce-renderer:input": {
429 "transportpce-renderer:service-name": "SPDRA-SPDRC-10G",
430 "transportpce-renderer:connection-type": "service",
431 "transportpce-renderer:service-handler-header": {
432 "transportpce-renderer:request-id": "abcd12-efgh34"
434 "transportpce-renderer:service-a-end": {
435 "transportpce-renderer:service-format": "Ethernet",
436 "transportpce-renderer:service-rate": "10",
437 "transportpce-renderer:clli": "nodeSA",
438 "transportpce-renderer:node-id": "SPDR-SA1"
440 "transportpce-renderer:service-z-end": {
441 "transportpce-renderer:service-format": "Ethernet",
442 "transportpce-renderer:service-rate": "10",
443 "transportpce-renderer:clli": "nodeSC",
444 "transportpce-renderer:node-id": "SPDR-SC1"
446 "transportpce-renderer:path-description": {
449 "trib-port-number": 1,
450 "trib-slot-number": 1,
455 "tp-node-id": "SPDR-SA1-XPDR1",
456 "tp-id": "XPDR1-CLIENT1"
463 "tp-node-id": "SPDR-SA1-XPDR1",
464 "tp-id": "XPDR1-NETWORK1"
470 "tp-node-id": "SPDR-SC1-XPDR1",
471 "tp-id": "XPDR1-NETWORK1"
477 "tp-node-id": "SPDR-SC1-XPDR1",
478 "tp-id": "XPDR1-CLIENT1"
483 "transportpce-renderer:zToA-direction": {
485 "trib-port-number": 1,
486 "trib-slot-number": 1,
491 "tp-node-id": "SPDR-SC1-XPDR1",
492 "tp-id": "XPDR1-CLIENT1"
498 "tp-node-id": "SPDR-SC1-XPDR1",
499 "tp-id": "XPDR1-NETWORK1"
505 "tp-node-id": "SPDR-SA1-XPDR1",
506 "tp-id": "XPDR1-NETWORK1"
512 "tp-node-id": "SPDR-SA1-XPDR1",
513 "tp-id": "XPDR1-CLIENT1"
523 response = test_utils.post_request(url, data)
525 self.assertEqual(response.status_code, requests.codes.ok)
526 res = response.json()
527 self.assertIn('Operation Successful',
528 res["output"]["configuration-response-common"]
529 ["response-message"])
531 # Test the interfaces on SPDR-A1
532 def test_12_check_interface_10GE_CLIENT(self):
533 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-CLIENT1-ETHERNET10G")
534 self.assertEqual(response.status_code, requests.codes.ok)
535 res = response.json()
536 input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
537 'administrative-state': 'inService',
538 'supporting-circuit-pack-name': 'CP1-SFP4',
539 'type': 'org-openroadm-interfaces:ethernetCsmacd',
540 'supporting-port': 'CP1-SFP4-P1'
542 self.assertDictEqual(dict(input_dict, **res['interface'][0]),
544 self.assertDictEqual(
546 res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
548 def test_13_check_interface_ODU2E_CLIENT(self):
549 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G")
550 self.assertEqual(response.status_code, requests.codes.ok)
551 res = response.json()
552 input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G',
553 'administrative-state': 'inService',
554 'supporting-circuit-pack-name': 'CP1-SFP4',
555 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
556 'type': 'org-openroadm-interfaces:otnOdu',
557 'supporting-port': 'CP1-SFP4-P1'}
559 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
560 'rate': 'org-openroadm-otn-common-types:ODU2e',
561 'monitoring-mode': 'terminated'}
563 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
565 self.assertDictEqual(dict(input_dict_2,
566 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
567 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
568 self.assertDictEqual(
569 {u'payload-type': u'03', u'exp-payload-type': u'03'},
570 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
572 def test_14_check_ODU2E_connection(self):
573 response = test_utils.check_netconf_node_request(
575 "odu-connection/XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
576 self.assertEqual(response.status_code, requests.codes.ok)
577 res = response.json()
580 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
581 'direction': 'bidirectional'
584 self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
585 res['odu-connection'][0])
586 self.assertDictEqual({u'dst-if': u'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G'},
587 res['odu-connection'][0]['destination'])
588 self.assertDictEqual({u'src-if': u'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G'},
589 res['odu-connection'][0]['source'])
591 def test_15_check_interface_ODU2E_NETWORK(self):
592 response = test_utils.check_netconf_node_request("SPDR-SA1", "interface/XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
593 self.assertEqual(response.status_code, requests.codes.ok)
594 res = response.json()
595 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
596 'administrative-state': 'inService',
597 'supporting-circuit-pack-name': 'CP1-CFP0',
598 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
599 'type': 'org-openroadm-interfaces:otnOdu',
600 'supporting-port': 'CP1-CFP0-P1'}
602 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
603 'rate': 'org-openroadm-otn-common-types:ODU2e',
604 'monitoring-mode': 'monitored'}
606 input_dict_3 = {'trib-port-number': 1}
608 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
610 self.assertDictEqual(dict(input_dict_2,
611 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
612 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
613 self.assertDictEqual(dict(input_dict_3,
614 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
615 'parent-odu-allocation']),
616 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
617 'parent-odu-allocation'])
620 'org-openroadm-otn-odu-interfaces:odu'][
621 'parent-odu-allocation']['trib-slots'])
623 # Test the interfaces on SPDR-C1
624 def test_16_check_interface_ODU2E_NETWORK(self):
625 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
626 self.assertEqual(response.status_code, requests.codes.ok)
627 res = response.json()
628 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
629 'administrative-state': 'inService',
630 'supporting-circuit-pack-name': 'CP1-CFP0',
631 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
632 'type': 'org-openroadm-interfaces:otnOdu',
633 'supporting-port': 'CP1-CFP0-P1'}
635 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
636 'rate': 'org-openroadm-otn-common-types:ODU2e',
637 'monitoring-mode': 'monitored'}
639 input_dict_3 = {'trib-port-number': 1}
641 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
643 self.assertDictEqual(dict(input_dict_2,
644 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
645 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
646 self.assertDictEqual(dict(input_dict_3,
647 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
648 'parent-odu-allocation']),
649 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
650 'parent-odu-allocation'])
653 'org-openroadm-otn-odu-interfaces:odu'][
654 'parent-odu-allocation']['trib-slots'])
656 def test_17_check_interface_10GE_CLIENT(self):
657 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-CLIENT1-ETHERNET10G")
658 self.assertEqual(response.status_code, requests.codes.ok)
659 res = response.json()
660 input_dict = {'name': 'XPDR1-CLIENT1-ETHERNET10G',
661 'administrative-state': 'inService',
662 'supporting-circuit-pack-name': 'CP1-SFP4',
663 'type': 'org-openroadm-interfaces:ethernetCsmacd',
664 'supporting-port': 'CP1-SFP4-P1'
666 self.assertDictEqual(dict(input_dict, **res['interface'][0]),
668 self.assertDictEqual(
670 res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
672 def test_18_check_interface_ODU2E_CLIENT(self):
673 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G")
674 self.assertEqual(response.status_code, requests.codes.ok)
675 res = response.json()
676 input_dict_1 = {'name': 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G',
677 'administrative-state': 'inService',
678 'supporting-circuit-pack-name': 'CP1-SFP4',
679 'supporting-interface': 'XPDR1-CLIENT1-ETHERNET10G',
680 'type': 'org-openroadm-interfaces:otnOdu',
681 'supporting-port': 'CP1-SFP4-P1'}
683 'odu-function': 'org-openroadm-otn-common-types:ODU-TTP-CTP',
684 'rate': 'org-openroadm-otn-common-types:ODU2e',
685 'monitoring-mode': 'terminated'}
687 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
689 self.assertDictEqual(dict(input_dict_2,
690 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
691 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
692 self.assertDictEqual(
693 {u'payload-type': u'03', u'exp-payload-type': u'03'},
694 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
696 def test_19_check_ODU2E_connection(self):
697 response = test_utils.check_netconf_node_request(
699 "odu-connection/XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
700 self.assertEqual(response.status_code, requests.codes.ok)
701 res = response.json()
704 'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G-x-XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
705 'direction': 'bidirectional'
708 self.assertDictEqual(dict(input_dict_1, **res['odu-connection'][0]),
709 res['odu-connection'][0])
710 self.assertDictEqual({u'dst-if': u'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G'},
711 res['odu-connection'][0]['destination'])
712 self.assertDictEqual({u'src-if': u'XPDR1-CLIENT1-ODU2e-SPDRA-SPDRC-10G'},
713 res['odu-connection'][0]['source'])
715 def test_20_check_interface_ODU2E_NETWORK(self):
716 response = test_utils.check_netconf_node_request("SPDR-SC1", "interface/XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G")
717 self.assertEqual(response.status_code, requests.codes.ok)
718 res = response.json()
719 input_dict_1 = {'name': 'XPDR1-NETWORK1-ODU2e-SPDRA-SPDRC-10G',
720 'administrative-state': 'inService',
721 'supporting-circuit-pack-name': 'CP1-CFP0',
722 'supporting-interface': 'XPDR1-NETWORK1-ODU4',
723 'type': 'org-openroadm-interfaces:otnOdu',
724 'supporting-port': 'CP1-CFP0-P1'}
726 'odu-function': 'org-openroadm-otn-common-types:ODU-CTP',
727 'rate': 'org-openroadm-otn-common-types:ODU2e',
728 'monitoring-mode': 'monitored'}
730 input_dict_3 = {'trib-port-number': 1}
732 self.assertDictEqual(dict(input_dict_1, **res['interface'][0]),
734 self.assertDictEqual(dict(input_dict_2,
735 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
736 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'])
737 self.assertDictEqual(dict(input_dict_3,
738 **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
739 'parent-odu-allocation']),
740 res['interface'][0]['org-openroadm-otn-odu-interfaces:odu'][
741 'parent-odu-allocation'])
744 'org-openroadm-otn-odu-interfaces:odu'][
745 'parent-odu-allocation']['trib-slots'])
747 # TODO: Delete the services (OTU, ODU, LO-ODU)
748 # TODO: Delete interfaces (SPDR-A1, SPDR-C1)
750 def test_21_disconnect_SPDR_SA1(self):
751 response = test_utils.unmount_device("SPDR-SA1")
752 self.assertEqual(response.status_code, requests.codes.ok,
753 test_utils.CODE_SHOULD_BE_200)
755 def test_22_disconnect_SPDR_SC1(self):
756 response = test_utils.unmount_device("SPDR-SC1")
757 self.assertEqual(response.status_code, requests.codes.ok,
758 test_utils.CODE_SHOULD_BE_200)
761 if __name__ == "__main__":
762 unittest.main(verbosity=2)