7
7
import tests .mock_tables .dbconnector
8
8
from utilities_common .db import Db
9
9
from .utils import get_result_and_return_code
10
+ from unittest import mock
11
+ sys .modules ['clicommon' ] = mock .Mock ()
10
12
11
13
show_linecard0_shutdown_output = """\
12
14
LINE-CARD0 line-card 1 Empty down LC1000101
15
17
show_linecard0_startup_output = """\
16
18
LINE-CARD0 line-card 1 Empty up LC1000101
17
19
"""
20
+
21
+ show_fabriccard0_shutdown_output = """\
22
+ FABRIC-CARD0 fabric-card 17 Online down FC1000101
23
+ """
24
+
25
+ show_fabriccard0_startup_output = """\
26
+ FABRIC-CARD0 fabric-card 17 Online up FC1000101
27
+ """
28
+
18
29
header_lines = 2
19
30
warning_lines = 0
20
31
113
124
Linecard4|Asic2|PortChannel0001 2 22 Linecard4|Asic2|Ethernet29, Linecard4|Asic2|Ethernet30
114
125
"""
115
126
127
+
128
+ def mock_run_command_side_effect (* args , ** kwargs ):
129
+ return '' , 0
130
+
131
+
116
132
class TestChassisModules (object ):
117
133
@classmethod
118
134
def setup_class (cls ):
@@ -186,6 +202,47 @@ def test_config_shutdown_module(self):
186
202
#db.cfgdb.set_entry("CHASSIS_MODULE", "LINE-CARD0", { "admin_status" : "down" })
187
203
#db.get_data("CHASSIS_MODULE", "LINE-CARD0")
188
204
205
+ def test_config_shutdown_module_fabric (self ):
206
+ with mock .patch ("utilities_common.cli.run_command" ,
207
+ mock .MagicMock (side_effect = mock_run_command_side_effect )) as mock_run_command :
208
+ runner = CliRunner ()
209
+ db = Db ()
210
+
211
+ chassisdb = db .db
212
+ chassisdb .connect ("CHASSIS_STATE_DB" )
213
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "asic_id_in_module" , "0" )
214
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "asic_pci_address" , "nokia-bdb:4:0" )
215
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "name" , "FABRIC-CARD0" )
216
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "asic_id_in_module" , "1" )
217
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "asic_pci_address" , "nokia-bdb:4:1" )
218
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "name" , "FABRIC-CARD0" )
219
+ chassisdb .close ("CHASSIS_STATE_DB" )
220
+
221
+ result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["shutdown" ],
222
+ ["FABRIC-CARD0" ], obj = db )
223
+ print (result .exit_code )
224
+ print (result .output )
225
+ assert result .exit_code == 0
226
+
227
+ result = runner .invoke (show .cli .commands ["chassis" ].commands ["modules" ].commands ["status" ],
228
+ ["FABRIC-CARD0" ], obj = db )
229
+ print (result .exit_code )
230
+ print (result .output )
231
+ result_lines = result .output .strip ('\n ' ).split ('\n ' )
232
+ assert result .exit_code == 0
233
+ header_lines = 2
234
+ result_out = " " .join ((result_lines [header_lines ]).split ())
235
+ assert result_out .strip ('\n ' ) == show_fabriccard0_shutdown_output .strip ('\n ' )
236
+
237
+ fvs = {'admin_status' : 'down' }
238
+ db .cfgdb .set_entry ('CHASSIS_MODULE' , "FABRIC-CARD0" , fvs )
239
+ result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["shutdown" ],
240
+ ["FABRIC-CARD0" ], obj = db )
241
+ print (result .exit_code )
242
+ print (result .output )
243
+ assert result .exit_code == 0
244
+ assert mock_run_command .call_count == 6
245
+
189
246
def test_config_startup_module (self ):
190
247
runner = CliRunner ()
191
248
db = Db ()
@@ -202,6 +259,62 @@ def test_config_startup_module(self):
202
259
result_out = " " .join ((result_lines [header_lines ]).split ())
203
260
assert result_out .strip ('\n ' ) == show_linecard0_startup_output .strip ('\n ' )
204
261
262
+ def test_config_startup_module_fabric (self ):
263
+ with mock .patch ("utilities_common.cli.run_command" ,
264
+ mock .MagicMock (side_effect = mock_run_command_side_effect )) as mock_run_command :
265
+ runner = CliRunner ()
266
+ db = Db ()
267
+
268
+ chassisdb = db .db
269
+ chassisdb .connect ("CHASSIS_STATE_DB" )
270
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "asic_id_in_module" , "0" )
271
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "asic_pci_address" , "nokia-bdb:4:0" )
272
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic6" , "name" , "FABRIC-CARD0" )
273
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "asic_id_in_module" , "1" )
274
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "asic_pci_address" , "nokia-bdb:4:1" )
275
+ chassisdb .set ("CHASSIS_STATE_DB" , "CHASSIS_FABRIC_ASIC_TABLE|asic7" , "name" , "FABRIC-CARD0" )
276
+ chassisdb .close ("CHASSIS_STATE_DB" )
277
+
278
+ # FC is down and doing startup
279
+ fvs = {'admin_status' : 'down' }
280
+ db .cfgdb .set_entry ('CHASSIS_MODULE' , "FABRIC-CARD0" , fvs )
281
+
282
+ result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["startup" ],
283
+ ["FABRIC-CARD0" ], obj = db )
284
+ print (result .exit_code )
285
+ print (result .output )
286
+ assert result .exit_code == 0
287
+
288
+ result = runner .invoke (show .cli .commands ["chassis" ].commands ["modules" ].commands ["status" ],
289
+ ["FABRIC-CARD0" ], obj = db )
290
+ print (result .exit_code )
291
+ print (result .output )
292
+ result_lines = result .output .strip ('\n ' ).split ('\n ' )
293
+ assert result .exit_code == 0
294
+ result_out = " " .join ((result_lines [header_lines ]).split ())
295
+ assert result_out .strip ('\n ' ) == show_fabriccard0_startup_output .strip ('\n ' )
296
+ assert mock_run_command .call_count == 2
297
+
298
+ # FC is up and doing startup
299
+ fvs = {'admin_status' : 'up' }
300
+ db .cfgdb .set_entry ('CHASSIS_MODULE' , "FABRIC-CARD0" , fvs )
301
+
302
+ result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["startup" ],
303
+ ["FABRIC-CARD0" ], obj = db )
304
+ print (result .exit_code )
305
+ print (result .output )
306
+ assert result .exit_code == 0
307
+
308
+ result = runner .invoke (show .cli .commands ["chassis" ].commands ["modules" ].commands ["status" ],
309
+ ["FABRIC-CARD0" ], obj = db )
310
+ print (result .exit_code )
311
+ print (result .output )
312
+ result_lines = result .output .strip ('\n ' ).split ('\n ' )
313
+ assert result .exit_code == 0
314
+ result_out = " " .join ((result_lines [header_lines ]).split ())
315
+ assert result_out .strip ('\n ' ) == show_fabriccard0_startup_output .strip ('\n ' )
316
+ assert mock_run_command .call_count == 2
317
+
205
318
def test_config_incorrect_module (self ):
206
319
runner = CliRunner ()
207
320
db = Db ()
0 commit comments