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