Skip to content

Commit b10a1ff

Browse files
author
benoit-cty
committed
Improve coverage
1 parent c1bc92a commit b10a1ff

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

tests/test_cpu_load.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,45 @@ def test_cpu_total_power_empty_history(
144144
self.assertIsInstance(result, Power)
145145
self.assertEqual(result.W, 0)
146146

147+
@mock.patch(
148+
"codecarbon.external.hardware.CPU._get_power_from_cpus",
149+
return_value=Power.from_watts(42),
150+
)
151+
def test_cpu_total_power_fetches_sample_when_history_is_empty(
152+
self,
153+
mocked_get_power_from_cpus,
154+
mocked_is_psutil_available,
155+
mocked_is_powergadget_available,
156+
mocked_is_rapl_available,
157+
):
158+
"""Calling total_power should always fetch the latest sample before averaging."""
159+
cpu = CPU.from_utils(
160+
None, MODE_CPU_LOAD, "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz", 100
161+
)
162+
cpu._power_history = []
163+
result = cpu.total_power()
164+
self.assertEqual(result.W, 42)
165+
mocked_get_power_from_cpus.assert_called_once()
166+
self.assertEqual(cpu._power_history, [])
167+
168+
@mock.patch(
169+
"codecarbon.external.hardware.CPU._get_power_from_cpus",
170+
return_value=Power.from_watts(30),
171+
)
172+
def test_cpu_total_power_averages_buffered_and_latest_sample(
173+
self,
174+
mocked_get_power_from_cpus,
175+
mocked_is_psutil_available,
176+
mocked_is_powergadget_available,
177+
mocked_is_rapl_available,
178+
):
179+
cpu = CPU.from_utils(
180+
None, MODE_CPU_LOAD, "Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz", 100
181+
)
182+
cpu._power_history = [Power.from_watts(10), Power.from_watts(20)]
183+
184+
result = cpu.total_power()
185+
186+
self.assertEqual(result.W, 20)
187+
self.assertEqual(cpu._power_history, [])
188+
mocked_get_power_from_cpus.assert_called_once()

0 commit comments

Comments
 (0)