@@ -403,6 +403,27 @@ def test_config_vlan_del_vlan(self, mock_restart_dhcp_relay_service):
403
403
assert result .exit_code == 0
404
404
assert result .output == show_vlan_brief_empty_output
405
405
406
+ def test_config_vlan_del_last_vlan (self ):
407
+ runner = CliRunner ()
408
+ db = Db ()
409
+ db .cfgdb .delete_table ("VLAN_MEMBER" )
410
+ db .cfgdb .delete_table ("VLAN_INTERFACE" )
411
+ db .cfgdb .set_entry ("VLAN" , "Vlan2000" , None )
412
+ db .cfgdb .set_entry ("VLAN" , "Vlan3000" , None )
413
+ db .cfgdb .set_entry ("VLAN" , "Vlan4000" , None )
414
+
415
+ with mock .patch ("utilities_common.cli.run_command" , mock .Mock (return_value = ("" , 0 ))) as mock_run_command :
416
+ result = runner .invoke (config .config .commands ["vlan" ].commands ["del" ], ["1000" ], obj = db )
417
+ print (result .exit_code )
418
+ print (result .output )
419
+ mock_run_command .assert_has_calls ([
420
+ mock .call ("docker exec -i swss supervisorctl status ndppd" , ignore_error = True , return_cmd = True ),
421
+ mock .call ("docker exec -i swss supervisorctl stop ndppd" , ignore_error = True , return_cmd = True ),
422
+ mock .call ("docker exec -i swss rm -f /etc/supervisor/conf.d/ndppd.conf" , ignore_error = True , return_cmd = True ),
423
+ mock .call ("docker exec -i swss supervisorctl update" , return_cmd = True )
424
+ ])
425
+ assert result .exit_code == 0
426
+
406
427
def test_config_vlan_del_nonexist_vlan_member (self ):
407
428
runner = CliRunner ()
408
429
@@ -533,19 +554,29 @@ def test_config_vlan_proxy_arp_with_nonexist_vlan_intf(self):
533
554
assert result .exit_code != 0
534
555
assert "Interface Vlan1001 does not exist" in result .output
535
556
536
- def test_config_vlan_proxy_arp_enable (self , mock_restart_dhcp_relay_service ):
537
- runner = CliRunner ()
538
- db = Db ()
557
+ def test_config_vlan_proxy_arp_enable (self ):
558
+ mock_cli_returns = [("running" , 0 ),("" , 1 )] + [("" , 0 )] * 4
559
+ with mock .patch ("utilities_common.cli.run_command" , mock .Mock (side_effect = mock_cli_returns )) as mock_run_command :
560
+ runner = CliRunner ()
561
+ db = Db ()
539
562
540
- result = runner .invoke (config .config .commands ["vlan" ].commands ["proxy_arp" ], ["1000" , "enabled" ], obj = db )
563
+ result = runner .invoke (config .config .commands ["vlan" ].commands ["proxy_arp" ], ["1000" , "enabled" ], obj = db )
541
564
542
- print (result .exit_code )
543
- print (result .output )
565
+ print (result .exit_code )
566
+ print (result .output )
567
+
568
+ expected_calls = [mock .call ("docker container inspect -f '{{.State.Status}}' swss" , return_cmd = True ),
569
+ mock .call ('docker exec -i swss supervisorctl status ndppd' , ignore_error = True , return_cmd = True ),
570
+ mock .call ('docker exec -i swss cp /usr/share/sonic/templates/ndppd.conf /etc/supervisor/conf.d/' ),
571
+ mock .call ('docker exec -i swss supervisorctl update' , return_cmd = True ),
572
+ mock .call ('docker exec -i swss sonic-cfggen -d -t /usr/share/sonic/templates/ndppd.conf.j2,/etc/ndppd.conf' ),
573
+ mock .call ('docker exec -i swss supervisorctl restart ndppd' , return_cmd = True )]
574
+ mock_run_command .assert_has_calls (expected_calls )
544
575
545
- assert result .exit_code == 0
546
- assert db .cfgdb .get_entry ("VLAN_INTERFACE" , "Vlan1000" ) == {"proxy_arp" : "enabled" }
576
+ assert result .exit_code == 0
577
+ assert db .cfgdb .get_entry ("VLAN_INTERFACE" , "Vlan1000" ) == {"proxy_arp" : "enabled" }
547
578
548
- def test_config_vlan_proxy_arp_disable (self , mock_restart_dhcp_relay_service ):
579
+ def test_config_vlan_proxy_arp_disable (self ):
549
580
runner = CliRunner ()
550
581
db = Db ()
551
582
0 commit comments