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