3 ##############################################################################
4 # Copyright (c) 2019 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
19 from common import test_utils
22 class TransportPCEtesting(unittest.TestCase):
28 cls.processes = test_utils.start_tpce()
29 cls.processes = test_utils.start_sims(['spdra'])
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")
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)
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_getClliNetwork(self):
54 response = test_utils.get_clli_net_request()
55 self.assertEqual(response.status_code, requests.codes.ok)
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')
61 def test_03_getOpenRoadmNetwork(self):
62 response = test_utils.get_ordm_net_request()
63 self.assertEqual(response.status_code, requests.codes.ok)
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')
73 def test_04_getLinks_OpenroadmTopology(self):
74 response = test_utils.get_ordm_topo_request("")
75 self.assertEqual(response.status_code, requests.codes.ok)
77 # Tests related to links
78 self.assertNotIn('ietf-network-topology:link', res['network'][0])
80 def test_05_getNodes_OpenRoadmTopology(self):
81 # pylint: disable=redundant-unittest-assert
82 response = test_utils.get_ordm_topo_request("")
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'])
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':
108 elif tpType == 'XPONDER-NETWORK':
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'])
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':
127 elif tpType == 'XPONDER-NETWORK':
129 self.assertTrue(client == 0)
130 self.assertTrue(network == 4)
131 listNode.remove(nodeId)
133 self.assertFalse(True)
134 self.assertEqual(len(listNode), 0)
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])
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'])
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':
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']
179 'org-openroadm-otn-common-types:ODU2e')
180 elif tpType == 'XPONDER-NETWORK':
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']
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'])
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':
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']
238 'org-openroadm-otn-common-types:ODU4')
239 elif tpType == 'XPONDER-NETWORK':
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']
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'])
272 self.assertFalse(True)
273 self.assertEqual(len(listNode), 0)
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)
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')
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])
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])
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])
304 if __name__ == "__main__":
305 unittest.main(verbosity=2)