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
16
18
LINE-CARD0 line-card 1 Empty up LC1000101
17
19
"""
18
20
19
- show_fabriccard0_shutdown_output = """\
21
+ show_fabriccard0_shutdown_output = """\
20
22
FABRIC-CARD0 fabric-card 17 Online down FC1000101
21
23
"""
22
24
23
- show_fabriccard0_startup_output = """\
25
+ show_fabriccard0_startup_output = """\
24
26
FABRIC-CARD0 fabric-card 17 Online up FC1000101
25
27
"""
26
28
122
124
Linecard4|Asic2|PortChannel0001 2 22 Linecard4|Asic2|Ethernet29, Linecard4|Asic2|Ethernet30
123
125
"""
124
126
127
+
128
+ def mock_run_command_side_effect (* args , ** kwargs ):
129
+ return '' , 0
130
+
131
+
125
132
class TestChassisModules (object ):
126
133
@classmethod
127
134
def setup_class (cls ):
@@ -196,21 +203,45 @@ def test_config_shutdown_module(self):
196
203
#db.get_data("CHASSIS_MODULE", "LINE-CARD0")
197
204
198
205
def test_config_shutdown_module_fabric (self ):
199
- runner = CliRunner ()
200
- db = Db ()
201
- result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["shutdown" ], ["FABRIC-CARD0" ], obj = db )
202
- print (result .exit_code )
203
- print (result .output )
204
- assert result .exit_code != 0
205
-
206
- result = runner .invoke (show .cli .commands ["chassis" ].commands ["modules" ].commands ["status" ], ["FABRIC-CARD0" ], obj = db )
207
- print (result .exit_code )
208
- print (result .output )
209
- result_lines = result .output .strip ('\n ' ).split ('\n ' )
210
- assert result .exit_code == 0
211
- header_lines = 2
212
- result_out = " " .join ((result_lines [header_lines ]).split ())
213
- assert result_out .strip ('\n ' ) == show_fabriccard0_shutdown_output .strip ('\n ' )
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
214
245
215
246
def test_config_startup_module (self ):
216
247
runner = CliRunner ()
@@ -229,20 +260,60 @@ def test_config_startup_module(self):
229
260
assert result_out .strip ('\n ' ) == show_linecard0_startup_output .strip ('\n ' )
230
261
231
262
def test_config_startup_module_fabric (self ):
232
- runner = CliRunner ()
233
- db = Db ()
234
- result = runner .invoke (config .config .commands ["chassis" ].commands ["modules" ].commands ["startup" ], ["FABRIC-CARD0" ], obj = db )
235
- print (result .exit_code )
236
- print (result .output )
237
- assert result .exit_code == 0
238
-
239
- result = runner .invoke (show .cli .commands ["chassis" ].commands ["modules" ].commands ["status" ], ["FABRIC-CARD0" ], obj = db )
240
- print (result .exit_code )
241
- print (result .output )
242
- result_lines = result .output .strip ('\n ' ).split ('\n ' )
243
- assert result .exit_code == 0
244
- result_out = " " .join ((result_lines [header_lines ]).split ())
245
- assert result_out .strip ('\n ' ) == show_fabriccard0_startup_output .strip ('\n ' )
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
246
317
247
318
def test_config_incorrect_module (self ):
248
319
runner = CliRunner ()
0 commit comments