3 ##############################################################################
4 # Copyright (c) 2017 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 ##############################################################################
15 from common import test_utils
18 class TransportPCEPortMappingTesting(unittest.TestCase):
24 cls.processes = test_utils.start_tpce()
25 cls.processes = test_utils.start_sims(['xpdra', 'roadma'])
28 def tearDownClass(cls):
29 for process in cls.processes:
30 test_utils.shutdown_process(process)
31 print("all processes killed")
34 print("execution of {}".format(self.id().split(".")[-1]))
37 # def test_01_restconfAPI(self):
38 # response = test_utils.get_netconf_oper_request("controller-config")
39 # self.assertEqual(response.status_code, requests.codes.ok)
40 # res = response.json()
41 # self.assertEqual(res['node'] [0] ['netconf-node-topology:connection-status'],
44 # def test_02_restconfAPI(self):
45 # url = ("{}/config/transportpce-portmapping:network/nodes/controller-config")
46 # response = requests.request(
47 # "GET", url, headers=test_utils.TYPE_APPLICATION_JSON, auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD))
48 # self.assertEqual(response.status_code, requests.codes.not_found)
49 # res = response.json()
51 # {"error-type":"application", "error-tag":"data-missing",
52 # "error-message":"Request could not be completed because the relevant data model content does not exist "},
53 # res['errors']['error'])
55 def test_01_rdm_device_connection(self):
56 response = test_utils.mount_device("ROADMA01", 'roadma')
57 self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
59 def test_02_rdm_device_connected(self):
60 response = test_utils.get_netconf_oper_request("ROADMA01")
61 self.assertEqual(response.status_code, requests.codes.ok)
64 res['node'][0]['netconf-node-topology:connection-status'],
68 def test_03_rdm_portmapping_info(self):
69 url = ("{}/config/transportpce-portmapping:network/"
70 "nodes/ROADMA01/node-info"
72 response = test_utils.get_request(url)
73 self.assertEqual(response.status_code, requests.codes.ok)
76 {u'node-info': {u'node-type': u'rdm',
77 u'node-ip-address': u'127.0.0.12',
78 u'node-clli': u'NodeA',
79 u'openroadm-version': u'1.2.1', u'node-vendor': u'vendorA',
80 u'node-model': u'2'}},
84 def test_04_rdm_portmapping_DEG1_TTP_TXRX(self):
85 url = ("{}/config/transportpce-portmapping:network/"
86 "nodes/ROADMA01/mapping/DEG1-TTP-TXRX"
88 response = test_utils.get_request(url)
89 self.assertEqual(response.status_code, requests.codes.ok)
92 {'supporting-port': 'L1', 'supporting-circuit-pack-name': '2/0',
93 'logical-connection-point': 'DEG1-TTP-TXRX', 'port-direction': 'bidirectional'},
96 def test_05_rdm_portmapping_SRG1_PP7_TXRX(self):
97 url = ("{}/config/transportpce-portmapping:network/"
98 "nodes/ROADMA01/mapping/SRG1-PP7-TXRX"
100 response = test_utils.get_request(url)
101 self.assertEqual(response.status_code, requests.codes.ok)
102 res = response.json()
104 {'supporting-port': 'C7', 'supporting-circuit-pack-name': '4/0',
105 'logical-connection-point': 'SRG1-PP7-TXRX', 'port-direction': 'bidirectional'},
108 def test_06_rdm_portmapping_SRG3_PP1_TXRX(self):
109 url = ("{}/config/transportpce-portmapping:network/"
110 "nodes/ROADMA01/mapping/SRG3-PP1-TXRX"
112 response = test_utils.get_request(url)
113 self.assertEqual(response.status_code, requests.codes.ok)
114 res = response.json()
116 {'supporting-port': 'C1', 'supporting-circuit-pack-name': '5/0',
117 'logical-connection-point': 'SRG3-PP1-TXRX', 'port-direction': 'bidirectional'},
120 def test_07_xpdr_device_connection(self):
121 response = test_utils.mount_device("XPDRA01", 'xpdra')
122 self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
124 def test_08_xpdr_device_connected(self):
125 response = test_utils.get_netconf_oper_request("XPDRA01")
126 self.assertEqual(response.status_code, requests.codes.ok)
127 res = response.json()
129 res['node'][0]['netconf-node-topology:connection-status'],
133 def test_09_xpdr_portmapping_info(self):
134 url = ("{}/config/transportpce-portmapping:network/"
135 "nodes/XPDRA01/node-info"
137 response = test_utils.get_request(url)
138 self.assertEqual(response.status_code, requests.codes.ok)
139 res = response.json()
141 {u'node-info': {u'node-type': u'xpdr',
142 u'node-ip-address': u'127.0.0.10',
143 u'node-clli': u'NodeA',
144 u'openroadm-version': u'1.2.1', u'node-vendor': u'vendorA',
145 u'node-model': u'1'}},
149 def test_10_xpdr_portmapping_NETWORK1(self):
150 url = ("{}/config/transportpce-portmapping:network/"
151 "nodes/XPDRA01/mapping/XPDR1-NETWORK1"
153 response = test_utils.get_request(url)
154 self.assertEqual(response.status_code, requests.codes.ok)
155 res = response.json()
157 {'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/1-PLUG-NET',
158 'logical-connection-point': 'XPDR1-NETWORK1', 'port-direction': 'bidirectional',
159 'connection-map-lcp': 'XPDR1-CLIENT1', 'port-qual': 'xpdr-network',
160 'lcp-hash-val': 'OSvMgUyP+mE='},
163 def test_11_xpdr_portmapping_NETWORK2(self):
164 url = ("{}/config/transportpce-portmapping:network/"
165 "nodes/XPDRA01/mapping/XPDR1-NETWORK2"
167 response = test_utils.get_request(url)
168 self.assertEqual(response.status_code, requests.codes.ok)
169 res = response.json()
171 {'supporting-port': '1', 'supporting-circuit-pack-name': '1/0/2-PLUG-NET',
172 'logical-connection-point': 'XPDR1-NETWORK2', 'port-direction': 'bidirectional',
173 'connection-map-lcp': 'XPDR1-CLIENT3', 'port-qual': 'xpdr-network',
174 'lcp-hash-val': 'OSvMgUyP+mI='},
177 def test_12_xpdr_portmapping_CLIENT1(self):
178 url = ("{}/config/transportpce-portmapping:network/"
179 "nodes/XPDRA01/mapping/XPDR1-CLIENT1"
181 response = test_utils.get_request(url)
182 self.assertEqual(response.status_code, requests.codes.ok)
183 res = response.json()
185 {'supporting-port': 'C1',
186 'supporting-circuit-pack-name': '1/0/C1-PLUG-CLIENT',
187 'logical-connection-point': 'XPDR1-CLIENT1', 'port-direction': 'bidirectional',
188 'connection-map-lcp': 'XPDR1-NETWORK1', 'port-qual': 'xpdr-client',
189 'lcp-hash-val': 'AO9UFkY/TLYw'},
192 def test_13_xpdr_portmapping_CLIENT2(self):
193 url = ("{}/config/transportpce-portmapping:network/"
194 "nodes/XPDRA01/mapping/XPDR1-CLIENT2"
196 response = test_utils.get_request(url)
197 self.assertEqual(response.status_code, requests.codes.ok)
198 res = response.json()
200 {'supporting-port': 'C2',
201 'supporting-circuit-pack-name': '1/0/C2-PLUG-CLIENT',
202 'logical-connection-point': 'XPDR1-CLIENT2', 'port-direction': 'bidirectional',
203 'port-qual': 'xpdr-client',
204 'lcp-hash-val': 'AO9UFkY/TLYz'},
207 def test_14_xpdr_portmapping_CLIENT3(self):
208 url = ("{}/config/transportpce-portmapping:network/"
209 "nodes/XPDRA01/mapping/XPDR1-CLIENT3"
211 response = test_utils.get_request(url)
212 self.assertEqual(response.status_code, requests.codes.ok)
213 res = response.json()
215 {'supporting-port': 'C3',
216 'supporting-circuit-pack-name': '1/0/C3-PLUG-CLIENT',
217 'logical-connection-point': 'XPDR1-CLIENT3',
218 'connection-map-lcp': 'XPDR1-NETWORK2', 'port-direction': 'bidirectional',
219 'port-qual': 'xpdr-client', 'lcp-hash-val': 'AO9UFkY/TLYy'},
222 def test_15_xpdr_portmapping_CLIENT4(self):
223 url = ("{}/config/transportpce-portmapping:network/"
224 "nodes/XPDRA01/mapping/XPDR1-CLIENT4"
226 response = test_utils.get_request(url)
227 self.assertEqual(response.status_code, requests.codes.ok)
228 res = response.json()
230 {'supporting-port': 'C4',
231 'supporting-circuit-pack-name': '1/0/C4-PLUG-CLIENT',
232 'logical-connection-point': 'XPDR1-CLIENT4', 'port-direction': 'bidirectional',
233 'port-qual': 'xpdr-client', 'lcp-hash-val': 'AO9UFkY/TLY1'},
236 def test_16_xpdr_device_disconnection(self):
237 response = test_utils.unmount_device("XPDRA01")
238 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
240 def test_17_xpdr_device_disconnected(self):
241 response = test_utils.get_netconf_oper_request("XPDRA01")
242 self.assertEqual(response.status_code, requests.codes.not_found)
243 res = response.json()
245 {"error-type": "application", "error-tag": "data-missing",
246 "error-message": "Request could not be completed because the relevant data model content does not exist"},
247 res['errors']['error'])
249 def test_18_xpdr_device_not_connected(self):
250 url = ("{}/config/transportpce-portmapping:network/nodes/XPDRA01")
251 response = test_utils.get_request(url)
252 self.assertEqual(response.status_code, requests.codes.not_found)
253 res = response.json()
255 {"error-type": "application", "error-tag": "data-missing",
256 "error-message": "Request could not be completed because the relevant data model content does not exist"},
257 res['errors']['error'])
259 def test_19_rdm_device_disconnection(self):
260 response = test_utils.unmount_device("ROADMA01")
261 self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
263 def test_20_rdm_device_disconnected(self):
264 response = test_utils.get_netconf_oper_request("ROADMA01")
265 self.assertEqual(response.status_code, requests.codes.not_found)
266 res = response.json()
268 {"error-type": "application", "error-tag": "data-missing",
269 "error-message": "Request could not be completed because the relevant data model content does not exist"},
270 res['errors']['error'])
272 def test_21_rdm_device_not_connected(self):
273 url = ("{}/config/transportpce-portmapping:network/nodes/ROADMA01")
274 response = test_utils.get_request(url)
275 self.assertEqual(response.status_code, requests.codes.not_found)
276 res = response.json()
278 {"error-type": "application", "error-tag": "data-missing",
279 "error-message": "Request could not be completed because the relevant data model content does not exist"},
280 res['errors']['error'])
283 if __name__ == "__main__":
284 unittest.main(verbosity=2)