@@ -383,6 +383,82 @@ def __init__(self):
383383 self .assertEqual (resource_tracker .cpu_tracker , "RAPL" )
384384 self .assertEqual (tracker ._conf ["cpu_model" ], "Mock CPU" )
385385
386+ def test_set_cpu_tracking_force_cpu_load_instantiates_tdp (self ):
387+ class DummyTracker :
388+ def __init__ (self ):
389+ self ._conf = {"cpu_physical_count" : 2 , "force_mode_cpu_load" : True }
390+ self ._force_cpu_power = None
391+ self ._output_dir = ""
392+ self ._rapl_include_dram = False
393+ self ._rapl_prefer_psys = False
394+ self ._tracking_mode = "machine"
395+ self ._hardware = []
396+
397+ tracker = DummyTracker ()
398+ resource_tracker = ResourceTracker (tracker )
399+ fake_tdp = mock .Mock ()
400+ fake_tdp .tdp = 50
401+ fake_tdp .model = "Mock CPU"
402+
403+ with mock .patch (
404+ "codecarbon.core.resource_tracker.cpu.TDP" , return_value = fake_tdp
405+ ) as mocked_tdp , mock .patch (
406+ "codecarbon.core.resource_tracker.ResourceTracker._setup_cpu_load_mode" ,
407+ return_value = True ,
408+ ) as mocked_setup_cpu_load , mock .patch (
409+ "codecarbon.core.resource_tracker.ResourceTracker._setup_fallback_tracking"
410+ ) as mocked_fallback , mock .patch (
411+ "codecarbon.core.resource_tracker.cpu.is_powergadget_available" ,
412+ return_value = False ,
413+ ), mock .patch (
414+ "codecarbon.core.resource_tracker.cpu.is_rapl_available" ,
415+ return_value = False ,
416+ ), mock .patch (
417+ "codecarbon.core.resource_tracker.powermetrics.is_powermetrics_available" ,
418+ return_value = False ,
419+ ):
420+ resource_tracker .set_CPU_tracking ()
421+
422+ mocked_tdp .assert_called_once_with ()
423+ mocked_setup_cpu_load .assert_called_once_with (fake_tdp , 100 )
424+ mocked_fallback .assert_not_called ()
425+
426+ def test_set_cpu_tracking_fallback_instantiates_tdp (self ):
427+ class DummyTracker :
428+ def __init__ (self ):
429+ self ._conf = {"cpu_physical_count" : 4 }
430+ self ._force_cpu_power = None
431+ self ._output_dir = ""
432+ self ._rapl_include_dram = False
433+ self ._rapl_prefer_psys = False
434+ self ._tracking_mode = "machine"
435+ self ._hardware = []
436+
437+ tracker = DummyTracker ()
438+ resource_tracker = ResourceTracker (tracker )
439+ fake_tdp = mock .Mock ()
440+ fake_tdp .tdp = 20
441+ fake_tdp .model = "Mock CPU"
442+
443+ with mock .patch (
444+ "codecarbon.core.resource_tracker.cpu.TDP" , return_value = fake_tdp
445+ ) as mocked_tdp , mock .patch (
446+ "codecarbon.core.resource_tracker.ResourceTracker._setup_fallback_tracking"
447+ ) as mocked_fallback , mock .patch (
448+ "codecarbon.core.resource_tracker.cpu.is_powergadget_available" ,
449+ return_value = False ,
450+ ), mock .patch (
451+ "codecarbon.core.resource_tracker.cpu.is_rapl_available" ,
452+ return_value = False ,
453+ ), mock .patch (
454+ "codecarbon.core.resource_tracker.powermetrics.is_powermetrics_available" ,
455+ return_value = False ,
456+ ):
457+ resource_tracker .set_CPU_tracking ()
458+
459+ mocked_tdp .assert_called_once_with ()
460+ mocked_fallback .assert_called_once_with (fake_tdp , 80 )
461+
386462
387463class TestPhysicalCPU (unittest .TestCase ):
388464 def test_count_physical_cpus_windows (self ):
0 commit comments