diff --git a/sonic-chassisd/scripts/chassisd b/sonic-chassisd/scripts/chassisd index 4347bb399..fea1853d4 100644 --- a/sonic-chassisd/scripts/chassisd +++ b/sonic-chassisd/scripts/chassisd @@ -435,6 +435,8 @@ class ChassisdDaemon(daemon_base.DaemonBase): if self.module_updater.supervisor_slot == self.module_updater.my_slot: config_manager = ConfigManagerTask() config_manager.task_run() + else: + config_manager = None # Start main loop self.log_info("Start daemon main loop") diff --git a/sonic-chassisd/tests/mock_swsscommon.py b/sonic-chassisd/tests/mock_swsscommon.py index dbc42e13f..2da88e1e4 100644 --- a/sonic-chassisd/tests/mock_swsscommon.py +++ b/sonic-chassisd/tests/mock_swsscommon.py @@ -30,3 +30,18 @@ class FieldValuePairs: def __init__(self, fvs): self.fv_dict = dict(fvs) pass + +class Select: + TIMEOUT = 1 + + def addSelectable(self, selectable): + pass + + def removeSelectable(self, selectable): + pass + + def select(self, timeout=-1, interrupt_on_signal=False): + return self.TIMEOUT, None + +class SubscriberStateTable(Table): + pass diff --git a/sonic-chassisd/tests/test_chassisd.py b/sonic-chassisd/tests/test_chassisd.py index ba92f1233..6986059be 100644 --- a/sonic-chassisd/tests/test_chassisd.py +++ b/sonic-chassisd/tests/test_chassisd.py @@ -507,9 +507,20 @@ def test_signal_handler(): assert daemon_chassisd.stop.set.call_count == 0 assert exit_code == 0 -def test_daemon_run(): +def test_daemon_run_supervisor(): # Test the chassisd run daemon_chassisd = ChassisdDaemon(SYSLOG_IDENTIFIER) daemon_chassisd.stop = MagicMock() daemon_chassisd.stop.wait.return_value = True daemon_chassisd.run() + +def test_daemon_run_linecard(): + # Test the chassisd run + daemon_chassisd = ChassisdDaemon(SYSLOG_IDENTIFIER) + daemon_chassisd.stop = MagicMock() + daemon_chassisd.stop.wait.return_value = True + + import sonic_platform.platform + with patch.object(sonic_platform.platform.Chassis, 'get_my_slot') as mock: + mock.return_value = sonic_platform.platform.Platform().get_chassis().get_supervisor_slot() + 1 + daemon_chassisd.run()