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
20 sys.path.append('transportpce_tests/common/')
24 class TransportPCEtesting(unittest.TestCase):
27 NODE_VERSION = '2.2.1'
31 cls.processes = test_utils.start_tpce()
32 cls.processes = test_utils.start_sims([('spdra', cls.NODE_VERSION)])
35 def tearDownClass(cls):
36 # pylint: disable=not-an-iterable
37 for process in cls.processes:
38 test_utils.shutdown_process(process)
39 print("all processes killed")
44 def test_01_connect_SPDR_SA1(self):
45 response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
46 self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
49 response = test_utils.get_netconf_oper_request("SPDR-SA1")
50 self.assertEqual(response.status_code, requests.codes.ok)
53 res['node'][0]['netconf-node-topology:connection-status'],
56 def test_02_getClliNetwork(self):
57 response = test_utils.get_clli_net_request()
58 self.assertEqual(response.status_code, requests.codes.ok)
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')
64 def test_03_getOpenRoadmNetwork(self):
65 response = test_utils.get_ordm_net_request()
66 self.assertEqual(response.status_code, requests.codes.ok)
68 self.assertEqual(res['network'][0]['node'][0]['node-id'], 'SPDR-SA1')
69 self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['network-ref'], 'clli-network')
70 self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['node-ref'], 'NodeSA')
71 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-common-network:node-type'], 'XPONDER')
72 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:model'], 'universal-switchponder')
73 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:vendor'], 'vendorA')
74 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:ip'], '1.2.3.4')
76 def test_04_getLinks_OpenroadmTopology(self):
77 response = test_utils.get_ordm_topo_request("")
78 self.assertEqual(response.status_code, requests.codes.ok)
80 # Tests related to links
81 self.assertNotIn('ietf-network-topology:link', res['network'][0])
83 def test_05_getNodes_OpenRoadmTopology(self):
84 # pylint: disable=redundant-unittest-assert
85 response = test_utils.get_ordm_topo_request("")
87 # Tests related to nodes
88 self.assertEqual(response.status_code, requests.codes.ok)
89 self.assertIn('node', res['network'][0])
90 if 'node' in res['network'][0]:
91 nbNode = len(res['network'][0]['node'])
92 self.assertEqual(nbNode, 3)
93 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
94 for i in range(0, nbNode):
95 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
96 nodeId = res['network'][0]['node'][i]['node-id']
97 if nodeId not in listNode:
98 self.assertFalse(True)
100 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
101 res['network'][0]['node'][i]['supporting-node'])
102 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
103 res['network'][0]['node'][i]['supporting-node'])
104 self.assertEqual(nodeType, 'XPONDER')
105 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
108 for j in range(0, nbTps):
109 tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
110 ['org-openroadm-common-network:tp-type'])
111 if tpType == 'XPONDER-CLIENT':
113 elif tpType == 'XPONDER-NETWORK':
115 self.assertTrue(client == 0)
116 if nodeId == 'SPDR-SA1-XPDR1' or nodeId == 'SPDR-SA1-XPDR3':
117 self.assertTrue(network == 1)
119 # elif nodeId == 'SPDR-SA1-XPDR2':
120 self.assertTrue(network == 4)
121 listNode.remove(nodeId)
122 self.assertEqual(len(listNode), 0)
124 def test_06_getLinks_OtnTopology(self):
125 response = test_utils.get_otn_topo_request()
126 self.assertEqual(response.status_code, requests.codes.ok)
127 res = response.json()
128 self.assertNotIn('ietf-network-topology:link', res['network'][0])
130 def test_07_getNodes_OtnTopology(self):
131 # pylint: disable=redundant-unittest-assert
132 response = test_utils.get_otn_topo_request()
133 res = response.json()
134 self.assertEqual(response.status_code, requests.codes.ok)
135 nbNode = len(res['network'][0]['node'])
136 self.assertEqual(nbNode, 3)
137 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
140 'node-type': 'MUXPDR',
142 'port-types': ['org-openroadm-port-types:if-10GE-ODU2', 'org-openroadm-port-types:if-10GE-ODU2e',
143 'org-openroadm-port-types:if-10GE'],
144 'otn-common-types': 'org-openroadm-otn-common-types:ODU2e',
147 'tp-checklist': ['XPDR1-NETWORK1', 'XPDR1-CLIENT1'],
148 'tp-unchecklist': ['XPDR1-CLIENT2']
151 'node-type': 'SWITCH',
153 'port-types': 'org-openroadm-port-types:if-100GE-ODU4',
154 'otn-common-types': 'org-openroadm-otn-common-types:ODU4',
157 'tp-checklist': ['XPDR2-NETWORK4', 'XPDR2-CLIENT1', 'XPDR2-NETWORK3', 'XPDR2-CLIENT4',
158 'XPDR2-CLIENT2', 'XPDR2-NETWORK2', 'XPDR2-CLIENT3', 'XPDR2-NETWORK1'],
162 for i in range(0, nbNode):
163 nodeId = res['network'][0]['node'][i]['node-id']
164 if nodeId in CHECK_LIST:
165 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
166 self.assertEqual(nodeType, CHECK_LIST[nodeId]['node-type'])
167 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
168 res['network'][0]['node'][i]['supporting-node'])
169 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': nodeId},
170 res['network'][0]['node'][i]['supporting-node'])
171 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
172 res['network'][0]['node'][i]['supporting-node'])
173 self.assertEqual(res['network'][0]['node'][i]
174 ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'],
175 CHECK_LIST[nodeId]['xpdr-number'])
176 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
179 for j in range(0, nbTps):
180 tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
181 ['org-openroadm-common-network:tp-type'])
182 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
183 if tpType == 'XPONDER-CLIENT':
185 print("tpId = {}".format(tpId))
186 print("tp= {}".format(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]))
187 nbIfCapType = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
188 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
189 ['supported-interface-capability'][0])
190 for k in range(0, nbIfCapType):
191 self.assertIn((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
192 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
193 ['supported-interface-capability'][0]['if-cap-type']),
194 CHECK_LIST[nodeId]['port-types'])
195 elif tpType == 'XPONDER-NETWORK':
197 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
198 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
199 ['supported-interface-capability'][0]['if-cap-type']),
200 'org-openroadm-port-types:if-OCH-OTU4-ODU4')
201 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
202 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
204 'org-openroadm-otn-common-types:ODU4')
205 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
206 ['supporting-termination-point'][0]['network-ref']), 'openroadm-topology')
207 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
208 ['supporting-termination-point'][0]['node-ref']), nodeId)
209 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
210 ['supporting-termination-point'][0]['tp-ref']), tpId)
211 self.assertTrue(client == 4)
212 self.assertTrue(network == CHECK_LIST[nodeId]['network_nb'])
213 listNode.remove(nodeId)
214 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
215 ['odu-switching-pools'][0]['non-blocking-list'])
216 self.assertEqual(nbNbl, CHECK_LIST[nodeId]['nbl_nb'])
217 for k in range(0, nbNbl):
218 nbl = (res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
219 ['odu-switching-pools'][0]['non-blocking-list'][k])
220 if nbl['nbl-number'] == 1:
221 if nodeId == 'SPDR-SA1-XPDR1':
222 self.assertEqual(nbl['available-interconnect-bandwidth'], 10)
223 self.assertEqual(nbl['interconnect-bandwidth-unit'], 1000000000)
224 for tp in CHECK_LIST[nodeId]['tp-checklist']:
225 self.assertIn(tp, nbl['tp-list'])
226 for tp in CHECK_LIST[nodeId]['tp-unchecklist']:
227 self.assertNotIn(tp, nbl['tp-list'])
229 self.assertEqual('SPDR-SA1-XPDR3', nodeId)
230 listNode.remove(nodeId)
231 self.assertEqual(len(listNode), 0)
233 def test_08_disconnect_SPDR_SA1(self):
234 response = test_utils.unmount_device("SPDR-SA1")
235 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
237 def test_09_getClliNetwork(self):
238 response = test_utils.get_clli_net_request()
239 self.assertEqual(response.status_code, requests.codes.ok)
240 res = response.json()
241 nbNode = len(res['network'][0]['node'])
242 self.assertEqual(nbNode, 1)
243 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
245 def test_10_getOpenRoadmNetwork(self):
246 response = test_utils.get_ordm_net_request()
247 self.assertEqual(response.status_code, requests.codes.ok)
248 res = response.json()
249 self.assertNotIn('node', res['network'][0])
251 def test_11_getNodes_OpenRoadmTopology(self):
252 response = test_utils.get_ordm_topo_request("")
253 res = response.json()
254 self.assertNotIn('node', res['network'][0])
256 def test_12_getNodes_OtnTopology(self):
257 response = test_utils.get_otn_topo_request()
258 res = response.json()
259 self.assertNotIn('node', res['network'][0])
262 if __name__ == "__main__":
263 unittest.main(verbosity=2)