76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
#!/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()
|