@@ -2241,9 +2241,10 @@ def test_SffManagerTask_enable_high_power_class(self):
22412241 assert mock_xcvr_api .get_power_class .call_count == 5
22422242 assert mock_xcvr_api .set_high_power_class .call_count == 1
22432243
2244+ @patch ('xcvrd.xcvrd.helper_logger' )
22442245 @patch ('xcvrd.xcvrd.platform_chassis' )
22452246 @patch ('xcvrd.sff_mgr.PortChangeObserver' , MagicMock (handle_port_update_event = MagicMock ()))
2246- def test_SffManagerTask_task_worker (self , mock_chassis ):
2247+ def test_SffManagerTask_task_worker (self , mock_chassis , mock_logger ):
22472248 mock_xcvr_api = MagicMock ()
22482249 mock_xcvr_api .tx_disable_channel = MagicMock (return_value = True )
22492250 mock_xcvr_api .is_flat_memory = MagicMock (return_value = False )
@@ -2261,7 +2262,7 @@ def test_SffManagerTask_task_worker(self, mock_chassis):
22612262 task = SffManagerTask (DEFAULT_NAMESPACE ,
22622263 threading .Event (),
22632264 mock_chassis ,
2264- helper_logger )
2265+ mock_logger )
22652266
22662267 # TX enable case:
22672268 port_change_event = PortChangeEvent ('Ethernet0' , 1 , 0 , PortChangeEvent .PORT_SET , {
@@ -2342,8 +2343,52 @@ def test_SffManagerTask_task_worker(self, mock_chassis):
23422343 task .task_worker ()
23432344 assert mock_sfp .get_presence .call_count == 1
23442345 assert mock_xcvr_api .tx_disable_channel .call_count == 2
2346+ mock_logger .log_error .assert_called_once_with (
2347+ "SFF-MAIN: Ethernet0: module not present!" )
23452348 mock_sfp .get_presence = MagicMock (return_value = True )
23462349
2350+ # lpmode setting case
2351+ # 1. error logged when lpmode is suppoted but unsuccessful
2352+ port_change_event = PortChangeEvent ('Ethernet0' , 1 , 0 , PortChangeEvent .PORT_SET ,
2353+ {'type' : 'QSFP28' })
2354+ task .on_port_update_event (port_change_event )
2355+ mock_xcvr_api .set_lpmode = MagicMock (return_value = False )
2356+ mock_xcvr_api .get_lpmode_support = MagicMock (return_value = True )
2357+ task .port_dict_prev = {}
2358+ task .task_stopping_event .is_set = MagicMock (side_effect = [False , False , True ])
2359+ task .task_worker ()
2360+ assert len (mock_logger .log_error .call_args_list ) == 2
2361+ mock_logger .log_error .assert_called_with (
2362+ "SFF-MAIN: Ethernet0: Failed to take module out of low power mode." )
2363+
2364+ # 2. no error logged when lpmode is suppoted and successful
2365+ port_change_event = PortChangeEvent ('Ethernet0' , 1 , 0 , PortChangeEvent .PORT_SET ,
2366+ {'type' : 'QSFP28' })
2367+ task .on_port_update_event (port_change_event )
2368+ mock_xcvr_api .set_lpmode = MagicMock (return_value = True )
2369+ mock_xcvr_api .get_lpmode_support = MagicMock (return_value = True )
2370+ task .port_dict_prev = {}
2371+ task .task_stopping_event .is_set = MagicMock (side_effect = [False , False , True ])
2372+ task .task_worker ()
2373+ assert len (mock_logger .log_error .call_args_list ) == 2
2374+ mock_logger .log_error .assert_called_with (
2375+ "SFF-MAIN: Ethernet0: Failed to take module out of low power mode." )
2376+
2377+ # 3. no error logged when lpmode is not suppoted
2378+ port_change_event = PortChangeEvent ('Ethernet0' , 1 , 0 , PortChangeEvent .PORT_SET ,
2379+ {'type' : 'QSFP28' })
2380+ task .on_port_update_event (port_change_event )
2381+ mock_xcvr_api .set_lpmode = MagicMock (return_value = False )
2382+ mock_xcvr_api .get_lpmode_support = MagicMock (return_value = False )
2383+ task .port_dict_prev = {}
2384+ task .task_stopping_event .is_set = MagicMock (side_effect = [False , False , True ])
2385+ task .task_worker ()
2386+ assert len (mock_logger .log_error .call_args_list ) == 2
2387+ mock_logger .log_error .assert_called_with (
2388+ "SFF-MAIN: Ethernet0: Failed to take module out of low power mode." )
2389+ mock_xcvr_api .set_lpmode = MagicMock (return_value = True )
2390+ mock_xcvr_api .get_lpmode_support = MagicMock (return_value = True )
2391+
23472392 def test_CmisManagerTask_update_port_transceiver_status_table_sw_cmis_state (self ):
23482393 port_mapping = PortMapping ()
23492394 stop_event = threading .Event ()
0 commit comments