fix some pylint issues
[transportpce.git] / tests / transportpce_tests / 2.2.1 / test_otn_topology.py
1 #!/usr/bin/env python
2
3 ##############################################################################
4 # Copyright (c) 2019 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 logging
18 import requests
19 from common import test_utils
20
21
22 class TransportPCEtesting(unittest.TestCase):
23
24     processes = None
25
26     @classmethod
27     def setUpClass(cls):
28         cls.processes = test_utils.start_tpce()
29         cls.processes = test_utils.start_sims(['spdra'])
30
31     @classmethod
32     def tearDownClass(cls):
33         # pylint: disable=not-an-iterable
34         for process in cls.processes:
35             test_utils.shutdown_process(process)
36         print("all processes killed")
37
38     def setUp(self):
39         time.sleep(5)
40
41     def test_01_connect_SPDR_SA1(self):
42         response = test_utils.mount_device("SPDR-SA1", 'spdra')
43         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
44         time.sleep(10)
45
46         response = test_utils.get_netconf_oper_request("SPDR-SA1")
47         self.assertEqual(response.status_code, requests.codes.ok)
48         res = response.json()
49         self.assertEqual(
50             res['node'][0]['netconf-node-topology:connection-status'],
51             'connected')
52
53     def test_02_getClliNetwork(self):
54         response = test_utils.get_clli_net_request()
55         self.assertEqual(response.status_code, requests.codes.ok)
56         res = response.json()
57         logging.info(res)
58         self.assertEqual(res['network'][0]['node'][0]['node-id'], 'NodeSA')
59         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
60
61     def test_03_getOpenRoadmNetwork(self):
62         response = test_utils.get_ordm_net_request()
63         self.assertEqual(response.status_code, requests.codes.ok)
64         res = response.json()
65         self.assertEqual(res['network'][0]['node'][0]['node-id'], 'SPDR-SA1')
66         self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['network-ref'], 'clli-network')
67         self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['node-ref'], 'NodeSA')
68         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-common-network:node-type'], 'XPONDER')
69         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:model'], 'universal-switchponder')
70         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:vendor'], 'vendorA')
71         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:ip'], '1.2.3.4')
72
73     def test_04_getLinks_OpenroadmTopology(self):
74         response = test_utils.get_ordm_topo_request("")
75         self.assertEqual(response.status_code, requests.codes.ok)
76         res = response.json()
77         # Tests related to links
78         self.assertNotIn('ietf-network-topology:link', res['network'][0])
79
80     def test_05_getNodes_OpenRoadmTopology(self):
81         # pylint: disable=redundant-unittest-assert
82         response = test_utils.get_ordm_topo_request("")
83         res = response.json()
84         # Tests related to nodes
85         self.assertEqual(response.status_code, requests.codes.ok)
86         self.assertIn('node', res['network'][0])
87         if 'node' in res['network'][0]:
88             nbNode = len(res['network'][0]['node'])
89             self.assertEqual(nbNode, 2)
90             listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2']
91             for i in range(0, nbNode):
92                 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
93                 nodeId = res['network'][0]['node'][i]['node-id']
94                 if nodeId == 'SPDR-SA1-XPDR1':
95                     self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
96                                   res['network'][0]['node'][i]['supporting-node'])
97                     self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
98                                   res['network'][0]['node'][i]['supporting-node'])
99                     self.assertEqual(nodeType, 'XPONDER')
100                     nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
101                     client = 0
102                     network = 0
103                     for j in range(0, nbTps):
104                         tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
105                                      ['org-openroadm-common-network:tp-type'])
106                         if tpType == 'XPONDER-CLIENT':
107                             client += 1
108                         elif tpType == 'XPONDER-NETWORK':
109                             network += 1
110                     self.assertTrue(client == 0)
111                     self.assertTrue(network == 1)
112                     listNode.remove(nodeId)
113                 elif nodeId == 'SPDR-SA1-XPDR2':
114                     self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
115                                   res['network'][0]['node'][i]['supporting-node'])
116                     self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
117                                   res['network'][0]['node'][i]['supporting-node'])
118                     self.assertEqual(nodeType, 'XPONDER')
119                     nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
120                     client = 0
121                     network = 0
122                     for j in range(0, nbTps):
123                         tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
124                                      ['org-openroadm-common-network:tp-type'])
125                         if tpType == 'XPONDER-CLIENT':
126                             client += 1
127                         elif tpType == 'XPONDER-NETWORK':
128                             network += 1
129                     self.assertTrue(client == 0)
130                     self.assertTrue(network == 4)
131                     listNode.remove(nodeId)
132                 else:
133                     self.assertFalse(True)
134             self.assertEqual(len(listNode), 0)
135
136     def test_06_getLinks_OtnTopology(self):
137         response = test_utils.get_otn_topo_request()
138         self.assertEqual(response.status_code, requests.codes.ok)
139         res = response.json()
140         self.assertNotIn('ietf-network-topology:link', res['network'][0])
141
142     def test_07_getNodes_OtnTopology(self):
143         # pylint: disable=redundant-unittest-assert
144         response = test_utils.get_otn_topo_request()
145         res = response.json()
146         self.assertEqual(response.status_code, requests.codes.ok)
147         nbNode = len(res['network'][0]['node'])
148         self.assertEqual(nbNode, 2)
149         listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2']
150         for i in range(0, nbNode):
151             nodeId = res['network'][0]['node'][i]['node-id']
152             if nodeId == 'SPDR-SA1-XPDR1':
153                 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
154                 self.assertEqual(nodeType, 'MUXPDR')
155                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
156                               res['network'][0]['node'][i]['supporting-node'])
157                 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': 'SPDR-SA1-XPDR1'},
158                               res['network'][0]['node'][i]['supporting-node'])
159                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
160                               res['network'][0]['node'][i]['supporting-node'])
161                 self.assertEqual(res['network'][0]['node'][i]
162                                  ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'], 1)
163                 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
164                 client = 0
165                 network = 0
166                 for j in range(0, nbTps):
167                     tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
168                                  ['org-openroadm-common-network:tp-type'])
169                     tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
170                     if tpType == 'XPONDER-CLIENT':
171                         client += 1
172                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
173                                              ['org-openroadm-otn-network-topology:tp-supported-interfaces']
174                                              ['supported-interface-capability'][0]['if-cap-type']),
175                                          'org-openroadm-port-types:if-10GE-ODU2e')
176                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
177                                              ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
178                                              ['rate']),
179                                          'org-openroadm-otn-common-types:ODU2e')
180                     elif tpType == 'XPONDER-NETWORK':
181                         network += 1
182                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
183                                              ['org-openroadm-otn-network-topology:tp-supported-interfaces']
184                                              ['supported-interface-capability'][0]['if-cap-type']),
185                                          'org-openroadm-port-types:if-OCH-OTU4-ODU4')
186                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
187                                              ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
188                                              ['rate']),
189                                          'org-openroadm-otn-common-types:ODU4')
190                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
191                                              ['supporting-termination-point'][0]['network-ref']), 'openroadm-topology')
192                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
193                                              ['supporting-termination-point'][0]['node-ref']), 'SPDR-SA1-XPDR1')
194                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
195                                              ['supporting-termination-point'][0]['tp-ref']), 'XPDR1-NETWORK1')
196                 self.assertTrue(client == 4)
197                 self.assertTrue(network == 1)
198                 listNode.remove(nodeId)
199                 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
200                             ['odu-switching-pools'][0]['non-blocking-list'])
201                 self.assertEqual(nbNbl, 4)
202                 for k in range(0, nbNbl):
203                     nbl = (res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
204                               ['odu-switching-pools'][0]['non-blocking-list'][k])
205                     if nbl['nbl-number'] == 1:
206                         self.assertEqual(nbl['available-interconnect-bandwidth'], 10)
207                         self.assertEqual(nbl['interconnect-bandwidth-unit'], 1000000000)
208                         self.assertIn('XPDR1-NETWORK1', nbl['tp-list'])
209                         self.assertIn('XPDR1-CLIENT1', nbl['tp-list'])
210                         self.assertNotIn('XPDR1-CLIENT2', nbl['tp-list'])
211             elif nodeId == 'SPDR-SA1-XPDR2':
212                 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
213                 self.assertEqual(nodeType, 'SWITCH')
214                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
215                               res['network'][0]['node'][i]['supporting-node'])
216                 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': 'SPDR-SA1-XPDR2'},
217                               res['network'][0]['node'][i]['supporting-node'])
218                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
219                               res['network'][0]['node'][i]['supporting-node'])
220                 self.assertEqual(res['network'][0]['node'][i]
221                                  ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'], 2)
222                 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
223                 client = 0
224                 network = 0
225                 for j in range(0, nbTps):
226                     tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
227                                  ['org-openroadm-common-network:tp-type'])
228                     tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
229                     if tpType == 'XPONDER-CLIENT':
230                         client += 1
231                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
232                                           ['org-openroadm-otn-network-topology:tp-supported-interfaces']
233                                           ['supported-interface-capability'][0]['if-cap-type']),
234                                          'org-openroadm-port-types:if-100GE-ODU4')
235                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
236                                              ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
237                                              ['rate']),
238                                          'org-openroadm-otn-common-types:ODU4')
239                     elif tpType == 'XPONDER-NETWORK':
240                         network += 1
241                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
242                                              ['org-openroadm-otn-network-topology:tp-supported-interfaces']
243                                              ['supported-interface-capability'][0]['if-cap-type']),
244                                          'org-openroadm-port-types:if-OCH-OTU4-ODU4')
245                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
246                                              ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
247                                              ['rate']),
248                                          'org-openroadm-otn-common-types:ODU4')
249                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
250                                              ['supporting-termination-point'][0]['network-ref']), 'openroadm-topology')
251                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
252                                              ['supporting-termination-point'][0]['node-ref']), 'SPDR-SA1-XPDR2')
253                         self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
254                                              ['supporting-termination-point'][0]['tp-ref']), tpId)
255                 self.assertTrue(client == 4)
256                 self.assertTrue(network == 4)
257                 listNode.remove(nodeId)
258                 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
259                             ['odu-switching-pools'][0]['non-blocking-list'])
260                 self.assertEqual(nbNbl, 1)
261                 nbl = (res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
262                           ['odu-switching-pools'][0]['non-blocking-list'][0])
263                 self.assertIn('XPDR2-NETWORK1', nbl['tp-list'])
264                 self.assertIn('XPDR2-CLIENT1', nbl['tp-list'])
265                 self.assertIn('XPDR2-NETWORK2', nbl['tp-list'])
266                 self.assertIn('XPDR2-CLIENT2', nbl['tp-list'])
267                 self.assertIn('XPDR2-NETWORK3', nbl['tp-list'])
268                 self.assertIn('XPDR2-CLIENT3', nbl['tp-list'])
269                 self.assertIn('XPDR2-NETWORK4', nbl['tp-list'])
270                 self.assertIn('XPDR2-CLIENT4', nbl['tp-list'])
271             else:
272                 self.assertFalse(True)
273         self.assertEqual(len(listNode), 0)
274
275     def test_08_disconnect_SPDR_SA1(self):
276         response = test_utils.unmount_device("SPDR-SA1")
277         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
278
279     def test_09_getClliNetwork(self):
280         response = test_utils.get_clli_net_request()
281         self.assertEqual(response.status_code, requests.codes.ok)
282         res = response.json()
283         nbNode = len(res['network'][0]['node'])
284         self.assertEqual(nbNode, 1)
285         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
286
287     def test_10_getOpenRoadmNetwork(self):
288         response = test_utils.get_ordm_net_request()
289         self.assertEqual(response.status_code, requests.codes.ok)
290         res = response.json()
291         self.assertNotIn('node', res['network'][0])
292
293     def test_11_getNodes_OpenRoadmTopology(self):
294         response = test_utils.get_ordm_topo_request("")
295         res = response.json()
296         self.assertNotIn('node', res['network'][0])
297
298     def test_12_getNodes_OtnTopology(self):
299         response = test_utils.get_otn_topo_request()
300         res = response.json()
301         self.assertNotIn('node', res['network'][0])
302
303
304 if __name__ == "__main__":
305     unittest.main(verbosity=2)