Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

#!/usr/bin/env python
import time
from unittest import mock
import mozunit
def test_macintelpower_init(macintelpower_obj):
"""Tests that the MacIntelPower object is correctly initialized."""
assert macintelpower_obj.ipg_path
assert macintelpower_obj.ipg
assert macintelpower_obj._os == "darwin"
assert macintelpower_obj._cpu == "intel"
def test_macintelpower_measuring(macintelpower_obj):
"""Tests that measurement initialization and finalization works
for the MacIntelPower object.
"""
assert not macintelpower_obj.start_time
assert not macintelpower_obj.ipg._running
assert not macintelpower_obj.ipg._output_files
macintelpower_obj.initialize_power_measurements()
# Check that initialization set start_time, and started the
# IPG measurer thread.
# Wait a bit for thread to start, then check it
timeout = 10
start = time.time()
while time.time() - start < timeout and not macintelpower_obj.ipg._running:
time.sleep(1)
assert macintelpower_obj.start_time
assert macintelpower_obj.ipg._running
test_data = {"power-usage": "data"}
def formatter_side_effect(*args, **kwargs):
return test_data
with mock.patch(
"mozpower.intel_power_gadget.IPGResultsHandler.clean_ipg_data"
) as _:
with mock.patch(
"mozpower.intel_power_gadget.IPGResultsHandler."
"format_ipg_data_to_partial_perfherder"
) as formatter:
formatter.side_effect = formatter_side_effect
macintelpower_obj.finalize_power_measurements(wait_interval=2, timeout=30)
# Check that finalization set the end_time, stopped the IPG measurement
# thread, added atleast one output file name, and initialized
# an IPGResultsHandler object
assert macintelpower_obj.end_time
assert not macintelpower_obj.ipg._running
assert macintelpower_obj.ipg._output_files
assert macintelpower_obj.ipg_results_handler
# Check that the IPGResultHandler's methods were
# called
macintelpower_obj.ipg_results_handler.clean_ipg_data.assert_called()
macintelpower_obj.ipg_results_handler.format_ipg_data_to_partial_perfherder.assert_called_once_with( # NOQA: E501
macintelpower_obj.end_time - macintelpower_obj.start_time,
"power-testing",
)
# Make sure we can get the expected perfherder data
# after formatting
assert macintelpower_obj.get_perfherder_data() == test_data
if __name__ == "__main__":
mozunit.main()