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 # pylint: disable=wrong-import-order
21 sys.path.append('transportpce_tests/common/')
22 # pylint: disable=wrong-import-position
23 # pylint: disable=import-error
24 import test_utils # nopep8
27 class TransportPCEtesting(unittest.TestCase):
30 NODE_VERSION = '2.2.1'
34 cls.processes = test_utils.start_tpce()
35 cls.processes = test_utils.start_sims([('spdra', cls.NODE_VERSION)])
38 def tearDownClass(cls):
39 # pylint: disable=not-an-iterable
40 for process in cls.processes:
41 test_utils.shutdown_process(process)
42 print("all processes killed")
47 def test_01_connect_SPDR_SA1(self):
48 response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
49 self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
52 response = test_utils.get_netconf_oper_request("SPDR-SA1")
53 self.assertEqual(response.status_code, requests.codes.ok)
56 res['node'][0]['netconf-node-topology:connection-status'],
59 def test_02_getClliNetwork(self):
60 response = test_utils.get_clli_net_request()
61 self.assertEqual(response.status_code, requests.codes.ok)
64 self.assertEqual(res['network'][0]['node'][0]['node-id'], 'NodeSA')
65 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
67 def test_03_getOpenRoadmNetwork(self):
68 response = test_utils.get_ordm_net_request()
69 self.assertEqual(response.status_code, requests.codes.ok)
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')
79 def test_04_getLinks_OpenroadmTopology(self):
80 response = test_utils.get_ordm_topo_request("")
81 self.assertEqual(response.status_code, requests.codes.ok)
83 # Tests related to links
84 self.assertNotIn('ietf-network-topology:link', res['network'][0])
86 def test_05_getNodes_OpenRoadmTopology(self):
87 # pylint: disable=redundant-unittest-assert
88 response = test_utils.get_ordm_topo_request("")
90 # Tests related to nodes
91 self.assertEqual(response.status_code, requests.codes.ok)
92 self.assertIn('node', res['network'][0])
93 if 'node' in res['network'][0]:
94 nbNode = len(res['network'][0]['node'])
95 self.assertEqual(nbNode, 3)
96 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
97 for i in range(0, nbNode):
98 nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
99 nodeId = res['network'][0]['node'][i]['node-id']
100 if nodeId not in listNode:
101 self.assertFalse(True)
103 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
104 res['network'][0]['node'][i]['supporting-node'])
105 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
106 res['network'][0]['node'][i]['supporting-node'])
107 self.assertEqual(nodeType, 'XPONDER')
108 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
111 for j in range(0, nbTps):
112 tpType = (res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
113 ['org-openroadm-common-network:tp-type'])
114 if tpType == 'XPONDER-CLIENT':
116 elif tpType == 'XPONDER-NETWORK':
118 self.assertTrue(client == 0)
119 if nodeId in ('SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR3'):
120 self.assertTrue(network == 1)
122 # elif nodeId == 'SPDR-SA1-XPDR2':
123 self.assertTrue(network == 4)
124 listNode.remove(nodeId)
125 self.assertEqual(len(listNode), 0)
127 def test_06_getLinks_OtnTopology(self):
128 response = test_utils.get_otn_topo_request()
129 self.assertEqual(response.status_code, requests.codes.ok)
130 res = response.json()
131 self.assertNotIn('ietf-network-topology:link', res['network'][0])
133 def test_07_getNodes_OtnTopology(self):
134 # pylint: disable=redundant-unittest-assert
135 response = test_utils.get_otn_topo_request()
136 res = response.json()
137 self.assertEqual(response.status_code, requests.codes.ok)
138 self.assertEqual(len(res['network'][0]['node']), 3)
139 listNode = ['SPDR-SA1-XPDR1', 'SPDR-SA1-XPDR2', 'SPDR-SA1-XPDR3']
142 'node-type': 'MUXPDR',
144 'port-types': ['org-openroadm-port-types:if-10GE-ODU2', 'org-openroadm-port-types:if-10GE-ODU2e',
145 'org-openroadm-port-types:if-10GE'],
146 'otn-common-types': 'org-openroadm-otn-common-types:ODU2e',
149 'tp-checklist': ['XPDR1-NETWORK1', 'XPDR1-CLIENT1'],
150 'tp-unchecklist': ['XPDR1-CLIENT2']
153 'node-type': 'SWITCH',
155 'port-types': 'org-openroadm-port-types:if-100GE-ODU4',
156 'otn-common-types': 'org-openroadm-otn-common-types:ODU4',
159 'tp-checklist': ['XPDR2-NETWORK4', 'XPDR2-CLIENT1', 'XPDR2-NETWORK3', 'XPDR2-CLIENT4',
160 'XPDR2-CLIENT2', 'XPDR2-NETWORK2', 'XPDR2-CLIENT3', 'XPDR2-NETWORK1'],
164 for val in res['network'][0]['node']:
165 nodeId = val['node-id']
166 if nodeId in CHECK_LIST:
167 self.assertEqual(val['org-openroadm-common-network:node-type'], CHECK_LIST[nodeId]['node-type'])
168 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'SPDR-SA1'},
169 val['supporting-node'])
170 self.assertIn({'network-ref': 'openroadm-topology', 'node-ref': nodeId},
171 val['supporting-node'])
172 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeSA'},
173 val['supporting-node'])
174 self.assertEqual(val['org-openroadm-otn-network-topology:xpdr-attributes']['xpdr-number'],
175 CHECK_LIST[nodeId]['xpdr-number'])
178 for val2 in val['ietf-network-topology:termination-point']:
179 tpType = val2['org-openroadm-common-network:tp-type']
181 if tpType == 'XPONDER-CLIENT':
183 # pylint: disable=consider-using-f-string
184 print("tpId = {}".format(tpId))
185 print("tp= {}".format(val2))
186 # pylint: disable=line-too-long
187 for val3 in val2['org-openroadm-otn-network-topology:tp-supported-interfaces']['supported-interface-capability']:
188 self.assertIn((val3['if-cap-type']), CHECK_LIST[nodeId]['port-types'])
189 elif tpType == 'XPONDER-NETWORK':
191 self.assertEqual((val2['org-openroadm-otn-network-topology:tp-supported-interfaces']
192 ['supported-interface-capability'][0]['if-cap-type']),
193 'org-openroadm-port-types:if-OCH-OTU4-ODU4')
194 self.assertEqual((val2['org-openroadm-otn-network-topology:xpdr-tp-port-connection-attributes']
196 'org-openroadm-otn-common-types:ODU4')
197 self.assertEqual((val2['supporting-termination-point'][0]['network-ref']), 'openroadm-topology')
198 self.assertEqual((val2['supporting-termination-point'][0]['node-ref']), nodeId)
199 self.assertEqual((val2['supporting-termination-point'][0]['tp-ref']), tpId)
200 self.assertTrue(client == 4)
201 self.assertTrue(network == CHECK_LIST[nodeId]['network_nb'])
202 listNode.remove(nodeId)
204 len(val['org-openroadm-otn-network-topology:switching-pools']
205 ['odu-switching-pools'][0]['non-blocking-list']),
206 CHECK_LIST[nodeId]['nbl_nb'])
207 # pylint: disable=line-too-long
208 for nbl in val['org-openroadm-otn-network-topology:switching-pools']['odu-switching-pools'][0]['non-blocking-list']:
209 if nbl['nbl-number'] == 1:
210 if nodeId == 'SPDR-SA1-XPDR1':
211 self.assertEqual(nbl['available-interconnect-bandwidth'], 10)
212 self.assertEqual(nbl['interconnect-bandwidth-unit'], 1000000000)
213 for tp in CHECK_LIST[nodeId]['tp-checklist']:
214 self.assertIn(tp, nbl['tp-list'])
215 for tp in CHECK_LIST[nodeId]['tp-unchecklist']:
216 self.assertNotIn(tp, nbl['tp-list'])
218 self.assertEqual('SPDR-SA1-XPDR3', nodeId)
219 listNode.remove(nodeId)
220 self.assertEqual(len(listNode), 0)
222 def test_08_disconnect_SPDR_SA1(self):
223 response = test_utils.unmount_device("SPDR-SA1")
224 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
226 def test_09_getClliNetwork(self):
227 response = test_utils.get_clli_net_request()
228 self.assertEqual(response.status_code, requests.codes.ok)
229 res = response.json()
230 nbNode = len(res['network'][0]['node'])
231 self.assertEqual(nbNode, 1)
232 self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeSA')
234 def test_10_getOpenRoadmNetwork(self):
235 response = test_utils.get_ordm_net_request()
236 self.assertEqual(response.status_code, requests.codes.ok)
237 res = response.json()
238 self.assertNotIn('node', res['network'][0])
240 def test_11_getNodes_OpenRoadmTopology(self):
241 response = test_utils.get_ordm_topo_request("")
242 res = response.json()
243 self.assertNotIn('node', res['network'][0])
245 def test_12_getNodes_OtnTopology(self):
246 response = test_utils.get_otn_topo_request()
247 res = response.json()
248 self.assertNotIn('node', res['network'][0])
251 if __name__ == "__main__":
252 unittest.main(verbosity=2)