Fix some pylint warnings
[transportpce.git] / tests / transportpce_tests / 1.2.1 / test04_renderer_service_path_nominal.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 TransportPCERendererTesting(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), ('roadma', cls.NODE_VERSION)])
35
36     @classmethod
37     def tearDownClass(cls):
38         # pylint: disable=not-an-iterable
39         for process in cls.processes:
40             test_utils.shutdown_process(process)
41         print("all processes killed")
42
43     def setUp(self):
44         print("execution of {}".format(self.id().split(".")[-1]))
45         time.sleep(10)
46
47     def test_01_rdm_device_connected(self):
48         response = test_utils.mount_device("ROADMA01", ('roadma', self.NODE_VERSION))
49         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
50
51     def test_02_xpdr_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_03_rdm_portmapping(self):
56         response = test_utils.portmapping_request("ROADMA01")
57         self.assertEqual(response.status_code, requests.codes.ok)
58         res = response.json()
59         self.assertIn(
60             {'supporting-port': 'L1', 'supporting-circuit-pack-name': '2/0',
61              'logical-connection-point': 'DEG1-TTP-TXRX', 'port-direction': 'bidirectional',
62              'port-admin-state': 'InService', 'port-oper-state': 'InService'},
63             res['nodes'][0]['mapping'])
64         self.assertIn(
65             {'supporting-port': 'C7', 'supporting-circuit-pack-name': '4/0',
66              'logical-connection-point': 'SRG1-PP7-TXRX', 'port-direction': 'bidirectional',
67              'port-admin-state': 'InService', 'port-oper-state': 'InService'},
68             res['nodes'][0]['mapping'])
69
70     def test_04_xpdr_portmapping(self):
71         response = test_utils.portmapping_request("XPDRA01")
72         self.assertEqual(response.status_code, requests.codes.ok)
73         res = response.json()
74         self.assertIn(
75             {'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
76              'logical-connection-point': 'XPDR1-NETWORK1', 'port-direction': 'bidirectional',
77              'connection-map-lcp': 'XPDR1-CLIENT1', 'port-qual': 'xpdr-network',
78              'lcp-hash-val': 'OSvMgUyP+mE=',
79              'port-admin-state': 'InService', 'port-oper-state': 'InService'},
80             res['nodes'][0]['mapping'])
81         self.assertIn(
82             {'supporting-port': 'C1',
83              'supporting-circuit-pack-name': '1/0/C1-PLUG-CLIENT',
84              'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
85              'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
86              'lcp-hash-val': 'AO9UFkY/TLYw',
87              'port-admin-state': 'InService', 'port-oper-state': 'InService'},
88             res['nodes'][0]['mapping'])
89
90     def test_05_service_path_create(self):
91         response = test_utils.service_path_request("create", "service_test", "7",
92                                                    [{"renderer:node-id": "ROADMA01",
93                                                      "renderer:src-tp": "SRG1-PP7-TXRX",
94                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
95                                                     {"renderer:node-id": "XPDRA01",
96                                                      "renderer:src-tp": "XPDR1-CLIENT1",
97                                                      "renderer:dest-tp": "XPDR1-NETWORK1"}],
98                                                    195.8, 40, 195.775, 195.825, 713,
99                                                    720)
100         print(response.json())
101         self.assertEqual(response.status_code, requests.codes.ok)
102         res = response.json()
103         self.assertIn('Roadm-connection successfully created for nodes: ROADMA01', res["output"]["result"])
104
105     def test_06_service_path_create_rdm_check(self):
106         response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-713:720")
107         self.assertEqual(response.status_code, requests.codes.ok)
108         res = response.json()
109         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
110         self.assertDictEqual(
111             dict({
112                 'name': 'DEG1-TTP-TXRX-713:720',
113                 'administrative-state': 'inService',
114                 'supporting-circuit-pack-name': '2/0',
115                 'type': 'org-openroadm-interfaces:opticalChannel',
116                 'supporting-port': 'L1'
117             }, **res['interface'][0]),
118             res['interface'][0]
119         )
120         self.assertDictEqual(
121             {'wavelength-number': 7},
122             res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
123
124     def test_07_service_path_create_rdm_check(self):
125         response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-713:720")
126         self.assertEqual(response.status_code, requests.codes.ok)
127         res = response.json()
128         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
129         self.assertDictEqual(
130             dict({
131                 'name': 'SRG1-PP7-TXRX-713:720',
132                 'administrative-state': 'inService',
133                 'supporting-circuit-pack-name': '4/0',
134                 'type': 'org-openroadm-interfaces:opticalChannel',
135                 'supporting-port': 'C7'
136             }, **res['interface'][0]),
137             res['interface'][0]
138         )
139         self.assertDictEqual(
140             {'wavelength-number': 7},
141             res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
142
143     def test_08_service_path_create_rdm_check(self):
144         response = test_utils.check_netconf_node_request(
145             "ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720")
146         self.assertEqual(response.status_code, requests.codes.ok)
147         res = response.json()
148         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
149         self.assertDictEqual(
150             dict({
151                 'connection-number': 'SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720',
152                 'wavelength-number': 7,
153                 'opticalControlMode': 'off'
154             }, **res['roadm-connections'][0]),
155             res['roadm-connections'][0]
156         )
157         self.assertDictEqual(
158             {'src-if': 'SRG1-PP7-TXRX-713:720'},
159             res['roadm-connections'][0]['source'])
160         self.assertDictEqual(
161             {'dst-if': 'DEG1-TTP-TXRX-713:720'},
162             res['roadm-connections'][0]['destination'])
163
164     def test_09_service_path_create_xpdr_check(self):
165         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-713:720")
166         self.assertEqual(response.status_code, requests.codes.ok)
167         res = response.json()
168         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
169         self.assertDictEqual(
170             dict({
171                 'name': 'XPDR1-NETWORK1-713:720',
172                 'administrative-state': 'inService',
173                 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
174                 'type': 'org-openroadm-interfaces:opticalChannel',
175                 'supporting-port': '1'
176             }, **res['interface'][0]),
177             res['interface'][0]
178         )
179         self.assertDictEqual(
180             {'rate': 'org-openroadm-optical-channel-interfaces:R100G',
181              'transmit-power': -5,
182              'wavelength-number': 7,
183              'modulation-format': 'dp-qpsk'},
184             res['interface'][0]['org-openroadm-optical-channel-interfaces:och'])
185
186     def test_10_service_path_create_xpdr_check(self):
187         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-OTU")
188         self.assertEqual(response.status_code, requests.codes.ok)
189         res = response.json()
190         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
191         self.assertDictEqual(
192             dict({
193                 'name': 'XPDR1-NETWORK1-OTU',
194                 'administrative-state': 'inService',
195                 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
196                 'type': 'org-openroadm-interfaces:otnOtu',
197                 'supporting-port': '1',
198                 'supporting-interface': 'XPDR1-NETWORK1-713:720'
199             }, **res['interface'][0]),
200             res['interface'][0]
201         )
202         self.assertDictEqual(
203             {'rate': 'org-openroadm-otn-otu-interfaces:OTU4',
204              'fec': 'scfec'},
205             res['interface'][0]['org-openroadm-otn-otu-interfaces:otu'])
206
207     def test_11_service_path_create_xpdr_check(self):
208         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-ODU")
209         self.assertEqual(response.status_code, requests.codes.ok)
210         res = response.json()
211         # the 2 following statements replace self.assertDictContainsSubset deprecated in python 3.2
212         self.assertDictEqual(
213             dict({
214                 'name': 'XPDR1-NETWORK1-ODU',
215                 'administrative-state': 'inService',
216                 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
217                 'type': 'org-openroadm-interfaces:otnOdu',
218                 'supporting-port': '1',
219                 'supporting-interface': 'XPDR1-NETWORK1-OTU'
220             }, **res['interface'][0]),
221             res['interface'][0]
222         )
223         self.assertDictEqual(
224             dict({
225                 'rate': 'org-openroadm-otn-odu-interfaces:ODU4',
226                 'monitoring-mode': 'terminated'
227             }, **res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']),
228             res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']
229         )
230         self.assertDictEqual({'exp-payload-type': '07', 'payload-type': '07'},
231                              res['interface'][0]['org-openroadm-otn-odu-interfaces:odu']['opu'])
232
233     def test_12_service_path_create_xpdr_check(self):
234         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-CLIENT1-ETHERNET")
235         self.assertEqual(response.status_code, requests.codes.ok)
236         res = response.json()
237         # the following statement replaces self.assertDictContainsSubset deprecated in python 3.2
238         self.assertDictEqual(
239             dict({
240                 'name': 'XPDR1-CLIENT1-ETHERNET',
241                 'administrative-state': 'inService',
242                 'supporting-circuit-pack-name': '1/0/C1-PLUG-CLIENT',
243                 'type': 'org-openroadm-interfaces:ethernetCsmacd',
244                 'supporting-port': 'C1'
245             }, **res['interface'][0]),
246             res['interface'][0]
247         )
248         self.assertDictEqual(
249             {'speed': 100000,
250              'mtu': 9000,
251              'auto-negotiation': 'enabled',
252              'duplex': 'full',
253              'fec': 'off'},
254             res['interface'][0]['org-openroadm-ethernet-interfaces:ethernet'])
255
256     def test_13_service_path_create_xpdr_check(self):
257         response = test_utils.check_netconf_node_request("XPDRA01", "circuit-packs/1%2F0%2F1-PLUG-NET")
258         self.assertEqual(response.status_code, requests.codes.ok)
259         res = response.json()
260         self.assertIn('not-reserved-inuse', res['circuit-packs'][0]["equipment-state"])
261
262     def test_14_service_path_delete(self):
263         response = test_utils.service_path_request("delete", "service_test", "7",
264                                                    [{"renderer:node-id": "ROADMA01",
265                                                      "renderer:src-tp": "SRG1-PP7-TXRX",
266                                                      "renderer:dest-tp": "DEG1-TTP-TXRX"},
267                                                     {"renderer:node-id": "XPDRA01",
268                                                      "renderer:src-tp": "XPDR1-CLIENT1",
269                                                      "renderer:dest-tp": "XPDR1-NETWORK1"}],
270                                                    195.8, 40, 195.775, 195.825, 713,
271                                                    720)
272         self.assertEqual(response.status_code, requests.codes.ok)
273         self.assertEqual(response.json(), {
274             'output': {'result': 'Request processed', 'success': True}})
275
276     def test_15_service_path_delete_rdm_check(self):
277         response = test_utils.check_netconf_node_request("ROADMA01", "interface/DEG1-TTP-TXRX-713:720")
278         self.assertEqual(response.status_code, requests.codes.conflict)
279         res = response.json()
280         self.assertIn(
281             {"error-type": "application", "error-tag": "data-missing",
282              "error-message": "Request could not be completed because the relevant data model content does not exist"},
283             res['errors']['error'])
284
285     def test_16_service_path_delete_rdm_check(self):
286         response = test_utils.check_netconf_node_request("ROADMA01", "interface/SRG1-PP7-TXRX-713:720")
287         self.assertEqual(response.status_code, requests.codes.conflict)
288         res = response.json()
289         self.assertIn(
290             {"error-type": "application", "error-tag": "data-missing",
291                 "error-message":
292                     "Request could not be completed because the relevant data model content does not exist"},
293             res['errors']['error'])
294
295     def test_17_service_path_delete_rdm_check(self):
296         response = test_utils.check_netconf_node_request(
297             "ROADMA01", "roadm-connections/SRG1-PP7-TXRX-DEG1-TTP-TXRX-713:720")
298         self.assertEqual(response.status_code, requests.codes.conflict)
299         res = response.json()
300         self.assertIn(
301             {"error-type": "application", "error-tag": "data-missing",
302                 "error-message":
303                     "Request could not be completed because the relevant data model content does not exist"},
304             res['errors']['error'])
305
306     def test_18_service_path_delete_xpdr_check(self):
307         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-713:720")
308         self.assertEqual(response.status_code, requests.codes.conflict)
309         res = response.json()
310         self.assertIn(
311             {"error-type": "application", "error-tag": "data-missing",
312                 "error-message":
313                     "Request could not be completed because the relevant data model content does not exist"},
314             res['errors']['error'])
315
316     def test_19_service_path_delete_xpdr_check(self):
317         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-OTU")
318         self.assertEqual(response.status_code, requests.codes.conflict)
319         res = response.json()
320         self.assertIn(
321             {"error-type": "application", "error-tag": "data-missing",
322                 "error-message":
323                     "Request could not be completed because the relevant data model content does not exist"},
324             res['errors']['error'])
325
326     def test_20_service_path_delete_xpdr_check(self):
327         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-NETWORK1-ODU")
328         self.assertEqual(response.status_code, requests.codes.conflict)
329         res = response.json()
330         self.assertIn(
331             {"error-type": "application", "error-tag": "data-missing",
332                 "error-message":
333                     "Request could not be completed because the relevant data model content does not exist"},
334             res['errors']['error'])
335
336     def test_21_service_path_delete_xpdr_check(self):
337         response = test_utils.check_netconf_node_request("XPDRA01", "interface/XPDR1-CLIENT1-ETHERNET")
338         self.assertEqual(response.status_code, requests.codes.conflict)
339         res = response.json()
340         self.assertIn(
341             {"error-type": "application", "error-tag": "data-missing",
342                 "error-message":
343                     "Request could not be completed because the relevant data model content does not exist"},
344             res['errors']['error'])
345
346     def test_22_service_path_delete_xpdr_check(self):
347         response = test_utils.check_netconf_node_request("XPDRA01", "circuit-packs/1%2F0%2F1-PLUG-NET")
348         self.assertEqual(response.status_code, requests.codes.ok)
349         res = response.json()
350         self.assertEqual('not-reserved-available', res["circuit-packs"][0]['equipment-state'])
351
352     def test_23_rdm_device_disconnected(self):
353         response = test_utils.unmount_device("ROADMA01")
354         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
355
356     def test_24_xpdr_device_disconnected(self):
357         response = test_utils.unmount_device("XPDRA01")
358         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
359
360
361 if __name__ == "__main__":
362     unittest.main(verbosity=2, failfast=False)