fix few bugs and unused issues in functional tests
[transportpce.git] / tests / transportpce_tests / 2.2.1 / test_topology.py
1 #!/usr/bin/env python
2
3 ##############################################################################
4 # Copyright (c) 2017 Orange, Inc. and others.  All rights reserved.
5 #
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 ##############################################################################
11
12 # pylint: disable=no-member
13 # pylint: disable=too-many-public-methods
14
15 import unittest
16 import time
17 import logging
18 import requests
19 from common import test_utils
20
21
22 class TransportPCEtesting(unittest.TestCase):
23
24     processes = None
25
26     @classmethod
27     def setUpClass(cls):
28         cls.processes = test_utils.start_tpce()
29         cls.processes = test_utils.start_sims(['xpdra', 'roadma', 'roadmb', 'roadmc'])
30
31     @classmethod
32     def tearDownClass(cls):
33         for process in cls.processes:
34             test_utils.shutdown_process(process)
35         print("all processes killed")
36
37     def setUp(self):
38         time.sleep(5)
39
40     def test_01_connect_ROADM_A1(self):
41         response = test_utils.mount_device("ROADM-A1", 'roadma')
42         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
43
44     def test_02_getClliNetwork(self):
45         response = test_utils.get_clli_net_request()
46         self.assertEqual(response.status_code, requests.codes.ok)
47         res = response.json()
48         logging.info(res)
49         self.assertEqual(res['network'][0]['node'][0]['node-id'], 'NodeA')
50         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeA')
51
52     def test_03_getOpenRoadmNetwork(self):
53         response = test_utils.get_ordm_net_request()
54         self.assertEqual(response.status_code, requests.codes.ok)
55         res = response.json()
56         self.assertEqual(res['network'][0]['node'][0]['node-id'], 'ROADM-A1')
57         self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['network-ref'], 'clli-network')
58         self.assertEqual(res['network'][0]['node'][0]['supporting-node'][0]['node-ref'], 'NodeA')
59         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-common-network:node-type'], 'ROADM')
60         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-network:model'], 'model2')
61
62     def test_04_getLinks_OpenroadmTopology(self):
63         response = test_utils.get_ordm_topo_request("")
64         self.assertEqual(response.status_code, requests.codes.ok)
65         res = response.json()
66         # Tests related to links
67         nbLink = len(res['network'][0]['ietf-network-topology:link'])
68         self.assertEqual(nbLink, 10)
69         expressLink = ['ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
70                        'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX']
71         addLink = ['ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX',
72                    'ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
73                    'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX',
74                    'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX']
75         dropLink = ['ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX',
76                     'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX',
77                     'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX',
78                     'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX']
79         for i in range(0, nbLink):
80             linkId = res['network'][0]['ietf-network-topology:link'][i]['link-id']
81             if (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'EXPRESS-LINK'):
82                 find = linkId in expressLink
83                 self.assertEqual(find, True)
84                 expressLink.remove(linkId)
85             elif (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'ADD-LINK'):
86                 find = linkId in addLink
87                 self.assertEqual(find, True)
88                 addLink.remove(linkId)
89             elif (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'DROP-LINK'):
90                 find = linkId in dropLink
91                 self.assertEqual(find, True)
92                 dropLink.remove(linkId)
93             else:
94                 self.assertFalse(True)
95         self.assertEqual(len(expressLink), 0)
96         self.assertEqual(len(addLink), 0)
97         self.assertEqual(len(dropLink), 0)
98
99     def test_05_getNodes_OpenRoadmTopology(self):
100         response = test_utils.get_ordm_topo_request("")
101         res = response.json()
102         # Tests related to nodes
103         self.assertEqual(response.status_code, requests.codes.ok)
104         nbNode = len(res['network'][0]['node'])
105         self.assertEqual(nbNode, 4)
106         listNode = ['ROADM-A1-SRG1', 'ROADM-A1-SRG3', 'ROADM-A1-DEG1', 'ROADM-A1-DEG2']
107         for i in range(0, nbNode):
108             self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
109                           res['network'][0]['node'][i]['supporting-node'])
110             nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
111             nodeId = res['network'][0]['node'][i]['node-id']
112             if(nodeId == 'ROADM-A1-SRG1'):
113                 # Test related to SRG1
114                 self.assertEqual(nodeType, 'SRG')
115                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
116                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
117                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
118                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
119                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
120                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeA'},
121                               res['network'][0]['node'][i]['supporting-node'])
122                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
123                               res['network'][0]['node'][i]['supporting-node'])
124                 listNode.remove(nodeId)
125             elif(nodeId == 'ROADM-A1-SRG3'):
126                 # Test related to SRG1
127                 self.assertEqual(nodeType, 'SRG')
128                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
129                 self.assertIn({'tp-id': 'SRG3-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
130                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
131                 self.assertIn({'tp-id': 'SRG3-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
132                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
133                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeA'},
134                               res['network'][0]['node'][i]['supporting-node'])
135                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
136                               res['network'][0]['node'][i]['supporting-node'])
137                 listNode.remove(nodeId)
138             elif(nodeId == 'ROADM-A1-DEG1'):
139                 # Test related to DEG1
140                 self.assertEqual(nodeType, 'DEGREE')
141                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
142                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
143                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
144                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
145                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeA'},
146                               res['network'][0]['node'][i]['supporting-node'])
147                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
148                               res['network'][0]['node'][i]['supporting-node'])
149                 listNode.remove(nodeId)
150             elif(nodeId == 'ROADM-A1-DEG2'):
151                 # Test related to DEG2
152                 self.assertEqual(nodeType, 'DEGREE')
153                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
154                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
155                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
156                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
157                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeA'},
158                               res['network'][0]['node'][i]['supporting-node'])
159                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
160                               res['network'][0]['node'][i]['supporting-node'])
161                 listNode.remove(nodeId)
162             else:
163                 self.assertFalse(True)
164         self.assertEqual(len(listNode), 0)
165
166     def test_06_connect_XPDRA(self):
167         response = test_utils.mount_device("XPDR-A1", 'xpdra')
168         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
169
170     def test_07_getClliNetwork(self):
171         response = test_utils.get_clli_net_request()
172         self.assertEqual(response.status_code, requests.codes.ok)
173         res = response.json()
174         self.assertEqual(res['network'][0]['node'][0]['node-id'], 'NodeA')
175         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeA')
176
177     def test_08_getOpenRoadmNetwork(self):
178         response = test_utils.get_ordm_net_request()
179         self.assertEqual(response.status_code, requests.codes.ok)
180         res = response.json()
181         nbNode = len(res['network'][0]['node'])
182         self.assertEqual(nbNode, 2)
183         for i in range(0, nbNode):
184             self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['network-ref'], 'clli-network')
185             self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['node-ref'], 'NodeA')
186             nodeId = res['network'][0]['node'][i]['node-id']
187             if(nodeId == 'XPDR-A1'):
188                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'XPONDER')
189                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-network:model'], 'model2')
190             elif(nodeId == 'ROADM-A1'):
191                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'ROADM')
192                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-network:model'], 'model2')
193             else:
194                 self.assertFalse(True)
195
196     def test_09_getNodes_OpenRoadmTopology(self):
197         response = test_utils.get_ordm_topo_request("")
198         res = response.json()
199         # Tests related to nodes
200         self.assertEqual(response.status_code, requests.codes.ok)
201         nbNode = len(res['network'][0]['node'])
202         self.assertEqual(nbNode, 5)
203         listNode = ['XPDR-A1-XPDR1', 'ROADM-A1-SRG1', 'ROADM-A1-SRG3', 'ROADM-A1-DEG1', 'ROADM-A1-DEG2']
204         for i in range(0, nbNode):
205             nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
206             nodeId = res['network'][0]['node'][i]['node-id']
207             # Tests related to XPDRA nodes
208             if(nodeId == 'XPDR-A1-XPDR1'):
209                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'XPDR-A1'},
210                               res['network'][0]['node'][i]['supporting-node'])
211                 self.assertIn({'network-ref': 'clli-network', 'node-ref': 'NodeA'},
212                               res['network'][0]['node'][i]['supporting-node'])
213                 self.assertEqual(nodeType, 'XPONDER')
214                 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
215                 client = 0
216                 network = 0
217                 for j in range(0, nbTps):
218                     tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
219                     tpId = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
220                     if (tpType == 'XPONDER-CLIENT'):
221                         client += 1
222                     elif (tpType == 'XPONDER-NETWORK'):
223                         network += 1
224                     if (tpId == 'XPDR1-NETWORK2'):
225                         self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
226                                          ['transportpce-topology:associated-connection-map-port'], 'XPDR1-CLIENT2')
227                     if (tpId == 'XPDR1-CLIENT2'):
228                         self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
229                                          ['transportpce-topology:associated-connection-map-port'], 'XPDR1-NETWORK2')
230
231                 self.assertTrue(client == 2)
232                 self.assertTrue(network == 2)
233                 listNode.remove(nodeId)
234             elif(nodeId == 'ROADM-A1-SRG1'):
235                 # Test related to SRG1
236                 self.assertEqual(nodeType, 'SRG')
237                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
238                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
239                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
240                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
241                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
242                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
243                               res['network'][0]['node'][i]['supporting-node'])
244                 listNode.remove(nodeId)
245             elif(nodeId == 'ROADM-A1-SRG3'):
246                 # Test related to SRG1
247                 self.assertEqual(nodeType, 'SRG')
248                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
249                 self.assertIn({'tp-id': 'SRG3-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
250                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
251                 self.assertIn({'tp-id': 'SRG3-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
252                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
253                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
254                               res['network'][0]['node'][i]['supporting-node'])
255                 listNode.remove(nodeId)
256             elif(nodeId == 'ROADM-A1-DEG1'):
257                 # Test related to DEG1
258                 self.assertEqual(nodeType, 'DEGREE')
259                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
260                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
261                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
262                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
263                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
264                               res['network'][0]['node'][i]['supporting-node'])
265                 listNode.remove(nodeId)
266             elif(nodeId == 'ROADM-A1-DEG2'):
267                 # Test related to DEG2
268                 self.assertEqual(nodeType, 'DEGREE')
269                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
270                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
271                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
272                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
273                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
274                               res['network'][0]['node'][i]['supporting-node'])
275                 listNode.remove(nodeId)
276             else:
277                 self.assertFalse(True)
278         self.assertEqual(len(listNode), 0)
279
280     # Connect the tail XPDRA to ROADMA and vice versa
281     def test_10_connect_tail_xpdr_rdm(self):
282         # Connect the tail: XPDRA to ROADMA
283         response = test_utils.connect_xpdr_to_rdm_request("XPDR-A1", "1", "1",
284                                                           "ROADM-A1", "1", "SRG1-PP1-TXRX")
285         self.assertEqual(response.status_code, requests.codes.ok)
286
287     def test_11_connect_tail_rdm_xpdr(self):
288         response = test_utils.connect_rdm_to_xpdr_request("XPDR-A1", "1", "1",
289                                                           "ROADM-A1", "1", "SRG1-PP1-TXRX")
290         self.assertEqual(response.status_code, requests.codes.ok)
291
292     def test_12_getLinks_OpenRoadmTopology(self):
293         response = test_utils.get_ordm_topo_request("")
294         self.assertEqual(response.status_code, requests.codes.ok)
295         res = response.json()
296         # Tests related to links
297         nbLink = len(res['network'][0]['ietf-network-topology:link'])
298         self.assertEqual(nbLink, 12)
299         expressLink = ['ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
300                        'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX']
301         addLink = ['ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
302                    'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX']
303         dropLink = ['ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX',
304                     'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX']
305         XPDR_IN = ['ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1']
306         XPDR_OUT = ['XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX']
307         for i in range(0, nbLink):
308             nodeType = res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type']
309             linkId = res['network'][0]['ietf-network-topology:link'][i]['link-id']
310             if(nodeType == 'EXPRESS-LINK'):
311                 find = linkId in expressLink
312                 self.assertEqual(find, True)
313                 expressLink.remove(linkId)
314             elif(nodeType == 'ADD-LINK'):
315                 find = linkId in addLink
316                 self.assertEqual(find, True)
317                 addLink.remove(linkId)
318             elif(nodeType == 'DROP-LINK'):
319                 find = linkId in dropLink
320                 self.assertEqual(find, True)
321                 dropLink.remove(linkId)
322             elif(nodeType == 'XPONDER-INPUT'):
323                 find = linkId in XPDR_IN
324                 self.assertEqual(find, True)
325                 XPDR_IN.remove(linkId)
326             elif(nodeType == 'XPONDER-OUTPUT'):
327                 find = linkId in XPDR_OUT
328                 self.assertEqual(find, True)
329                 XPDR_OUT.remove(linkId)
330             else:
331                 self.assertFalse(True)
332         self.assertEqual(len(expressLink), 0)
333         self.assertEqual(len(addLink), 0)
334         self.assertEqual(len(dropLink), 0)
335         self.assertEqual(len(XPDR_IN), 0)
336         self.assertEqual(len(XPDR_OUT), 0)
337
338     def test_13_connect_ROADMC(self):
339         response = test_utils.mount_device("ROADM-C1", 'roadmc')
340         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
341
342     def test_14_omsAttributes_ROADMA_ROADMC(self):
343         # Config ROADMA-ROADMC oms-attributes
344         data = {"span": {
345             "auto-spanloss": "true",
346             "engineered-spanloss": 12.2,
347             "link-concatenation": [{
348                 "SRLG-Id": 0,
349                 "fiber-type": "smf",
350                 "SRLG-length": 100000,
351                 "pmd": 0.5}]}}
352         response = test_utils.add_oms_attr_request("ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX", data)
353         self.assertEqual(response.status_code, requests.codes.created)
354
355     def test_15_omsAttributes_ROADMC_ROADMA(self):
356         # Config ROADM-C1-ROADM-A1 oms-attributes
357         data = {"span": {
358             "auto-spanloss": "true",
359             "engineered-spanloss": 12.2,
360             "link-concatenation": [{
361                 "SRLG-Id": 0,
362                 "fiber-type": "smf",
363                 "SRLG-length": 100000,
364                 "pmd": 0.5}]}}
365
366         response = test_utils.add_oms_attr_request("ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX", data)
367         self.assertEqual(response.status_code, requests.codes.created)
368
369     def test_16_getClliNetwork(self):
370         response = test_utils.get_clli_net_request()
371         self.assertEqual(response.status_code, requests.codes.ok)
372         res = response.json()
373         nbNode = len(res['network'][0]['node'])
374         listNode = ['NodeA', 'NodeC']
375         for i in range(0, nbNode):
376             nodeId = res['network'][0]['node'][i]['node-id']
377             find = nodeId in listNode
378             self.assertEqual(find, True)
379             if(nodeId == 'NodeA'):
380                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeA')
381             else:
382                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeC')
383             listNode.remove(nodeId)
384         self.assertEqual(len(listNode), 0)
385
386     def test_17_getOpenRoadmNetwork(self):
387         response = test_utils.get_ordm_net_request()
388         self.assertEqual(response.status_code, requests.codes.ok)
389         res = response.json()
390         nbNode = len(res['network'][0]['node'])
391         self.assertEqual(nbNode, 3)
392         listNode = ['XPDR-A1', 'ROADM-A1', 'ROADM-C1']
393         for i in range(0, nbNode):
394             self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['network-ref'], 'clli-network')
395             nodeId = res['network'][0]['node'][i]['node-id']
396             if(nodeId == 'XPDR-A1'):
397                 self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['node-ref'], 'NodeA')
398                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'XPONDER')
399                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-network:model'], 'model2')
400                 listNode.remove(nodeId)
401             elif(nodeId == 'ROADM-A1'):
402                 self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['node-ref'], 'NodeA')
403                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'ROADM')
404                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-network:model'], 'model2')
405                 listNode.remove(nodeId)
406             elif(nodeId == 'ROADM-C1'):
407                 self.assertEqual(res['network'][0]['node'][i]['supporting-node'][0]['node-ref'], 'NodeC')
408                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'ROADM')
409                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-network:model'], 'model2')
410                 listNode.remove(nodeId)
411             else:
412                 self.assertFalse(True)
413         self.assertEqual(len(listNode), 0)
414
415     def test_18_getROADMLinkOpenRoadmTopology(self):
416         response = test_utils.get_ordm_topo_request("")
417         self.assertEqual(response.status_code, requests.codes.ok)
418         res = response.json()
419         # Tests related to links
420         nbLink = len(res['network'][0]['ietf-network-topology:link'])
421         self.assertEqual(nbLink, 20)
422         expressLink = ['ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX', 'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX',
423                        'ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX', 'ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX']
424         addLink = ['ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
425                    'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
426                    'ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX', 'ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX']
427         dropLink = ['ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX',
428                     'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX',
429                     'ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX', 'ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX']
430         R2RLink = ['ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX',
431                    'ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX']
432         XPDR_IN = ['ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1']
433         XPDR_OUT = ['XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX']
434         for i in range(0, nbLink):
435             nodeType = res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type']
436             linkId = res['network'][0]['ietf-network-topology:link'][i]['link-id']
437             if(nodeType == 'EXPRESS-LINK'):
438                 find = linkId in expressLink
439                 self.assertEqual(find, True)
440                 expressLink.remove(linkId)
441             elif(nodeType == 'ADD-LINK'):
442                 find = linkId in addLink
443                 self.assertEqual(find, True)
444                 addLink.remove(linkId)
445             elif(nodeType == 'DROP-LINK'):
446                 find = linkId in dropLink
447                 self.assertEqual(find, True)
448                 dropLink.remove(linkId)
449             elif(nodeType == 'ROADM-TO-ROADM'):
450                 find = linkId in R2RLink
451                 self.assertEqual(find, True)
452                 R2RLink.remove(linkId)
453             elif(nodeType == 'XPONDER-INPUT'):
454                 find = linkId in XPDR_IN
455                 self.assertEqual(find, True)
456                 XPDR_IN.remove(linkId)
457             elif(nodeType == 'XPONDER-OUTPUT'):
458                 find = linkId in XPDR_OUT
459                 self.assertEqual(find, True)
460                 XPDR_OUT.remove(linkId)
461             else:
462                 self.assertFalse(True)
463         self.assertEqual(len(expressLink), 0)
464         self.assertEqual(len(addLink), 0)
465         self.assertEqual(len(dropLink), 0)
466         self.assertEqual(len(R2RLink), 0)
467         self.assertEqual(len(XPDR_IN), 0)
468         self.assertEqual(len(XPDR_OUT), 0)
469
470     def test_19_getLinkOmsAttributesOpenRoadmTopology(self):
471         response = test_utils.get_ordm_topo_request("")
472         self.assertEqual(response.status_code, requests.codes.ok)
473         res = response.json()
474         # Tests related to links
475         nbLink = len(res['network'][0]['ietf-network-topology:link'])
476         self.assertEqual(nbLink, 20)
477         R2RLink = ['ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX',
478                    'ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX']
479         for i in range(0, nbLink):
480             link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
481             if(link_id in R2RLink):
482                 find = False
483                 spanLoss = res['network'][0]['ietf-network-topology:link'][i][
484                     'org-openroadm-network-topology:OMS-attributes']['span']["engineered-spanloss"]
485                 length = res['network'][0]['ietf-network-topology:link'][i][
486                     'org-openroadm-network-topology:OMS-attributes']['span']['link-concatenation'][0]['SRLG-length']
487                 if((spanLoss != None) & (length != None)):
488                     find = True
489                 self.assertTrue(find)
490                 R2RLink.remove(link_id)
491         self.assertEqual(len(R2RLink), 0)
492
493     def test_20_getNodes_OpenRoadmTopology(self):
494         response = test_utils.get_ordm_topo_request("")
495         res = response.json()
496         # Tests related to nodes
497         self.assertEqual(response.status_code, requests.codes.ok)
498         nbNode = len(res['network'][0]['node'])
499         self.assertEqual(nbNode, 8)
500         listNode = ['XPDR-A1-XPDR1',
501                     'ROADM-A1-SRG1', 'ROADM-A1-SRG3', 'ROADM-A1-DEG1', 'ROADM-A1-DEG2',
502                     'ROADM-C1-SRG1', 'ROADM-C1-DEG1', 'ROADM-C1-DEG2']
503         # ************************Tests related to XPDRA nodes
504         for i in range(0, nbNode):
505             nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
506             nodeId = res['network'][0]['node'][i]['node-id']
507             if(nodeId == 'XPDR-A1-XPDR1'):
508                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'XPDR-A1'},
509                               res['network'][0]['node'][i]['supporting-node'])
510                 self.assertEqual(nodeType, 'XPONDER')
511                 nbTps = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
512                 self.assertTrue(nbTps >= 4)
513                 client = 0
514                 network = 0
515                 for j in range(0, nbTps):
516                     tpType = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['org-openroadm-common-network:tp-type']
517                     if (tpType == 'XPONDER-CLIENT'):
518                         client += 1
519                     elif (tpType == 'XPONDER-NETWORK'):
520                         network += 1
521                 self.assertTrue(client == 2)
522                 self.assertTrue(network == 2)
523                 listNode.remove(nodeId)
524             elif(nodeId == 'ROADM-A1-SRG1'):
525                 # Test related to SRG1
526                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
527                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
528                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
529                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
530                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
531                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
532                               res['network'][0]['node'][i]['supporting-node'])
533                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'SRG')
534                 listNode.remove(nodeId)
535             elif(nodeId == 'ROADM-A1-SRG3'):
536                 # Test related to SRG1
537                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
538                 self.assertIn({'tp-id': 'SRG3-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
539                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
540                 self.assertIn({'tp-id': 'SRG3-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
541                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
542                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
543                               res['network'][0]['node'][i]['supporting-node'])
544                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'SRG')
545                 listNode.remove(nodeId)
546             elif(nodeId == 'ROADM-A1-DEG1'):
547                 # Test related to DEG1
548                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
549                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
550                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
551                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
552                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
553                               res['network'][0]['node'][i]['supporting-node'])
554                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'DEGREE')
555                 listNode.remove(nodeId)
556             elif(nodeId == 'ROADM-A1-DEG2'):
557                 # Test related to DEG2
558                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
559                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
560                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
561                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
562                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
563                               res['network'][0]['node'][i]['supporting-node'])
564                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'DEGREE')
565                 listNode.remove(nodeId)
566             elif(nodeId == 'ROADM-C1-SRG1'):
567                 # Test related to SRG1
568                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
569                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
570                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
571                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
572                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
573                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-C1'},
574                               res['network'][0]['node'][i]['supporting-node'])
575                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'SRG')
576                 listNode.remove(nodeId)
577             elif(nodeId == 'ROADM-C1-DEG1'):
578                 # Test related to DEG1
579                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
580                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
581                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
582                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
583                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-C1'},
584                               res['network'][0]['node'][i]['supporting-node'])
585                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'DEGREE')
586                 listNode.remove(nodeId)
587             elif(nodeId == 'ROADM-C1-DEG2'):
588                 # Test related to DEG1
589                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
590                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
591                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
592                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
593                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-C1'},
594                               res['network'][0]['node'][i]['supporting-node'])
595                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-common-network:node-type'], 'DEGREE')
596                 listNode.remove(nodeId)
597             else:
598                 self.assertFalse(True)
599         self.assertEqual(len(listNode), 0)
600
601     def test_21_connect_ROADMB(self):
602         response = test_utils.mount_device("ROADM-B1", 'roadmb')
603         self.assertEqual(response.status_code, requests.codes.created, test_utils.CODE_SHOULD_BE_201)
604
605     def test_22_omsAttributes_ROADMA_ROADMB(self):
606         # Config ROADM-A1-ROADM-B1 oms-attributes
607         data = {"span": {
608                 "auto-spanloss": "true",
609                 "engineered-spanloss": 12.2,
610                 "spanloss-current": 12,
611                 "spanloss-base": 11.4,
612                 "link-concatenation": [{
613                     "SRLG-Id": 0,
614                     "fiber-type": "smf",
615                     "SRLG-length": 100000,
616                     "pmd": 0.5}]}}
617         response = test_utils.add_oms_attr_request("ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX", data)
618         self.assertEqual(response.status_code, requests.codes.created)
619
620     def test_23_omsAttributes_ROADMB_ROADMA(self):
621         # Config ROADM-B1-ROADM-A1 oms-attributes
622         data = {"span": {
623                 "auto-spanloss": "true",
624                 "engineered-spanloss": 12.2,
625                 "spanloss-current": 12,
626                 "spanloss-base": 11.4,
627                 "link-concatenation": [{
628                     "SRLG-Id": 0,
629                     "fiber-type": "smf",
630                     "SRLG-length": 100000,
631                     "pmd": 0.5}]}}
632         response = test_utils.add_oms_attr_request("ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX", data)
633         self.assertEqual(response.status_code, requests.codes.created)
634
635     def test_24_omsAttributes_ROADMB_ROADMC(self):
636         # Config ROADM-B1-ROADM-C1 oms-attributes
637         data = {"span": {
638                 "auto-spanloss": "true",
639                 "engineered-spanloss": 12.2,
640                 "spanloss-current": 12,
641                 "spanloss-base": 11.4,
642                 "link-concatenation": [{
643                     "SRLG-Id": 0,
644                     "fiber-type": "smf",
645                     "SRLG-length": 100000,
646                     "pmd": 0.5}]}}
647         response = test_utils.add_oms_attr_request("ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX", data)
648         self.assertEqual(response.status_code, requests.codes.created)
649
650     def test_25_omsAttributes_ROADMC_ROADMB(self):
651         # Config ROADM-C1-ROADM-B1 oms-attributes
652         data = {"span": {
653                 "auto-spanloss": "true",
654                 "engineered-spanloss": 12.2,
655                 "link-concatenation": [{
656                     "SRLG-Id": 0,
657                     "fiber-type": "smf",
658                     "SRLG-length": 100000,
659                     "pmd": 0.5}]}}
660         response = test_utils.add_oms_attr_request("ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX", data)
661         self.assertEqual(response.status_code, requests.codes.created)
662
663     def test_26_getClliNetwork(self):
664         response = test_utils.get_clli_net_request()
665         self.assertEqual(response.status_code, requests.codes.ok)
666         res = response.json()
667         nbNode = len(res['network'][0]['node'])
668         listNode = ['NodeA', 'NodeB', 'NodeC']
669         for i in range(0, nbNode):
670             nodeId = res['network'][0]['node'][i]['node-id']
671             find = nodeId in listNode
672             self.assertEqual(find, True)
673             if(nodeId == 'NodeA'):
674                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeA')
675             elif(nodeId == 'NodeB'):
676                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeB')
677             else:
678                 self.assertEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeC')
679             listNode.remove(nodeId)
680         self.assertEqual(len(listNode), 0)
681
682     def test_27_verifyDegree(self):
683         response = test_utils.get_ordm_topo_request("")
684         self.assertEqual(response.status_code, requests.codes.ok)
685         res = response.json()
686         # Tests related to links
687         nbLink = len(res['network'][0]['ietf-network-topology:link'])
688         listR2RLink = ['ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX', 'ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX',
689                        'ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX', 'ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX',
690                        'ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX', 'ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX']
691         for i in range(0, nbLink):
692             if res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'ROADM-TO-ROADM':
693                 link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
694                 find = link_id in listR2RLink
695                 self.assertEqual(find, True)
696                 listR2RLink.remove(link_id)
697         self.assertEqual(len(listR2RLink), 0)
698
699     def test_28_verifyOppositeLinkTopology(self):
700         response = test_utils.get_ordm_topo_request("")
701         self.assertEqual(response.status_code, requests.codes.ok)
702         res = response.json()
703         # Tests related to links
704         nbLink = len(res['network'][0]['ietf-network-topology:link'])
705         self.assertEqual(nbLink, 26)
706         for i in range(0, nbLink):
707             link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
708             link_type = res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type']
709             link_src = res['network'][0]['ietf-network-topology:link'][i]['source']['source-node']
710             link_dest = res['network'][0]['ietf-network-topology:link'][i]['destination']['dest-node']
711             oppLink_id = res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:opposite-link']
712             # Find the opposite link
713             response_oppLink = test_utils.get_ordm_topo_request("ietf-network-topology:link/"+oppLink_id)
714             self.assertEqual(response_oppLink.status_code, requests.codes.ok)
715             res_oppLink = response_oppLink.json()
716             self.assertEqual(res_oppLink['ietf-network-topology:link'][0]
717                              ['org-openroadm-common-network:opposite-link'], link_id)
718             self.assertEqual(res_oppLink['ietf-network-topology:link'][0]['source']['source-node'], link_dest)
719             self.assertEqual(res_oppLink['ietf-network-topology:link'][0]['destination']['dest-node'], link_src)
720             oppLink_type = res_oppLink['ietf-network-topology:link'][0]['org-openroadm-common-network:link-type']
721             if link_type == 'ADD-LINK':
722                 self.assertEqual(oppLink_type, 'DROP-LINK')
723             elif link_type == 'DROP-LINK':
724                 self.assertEqual(oppLink_type, 'ADD-LINK')
725             elif link_type == 'EXPRESS-LINK':
726                 self.assertEqual(oppLink_type, 'EXPRESS-LINK')
727             elif link_type == 'ROADM-TO-ROADM':
728                 self.assertEqual(oppLink_type, 'ROADM-TO-ROADM')
729             elif link_type == 'XPONDER-INPUT':
730                 self.assertEqual(oppLink_type, 'XPONDER-OUTPUT')
731             elif link_type == 'XPONDER-OUTPUT':
732                 self.assertEqual(oppLink_type, 'XPONDER-INPUT')
733
734     def test_29_getLinkOmsAttributesOpenRoadmTopology(self):
735         response = test_utils.get_ordm_topo_request("")
736         self.assertEqual(response.status_code, requests.codes.ok)
737         res = response.json()
738         nbLink = len(res['network'][0]['ietf-network-topology:link'])
739         R2RLink = ['ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX',
740                    'ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX',
741                    'ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX',
742                    'ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX',
743                    'ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX',
744                    'ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX']
745         for i in range(0, nbLink):
746             link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
747             if(link_id in R2RLink):
748                 find = False
749                 spanLoss = res['network'][0]['ietf-network-topology:link'][i][
750                     'org-openroadm-network-topology:OMS-attributes']['span']["engineered-spanloss"]
751                 length = res['network'][0]['ietf-network-topology:link'][i][
752                     'org-openroadm-network-topology:OMS-attributes']['span']['link-concatenation'][0]['SRLG-length']
753                 if((spanLoss != None) & (length != None)):
754                     find = True
755                 self.assertTrue(find)
756                 R2RLink.remove(link_id)
757         self.assertEqual(len(R2RLink), 0)
758
759     def test_30_disconnect_ROADMB(self):
760         # Delete in the topology-netconf
761         response = test_utils.unmount_device("ROADM-B1")
762         # Delete in the clli-network
763         response = test_utils.del_node_request("NodeB")
764         self.assertEqual(response.status_code, requests.codes.ok)
765
766     def test_31_disconnect_ROADMC(self):
767         # Delete in the topology-netconf
768         response = test_utils.unmount_device("ROADM-C1")
769         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
770         # Delete in the clli-network
771         response = test_utils.del_node_request("NodeC")
772         self.assertEqual(response.status_code, requests.codes.ok)
773
774 #    def test_24_check_roadm2roadm_links_deletion(self):
775 #        response = test_utils.get_ordm_topo_request("")
776 #        self.assertEqual(response.status_code, requests.codes.ok)
777 #        res = response.json()
778 #        #Write the response in the log
779 #        with open('./transportpce_tests/log/response.log', 'a') as outfile1:
780 #            outfile1.write(str(res))
781 #        #Tests related to links
782 #        nbLink=len(res['network'][0]['ietf-network-topology:link'])
783 #        self.assertEqual(nbLink,8)
784 #        expressLink=['ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX','ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX']
785 #        addLink=['ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX','ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX',]
786 #        dropLink=['ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX','ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX']
787 #        XPDR_IN=['ROADMA-SRG1-SRG1-PP1-TXRXtoXPDRA-XPDR1-XPDR1-NETWORK1']
788 #        XPDR_OUT=['XPDRA-XPDR1-XPDR1-NETWORK1toROADMA-SRG1-SRG1-PP1-TXRX']
789 #        for i in range(0,nbLink):
790 #            nodeType=res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type']
791 #            linkId=res['network'][0]['ietf-network-topology:link'][i]['link-id']
792 #            if(nodeType=='EXPRESS-LINK'):
793 #                find= linkId in expressLink
794 #                self.assertEqual(find, True)
795 #                expressLink.remove(linkId)
796 #            elif(nodeType=='ADD-LINK'):
797 #                find= linkId in addLink
798 #                self.assertEqual(find, True)
799 #                addLink.remove(linkId)
800 #            elif(nodeType=='DROP-LINK'):
801 #                find= linkId in dropLink
802 #                self.assertEqual(find, True)
803 #                dropLink.remove(linkId)
804 #            elif(nodeType=='XPONDER-INPUT'):
805 #                find= linkId in XPDR_IN
806 #                self.assertEqual(find, True)
807 #                XPDR_IN.remove(linkId)
808 #            elif(nodeType=='XPONDER-OUTPUT'):
809 #                find= linkId in XPDR_OUT
810 #                self.assertEqual(find, True)
811 #                XPDR_OUT.remove(linkId)
812 #            else:
813 #                self.assertFalse(True)
814 #        self.assertEqual(len(expressLink),0)
815 #        self.assertEqual(len(addLink),0)
816 #        self.assertEqual(len(dropLink),0)
817 #        self.assertEqual(len(XPDR_IN),0)
818 #        self.assertEqual(len(XPDR_OUT),0)
819 #
820 #        for i in range(0,nbLink):
821 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'],'ROADM-TO-ROADM')
822 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX')
823 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX')
824 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG2-DEG1-CTP-TXRX')
825 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-DEG1-DEG2-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX')
826 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-DEG2-DEG2-CTP-TXRX')
827 #            self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]['link-id'],'ROADMC-DEG2-DEG2-CTP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX')
828
829     def test_32_getNodes_OpenRoadmTopology(self):
830         response = test_utils.get_ordm_topo_request("")
831         res = response.json()
832         # Tests related to nodes
833         self.assertEqual(response.status_code, requests.codes.ok)
834         nbNode = len(res['network'][0]['node'])
835         self.assertEqual(nbNode, 5)
836         listNode = ['XPDR-A1-XPDR1', 'ROADM-A1-SRG1', 'ROADM-A1-SRG3', 'ROADM-A1-DEG1', 'ROADM-A1-DEG2']
837         for i in range(0, nbNode):
838             nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
839             nodeId = res['network'][0]['node'][i]['node-id']
840             # Tests related to XPDRA nodes
841             if(nodeId == 'XPDR-A1-XPDR1'):
842                 nbTp = len(res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
843                 for j in range(0, nbTp):
844                     tpid = res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]['tp-id']
845                     if (tpid == 'XPDR1-CLIENT1'):
846                         self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
847                                          ['org-openroadm-common-network:tp-type'], 'XPONDER-CLIENT')
848                     if (tpid == 'XPDR1-NETWORK1'):
849                         self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
850                                          ['org-openroadm-common-network:tp-type'], 'XPONDER-NETWORK')
851                         self.assertEqual(res['network'][0]['node'][i]['ietf-network-topology:termination-point'][j]
852                                          ['org-openroadm-network-topology:xpdr-network-attributes']['tail-equipment-id'],
853                                          'ROADM-A1-SRG1--SRG1-PP1-TXRX')
854                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'XPDR-A1'},
855                               res['network'][0]['node'][i]['supporting-node'])
856                 listNode.remove(nodeId)
857             elif(nodeId == 'ROADM-A1-SRG1'):
858                 # Test related to SRG1
859                 self.assertEqual(nodeType, 'SRG')
860                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
861                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
862                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
863                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
864                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
865                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
866                               res['network'][0]['node'][i]['supporting-node'])
867                 listNode.remove(nodeId)
868             elif(nodeId == 'ROADM-A1-SRG3'):
869                 # Test related to SRG1
870                 self.assertEqual(nodeType, 'SRG')
871                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
872                 self.assertIn({'tp-id': 'SRG3-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
873                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
874                 self.assertIn({'tp-id': 'SRG3-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
875                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
876                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
877                               res['network'][0]['node'][i]['supporting-node'])
878                 listNode.remove(nodeId)
879             elif(nodeId == 'ROADM-A1-DEG1'):
880                 # Test related to DEG1
881                 self.assertEqual(nodeType, 'DEGREE')
882                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
883                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
884                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
885                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
886                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
887                               res['network'][0]['node'][i]['supporting-node'])
888                 listNode.remove(nodeId)
889             elif(nodeId == 'ROADM-A1-DEG2'):
890                 # Test related to DEG2
891                 self.assertEqual(nodeType, 'DEGREE')
892                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
893                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
894                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
895                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
896                 self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
897                               res['network'][0]['node'][i]['supporting-node'])
898                 listNode.remove(nodeId)
899             else:
900                 self.assertFalse(True)
901         self.assertEqual(len(listNode), 0)
902         # Test related to SRG1 of ROADMC
903         for i in range(0, nbNode):
904             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'ROADM-C1-SRG1')
905             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'ROADM-C1-DEG1')
906             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'ROADM-C1-DEG2')
907
908     def test_33_getOpenRoadmNetwork(self):
909         response = test_utils.get_ordm_net_request()
910         self.assertEqual(response.status_code, requests.codes.ok)
911         res = response.json()
912         nbNode = len(res['network'][0]['node'])
913         self.assertEqual(nbNode, 2)
914         for i in range(0, nbNode-1):
915             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'ROADM-C1')
916             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'ROADM-B1')
917
918     def test_34_getClliNetwork(self):
919         response = test_utils.get_clli_net_request()
920         self.assertEqual(response.status_code, requests.codes.ok)
921         res = response.json()
922         nbNode = len(res['network'][0]['node'])
923         self.assertEqual(nbNode, 1)
924         for i in range(0, nbNode-1):
925             self.assertNotEqual(res['network'][0]['node'][i]['org-openroadm-clli-network:clli'], 'NodeC')
926
927     def test_35_disconnect_XPDRA(self):
928         response = test_utils.unmount_device("XPDR-A1")
929         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
930
931     def test_36_getClliNetwork(self):
932         response = test_utils.get_clli_net_request()
933         self.assertEqual(response.status_code, requests.codes.ok)
934         res = response.json()
935         nbNode = len(res['network'][0]['node'])
936         self.assertEqual(nbNode, 1)
937         self.assertEqual(res['network'][0]['node'][0]['org-openroadm-clli-network:clli'], 'NodeA')
938
939     def test_37_getOpenRoadmNetwork(self):
940         response = test_utils.get_ordm_net_request()
941         self.assertEqual(response.status_code, requests.codes.ok)
942         res = response.json()
943         nbNode = len(res['network'][0]['node'])
944         self.assertEqual(nbNode, 1)
945         for i in range(0, nbNode):
946             self.assertNotEqual(res['network'][0]['node'][i]['node-id'], 'XPDR-A1')
947
948     def test_38_getNodes_OpenRoadmTopology(self):
949         response = test_utils.get_ordm_topo_request("")
950         res = response.json()
951         # Tests related to nodes
952         self.assertEqual(response.status_code, requests.codes.ok)
953         nbNode = len(res['network'][0]['node'])
954         self.assertEqual(nbNode, 4)
955         listNode = ['ROADM-A1-SRG1', 'ROADM-A1-SRG3', 'ROADM-A1-DEG1', 'ROADM-A1-DEG2']
956         for i in range(0, nbNode):
957             self.assertIn({'network-ref': 'openroadm-network', 'node-ref': 'ROADM-A1'},
958                           res['network'][0]['node'][i]['supporting-node'])
959             nodeType = res['network'][0]['node'][i]['org-openroadm-common-network:node-type']
960             nodeId = res['network'][0]['node'][i]['node-id']
961             if(nodeId == 'ROADM-A1-SRG1'):
962                 # Test related to SRG1
963                 self.assertEqual(nodeType, 'SRG')
964                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
965                 self.assertIn({'tp-id': 'SRG1-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
966                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
967                 self.assertIn({'tp-id': 'SRG1-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
968                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
969                 listNode.remove(nodeId)
970             elif(nodeId == 'ROADM-A1-SRG3'):
971                 # Test related to SRG1
972                 self.assertEqual(nodeType, 'SRG')
973                 self.assertEqual(len(res['network'][0]['node'][i]['ietf-network-topology:termination-point']), 5)
974                 self.assertIn({'tp-id': 'SRG3-CP-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-CP'},
975                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
976                 self.assertIn({'tp-id': 'SRG3-PP1-TXRX', 'org-openroadm-common-network:tp-type': 'SRG-TXRX-PP'},
977                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
978                 listNode.remove(nodeId)
979             elif(nodeId == 'ROADM-A1-DEG1'):
980                 # Test related to DEG1
981                 self.assertEqual(nodeType, 'DEGREE')
982                 self.assertIn({'tp-id': 'DEG1-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
983                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
984                 self.assertIn({'tp-id': 'DEG1-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
985                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
986                 listNode.remove(nodeId)
987             elif(nodeId == 'ROADM-A1-DEG2'):
988                 # Test related to DEG2
989                 self.assertEqual(nodeType, 'DEGREE')
990                 self.assertIn({'tp-id': 'DEG2-TTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-TTP'},
991                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
992                 self.assertIn({'tp-id': 'DEG2-CTP-TXRX', 'org-openroadm-common-network:tp-type': 'DEGREE-TXRX-CTP'},
993                               res['network'][0]['node'][i]['ietf-network-topology:termination-point'])
994                 listNode.remove(nodeId)
995             else:
996                 self.assertFalse(True)
997         self.assertEqual(len(listNode), 0)
998
999     def test_39_disconnect_ROADM_XPDRA_link(self):
1000         # Link-1
1001         response = test_utils.del_link_request("XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX")
1002         self.assertEqual(response.status_code, requests.codes.ok)
1003         # Link-2
1004         response = test_utils.del_link_request("ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1")
1005         self.assertEqual(response.status_code, requests.codes.ok)
1006
1007     def test_40_getLinks_OpenRoadmTopology(self):
1008         response = test_utils.get_ordm_topo_request("")
1009         self.assertEqual(response.status_code, requests.codes.ok)
1010         res = response.json()
1011         nbLink = len(res['network'][0]['ietf-network-topology:link'])
1012         self.assertEqual(nbLink, 16)
1013         expressLink = ['ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
1014                        'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX']
1015         addLink = ['ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX',
1016                    'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX', 'ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX']
1017         dropLink = ['ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX',
1018                     'ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX', 'ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX']
1019         roadmtoroadmLink = 0
1020         for i in range(0, nbLink):
1021             if (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'EXPRESS-LINK'):
1022                 link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
1023                 find = link_id in expressLink
1024                 self.assertEqual(find, True)
1025                 expressLink.remove(link_id)
1026             elif (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'ADD-LINK'):
1027                 link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
1028                 find = link_id in addLink
1029                 self.assertEqual(find, True)
1030                 addLink.remove(link_id)
1031             elif (res['network'][0]['ietf-network-topology:link'][i]['org-openroadm-common-network:link-type'] == 'DROP-LINK'):
1032                 link_id = res['network'][0]['ietf-network-topology:link'][i]['link-id']
1033                 find = link_id in dropLink
1034                 self.assertEqual(find, True)
1035                 dropLink.remove(link_id)
1036             else:
1037                 roadmtoroadmLink += 1
1038         self.assertEqual(len(expressLink), 0)
1039         self.assertEqual(len(addLink), 0)
1040         self.assertEqual(len(dropLink), 0)
1041         self.assertEqual(roadmtoroadmLink, 6)
1042         for i in range(0, nbLink):
1043             self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]
1044                                 ['org-openroadm-common-network:link-type'], 'XPONDER-OUTPUT')
1045             self.assertNotEqual(res['network'][0]['ietf-network-topology:link'][i]
1046                                 ['org-openroadm-common-network:link-type'], 'XPONDER-INPUT')
1047
1048     def test_41_disconnect_ROADMA(self):
1049         response = test_utils.unmount_device("ROADM-A1")
1050         self.assertEqual(response.status_code, requests.codes.ok, test_utils.CODE_SHOULD_BE_200)
1051         # Delete in the clli-network
1052         response = test_utils.del_node_request("NodeA")
1053         self.assertEqual(response.status_code, requests.codes.ok)
1054
1055     def test_42_getClliNetwork(self):
1056         response = test_utils.get_clli_net_request()
1057         self.assertEqual(response.status_code, requests.codes.ok)
1058         res = response.json()
1059         self.assertNotIn('node', res['network'][0])
1060
1061     def test_43_getOpenRoadmNetwork(self):
1062         response = test_utils.get_ordm_net_request()
1063         self.assertEqual(response.status_code, requests.codes.ok)
1064         res = response.json()
1065         self.assertNotIn('node', res['network'][0])
1066
1067     def test_44_check_roadm2roadm_link_persistence(self):
1068         response = test_utils.get_ordm_topo_request("")
1069         self.assertEqual(response.status_code, requests.codes.ok)
1070         res = response.json()
1071         nbLink = len(res['network'][0]['ietf-network-topology:link'])
1072         self.assertNotIn('node', res['network'][0])
1073         self.assertEqual(nbLink, 6)
1074
1075
1076 if __name__ == "__main__":
1077     unittest.main(verbosity=2)