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 ##############################################################################
16 from common import test_utils
19 class TransportPCEtesting(unittest.TestCase):
25 cls.processes = test_utils.start_tpce()
26 cls.processes = test_utils.start_sims(['spdra'])
29 def tearDownClass(cls):
30 for process in cls.processes:
31 test_utils.shutdown_process(process)
32 print("all processes killed")
37 def test_01_connect_SPDR_SA1(self):
38 response = test_utils.mount_device("SPDR-SA1", 'spdra')
39 self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
42 response = test_utils.get_netconf_oper_request("SPDR-SA1")
43 self.assertEqual(response.status_code, requests.codes.ok)
46 res['node'][0]['netconf-node-topology:connection-status'],
49 def test_02_getClliNetwork(self):
50 response = test_utils.get_clli_net_request()
51 self.assertEqual(response.status_code, requests.codes.ok)
54 self.assertEqual(res['network'][0]['node'][0]['node-id'], 'NodeSA')
55 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
57 def test_03_getOpenRoadmNetwork(self):
58 response = test_utils.get_ordm_net_request()
59 self.assertEqual(response.status_code, requests.codes.ok)
61 self.assertEqual(res['network'][0]['node'][0]['node-id'], 'SPDR-SA1')
62 self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['network-ref'], 'clli-network')
63 self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['node-ref'], 'NodeSA')
64 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-common-network:node-type'], 'XPONDER')
65 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:model'], 'universal-switchponder')
66 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:vendor'], 'vendorA')
67 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:ip'], '1.2.3.4')
69 def test_04_getLinks_OpenroadmTopology(self):
70 response = test_utils.get_ordm_topo_request("")
71 self.assertEqual(response.status_code, requests.codes.ok)
73 # Tests related to links
74 self.assertNotIn('ietf-network-topology:link', res['network'][0])
76 def test_05_getNodes_OpenRoadmTopology(self):
77 response = test_utils.get_ordm_topo_request("")
79 # Tests related to nodes
80 self.assertEqual(response.status_code, requests.codes.ok)
81 self.assertIn('node', res['network'][0])
82 if ('node' in res['network'][0]):
83 nbNode = len(res['network'][0]['node'])
84 self.assertEqual(nbNode, 2)
85 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2']
86 for i in range(0, nbNode):
87 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
88 nodeId = res['network'][0]['node'][i]['node-id']
89 if (nodeId == 'SPDR-SA1-XPDR1'):
90 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
91 res['network'][0]['node'][i]['supporting-node'])
92 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
93 res['network'][0]['node'][i]['supporting-node'])
94 self.assertEqual(nodeType, 'XPONDER')
95 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
98 for j in range(0, nbTps):
99 tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
100 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
101 if (tpType == 'XPONDER-CLIENT'):
103 elif (tpType == 'XPONDER-NETWORK'):
105 self.assertTrue(client == 0)
106 self.assertTrue(network == 1)
107 listNode.remove(nodeId)
108 elif (nodeId == 'SPDR-SA1-XPDR2'):
109 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
110 res['network'][0]['node'][i]['supporting-node'])
111 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
112 res['network'][0]['node'][i]['supporting-node'])
113 self.assertEqual(nodeType, 'XPONDER')
114 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
117 for j in range(0, nbTps):
118 tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
119 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
120 if (tpType == 'XPONDER-CLIENT'):
122 elif (tpType == 'XPONDER-NETWORK'):
124 self.assertTrue(client == 0)
125 self.assertTrue(network == 4)
126 listNode.remove(nodeId)
128 self.assertFalse(True)
129 self.assertEqual(len(listNode), 0)
131 def test_06_getLinks_OtnTopology(self):
132 url = "{}/config/ietf-network:networks/network/otn-topology"
133 response = test_utils.get_request(url)
134 self.assertEqual(response.status_code, requests.codes.ok)
135 res = response.json()
136 self.assertNotIn('ietf-network-topology:link', res['network'][0])
138 def test_07_getNodes_OtnTopology(self):
139 url = "{}/config/ietf-network:networks/network/otn-topology"
140 response = test_utils.get_request(url)
141 res = response.json()
142 self.assertEqual(response.status_code, requests.codes.ok)
143 nbNode = len(res['network'][0]['node'])
144 self.assertEqual(nbNode, 2)
145 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2']
146 for i in range(0, nbNode):
147 nodeId = res['network'][0]['node'][i]['node-id']
148 if(nodeId == 'SPDR-SA1-XPDR1'):
149 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
150 self.assertEqual(nodeType, 'MUXPDR')
151 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
152 res['network'][0]['node'][i]['supporting-node'])
153 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': 'SPDR-SA1-XPDR1'},
154 res['network'][0]['node'][i]['supporting-node'])
155 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
156 res['network'][0]['node'][i]['supporting-node'])
157 self.assertEqual(res['network'][0]['node'][i]
158 ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'], 1)
159 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
162 for j in range(0, nbTps):
163 tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
164 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
165 if (tpType == 'XPONDER-CLIENT'):
167 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-otn-network-topology:tp-supported-interfaces']
168 ['supported-interface-capability'][0]['if-cap-type'], 'org-openroadm-port-types:if-10GE-ODU2e')
169 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
170 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']['rate'], 'org-openroadm-otn-common-types:ODU2e')
171 elif (tpType == 'XPONDER-NETWORK'):
173 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-otn-network-topology:tp-supported-interfaces']
174 ['supported-interface-capability'][0]['if-cap-type'], 'org-openroadm-port-types:if-OCH-OTU4-ODU4')
175 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
176 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']['rate'], 'org-openroadm-otn-common-types:ODU4')
177 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
178 [j]['supporting-termination-point'][0]['network-ref'], 'openroadm-topology')
179 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
180 [j]['supporting-termination-point'][0]['node-ref'], 'SPDR-SA1-XPDR1')
181 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
182 [j]['supporting-termination-point'][0]['tp-ref'], 'XPDR1-NETWORK1')
183 self.assertTrue(client == 4)
184 self.assertTrue(network == 1)
185 listNode.remove(nodeId)
186 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
187 ['odu-switching-pools'][0]['non-blocking-list'])
188 self.assertEqual(nbNbl, 4)
189 for k in range(0, nbNbl):
190 nbl = res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']['odu-switching-pools'][0]['non-blocking-list'][k]
191 if (nbl['nbl-number'] == 1):
192 self.assertEqual(nbl['available-interconnect-bandwidth'], 10)
193 self.assertEqual(nbl['interconnect-bandwidth-unit'], 1000000000)
194 self.assertIn('XPDR1-NETWORK1', nbl['tp-list'])
195 self.assertIn('XPDR1-CLIENT1', nbl['tp-list'])
196 self.assertNotIn('XPDR1-CLIENT2', nbl['tp-list'])
197 elif(nodeId == 'SPDR-SA1-XPDR2'):
198 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
199 self.assertEqual(nodeType, 'SWITCH')
200 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
201 res['network'][0]['node'][i]['supporting-node'])
202 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': 'SPDR-SA1-XPDR2'},
203 res['network'][0]['node'][i]['supporting-node'])
204 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
205 res['network'][0]['node'][i]['supporting-node'])
206 self.assertEqual(res['network'][0]['node'][i]
207 ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'], 2)
208 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
211 for j in range(0, nbTps):
212 tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
213 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
214 if (tpType == 'XPONDER-CLIENT'):
216 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-otn-network-topology:tp-supported-interfaces']
217 ['supported-interface-capability'][0]['if-cap-type'], 'org-openroadm-port-types:if-100GE-ODU4')
218 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
219 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']['rate'], 'org-openroadm-otn-common-types:ODU4')
220 elif (tpType == 'XPONDER-NETWORK'):
222 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-otn-network-topology:tp-supported-interfaces']
223 ['supported-interface-capability'][0]['if-cap-type'], 'org-openroadm-port-types:if-OCH-OTU4-ODU4')
224 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
225 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']['rate'], 'org-openroadm-otn-common-types:ODU4')
226 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
227 [j]['supporting-termination-point'][0]['network-ref'], 'openroadm-topology')
228 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
229 [j]['supporting-termination-point'][0]['node-ref'], 'SPDR-SA1-XPDR2')
230 self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point']
231 [j]['supporting-termination-point'][0]['tp-ref'], tpId)
232 self.assertTrue(client == 4)
233 self.assertTrue(network == 4)
234 listNode.remove(nodeId)
235 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
236 ['odu-switching-pools'][0]['non-blocking-list'])
237 self.assertEqual(nbNbl, 1)
238 nbl = res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']['odu-switching-pools'][0]['non-blocking-list'][0]
239 self.assertIn('XPDR2-NETWORK1', nbl['tp-list'])
240 self.assertIn('XPDR2-CLIENT1', nbl['tp-list'])
241 self.assertIn('XPDR2-NETWORK2', nbl['tp-list'])
242 self.assertIn('XPDR2-CLIENT2', nbl['tp-list'])
243 self.assertIn('XPDR2-NETWORK3', nbl['tp-list'])
244 self.assertIn('XPDR2-CLIENT3', nbl['tp-list'])
245 self.assertIn('XPDR2-NETWORK4', nbl['tp-list'])
246 self.assertIn('XPDR2-CLIENT4', nbl['tp-list'])
248 self.assertFalse(True)
249 self.assertEqual(len(listNode), 0)
251 def test_08_disconnect_SPDR_SA1(self):
252 response = test_utils.unmount_device("SPDR-SA1")
253 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
255 def test_09_getClliNetwork(self):
256 response = test_utils.get_clli_net_request()
257 self.assertEqual(response.status_code, requests.codes.ok)
258 res = response.json()
259 nbNode = len(res['network'][0]['node'])
260 self.assertEqual(nbNode, 1)
261 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
263 def test_10_getOpenRoadmNetwork(self):
264 response = test_utils.get_ordm_net_request()
265 self.assertEqual(response.status_code, requests.codes.ok)
266 res = response.json()
267 self.assertNotIn('node', res['network'][0])
269 def test_11_getNodes_OpenRoadmTopology(self):
270 response = test_utils.get_ordm_topo_request("")
271 res = response.json()
272 self.assertNotIn('node', res['network'][0])
274 def test_12_getNodes_OtnTopology(self):
275 url = "{}/config/ietf-network:networks/network/otn-topology"
276 response = test_utils.get_request(url)
277 res = response.json()
278 self.assertNotIn('node', res['network'][0])
281 if __name__ == "__main__":
282 unittest.main(verbosity=2)