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, 3)
90 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
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 not in listNode:
95 self.assertFalse(True)
97 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
98 res['network'][0]['node'][i]['supporting-node'])
99 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
100 res['network'][0]['node'][i]['supporting-node'])
101 self.assertEqual(nodeType, 'XPONDER')
102 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
105 for j in range(0, nbTps):
106 tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
107 ['org-openroadm-common-network:tp-type'])
108 if tpType == 'XPONDER-CLIENT':
110 elif tpType == 'XPONDER-NETWORK':
112 self.assertTrue(client == 0)
113 if nodeId == 'SPDR-SA1-XPDR1' or nodeId == 'SPDR-SA1-XPDR3':
114 self.assertTrue(network == 1)
116 # elif nodeId == 'SPDR-SA1-XPDR2':
117 self.assertTrue(network == 4)
118 listNode.remove(nodeId)
119 self.assertEqual(len(listNode), 0)
121 def test_06_getLinks_OtnTopology(self):
122 response = test_utils.get_otn_topo_request()
123 self.assertEqual(response.status_code, requests.codes.ok)
124 res = response.json()
125 self.assertNotIn('ietf-network-topology:link', res['network'][0])
127 def test_07_getNodes_OtnTopology(self):
128 # pylint: disable=redundant-unittest-assert
129 response = test_utils.get_otn_topo_request()
130 res = response.json()
131 self.assertEqual(response.status_code, requests.codes.ok)
132 nbNode = len(res['network'][0]['node'])
133 self.assertEqual(nbNode, 3)
134 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
137 'node-type': 'MUXPDR',
139 'port-types': ['org-openroadm-port-types:if-10GE-ODU2', 'org-openroadm-port-types:if-10GE-ODU2e',
140 'org-openroadm-port-types:if-10GE'],
141 'otn-common-types': 'org-openroadm-otn-common-types:ODU2e',
144 'tp-checklist': ['XPDR1-NETWORK1', 'XPDR1-CLIENT1'],
145 'tp-unchecklist': ['XPDR1-CLIENT2']
148 'node-type': 'SWITCH',
150 'port-types': 'org-openroadm-port-types:if-100GE-ODU4',
151 'otn-common-types': 'org-openroadm-otn-common-types:ODU4',
154 'tp-checklist': ['XPDR2-NETWORK4', 'XPDR2-CLIENT1', 'XPDR2-NETWORK3', 'XPDR2-CLIENT4',
155 'XPDR2-CLIENT2', 'XPDR2-NETWORK2', 'XPDR2-CLIENT3', 'XPDR2-NETWORK1'],
159 for i in range(0, nbNode):
160 nodeId = res['network'][0]['node'][i]['node-id']
161 if nodeId in CHECK_LIST:
162 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
163 self.assertEqual(nodeType, CHECK_LIST[nodeId]['node-type'])
164 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
165 res['network'][0]['node'][i]['supporting-node'])
166 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': nodeId},
167 res['network'][0]['node'][i]['supporting-node'])
168 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
169 res['network'][0]['node'][i]['supporting-node'])
170 self.assertEqual(res['network'][0]['node'][i]
171 ['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'],
172 CHECK_LIST[nodeId]['xpdr-number'])
173 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
176 for j in range(0, nbTps):
177 tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
178 ['org-openroadm-common-network:tp-type'])
179 tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
180 if tpType == 'XPONDER-CLIENT':
182 print("tpId = {}".format(tpId))
183 print("tp= {}".format(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]))
184 nbIfCapType = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
185 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
186 ['supported-interface-capability'][0])
187 for k in range(0, nbIfCapType):
188 self.assertIn((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
189 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
190 ['supported-interface-capability'][0]['if-cap-type']),
191 CHECK_LIST[nodeId]['port-types'])
192 elif tpType == 'XPONDER-NETWORK':
194 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
195 ['org-openroadm-otn-network-topology:tp-supported-interfaces']
196 ['supported-interface-capability'][0]['if-cap-type']),
197 'org-openroadm-port-types:if-OCH-OTU4-ODU4')
198 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
199 ['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
201 'org-openroadm-otn-common-types:ODU4')
202 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
203 ['supporting-termination-point'][0]['network-ref']), 'openroadm-topology')
204 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
205 ['supporting-termination-point'][0]['node-ref']), nodeId)
206 self.assertEqual((res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
207 ['supporting-termination-point'][0]['tp-ref']), tpId)
208 self.assertTrue(client == 4)
209 self.assertTrue(network == CHECK_LIST[nodeId]['network_nb'])
210 listNode.remove(nodeId)
211 nbNbl = len(res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
212 ['odu-switching-pools'][0]['non-blocking-list'])
213 self.assertEqual(nbNbl, CHECK_LIST[nodeId]['nbl_nb'])
214 for k in range(0, nbNbl):
215 nbl = (res['network'][0]['node'][i]['org-openroadm-otn-network-topology:switching-pools']
216 ['odu-switching-pools'][0]['non-blocking-list'][k])
217 if nbl['nbl-number'] == 1:
218 if nodeId == 'SPDR-SA1-XPDR1':
219 self.assertEqual(nbl['available-interconnect-bandwidth'], 10)
220 self.assertEqual(nbl['interconnect-bandwidth-unit'], 1000000000)
221 for tp in CHECK_LIST[nodeId]['tp-checklist']:
222 self.assertIn(tp, nbl['tp-list'])
223 for tp in CHECK_LIST[nodeId]['tp-unchecklist']:
224 self.assertNotIn(tp, nbl['tp-list'])
226 self.assertEqual('SPDR-SA1-XPDR3', nodeId)
227 listNode.remove(nodeId)
228 self.assertEqual(len(listNode), 0)
230 def test_08_disconnect_SPDR_SA1(self):
231 response = test_utils.unmount_device("SPDR-SA1")
232 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
234 def test_09_getClliNetwork(self):
235 response = test_utils.get_clli_net_request()
236 self.assertEqual(response.status_code, requests.codes.ok)
237 res = response.json()
238 nbNode = len(res['network'][0]['node'])
239 self.assertEqual(nbNode, 1)
240 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
242 def test_10_getOpenRoadmNetwork(self):
243 response = test_utils.get_ordm_net_request()
244 self.assertEqual(response.status_code, requests.codes.ok)
245 res = response.json()
246 self.assertNotIn('node', res['network'][0])
248 def test_11_getNodes_OpenRoadmTopology(self):
249 response = test_utils.get_ordm_topo_request("")
250 res = response.json()
251 self.assertNotIn('node', res['network'][0])
253 def test_12_getNodes_OtnTopology(self):
254 response = test_utils.get_otn_topo_request()
255 res = response.json()
256 self.assertNotIn('node', res['network'][0])
259 if __name__ == "__main__":
260 unittest.main(verbosity=2)