1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
:mod:`mozpower` --- Power-usage testing
=======================================
Mozpower provides an interface through which power usage measurements
can be done on any OS and CPU combination (auto-detected) that has
been implemented within the module. It provides 2 methods to start
and stop the measurement gathering as well as methods to get the
result that can also be formatted into a perfherder data blob.
Basic Usage
-----------
Although multiple classes exist within the mozpower module,
the only one that should be used is MozPower which is accessible
from the top-level of the module. It handles which subclasses
should be used depending on the detected OS and CPU combination.
.. code-block:: python
from mozpower import MozPower
mp = MozPower(
ipg_measure_duration=600,
sampling_rate=1000,
output_file_path='tempdir/dataprefix'
)
mp.initialize_power_measurements()
# Run test TEST_NAME
mp.finalize_power_measurements(
test_name=TEST_NAME,
output_dir_path=env['MOZ_UPLOAD_DIR']
)
# Get complete PERFHERDER_DATA
perfherder_data = mp.get_full_perfherder_data('raptor')
All the possible known errors that can occur are also provided
at the top-level of the module.
.. code-block:: python
from mozpower import MozPower, IPGExecutableMissingError, OsCpuComboMissingError
try:
mp = MozPower(ipg_measure_duration=600, sampling_rate=1000)
except IPGExecutableMissingError as e:
pass
except OsCpuComboMissingError as e:
pass
.. automodule:: mozpower
.. _MozPower:
MozPower Interface
------------------
The following class provides a basic interface to interact with the
power measurement tools that have been implemented. The tool used
to measure power depends on the OS and CPU combination, i.e. Intel-based
MacOS machines would use Intel Power Gadget, while ARM64-based Windows
machines would use the native Windows tool powercfg.
MozPower
````````
.. autoclass:: mozpower.MozPower
Measurement methods
+++++++++++++++++++
.. automethod:: MozPower.initialize_power_measurements(self, **kwargs)
.. automethod:: MozPower.finalize_power_measurements(self, **kwargs)
Informational methods
+++++++++++++++++++++
.. automethod:: MozPower.get_perfherder_data(self)
.. automethod:: MozPower.get_full_perfherder_data(self, framework, lowerisbetter=True, alertthreshold=2.0)
IPGEmptyFileError
`````````````````
.. autoexception:: mozpower.IPGEmptyFileError
IPGExecutableMissingError
`````````````````````````
.. autoexception:: mozpower.IPGExecutableMissingError
IPGMissingOutputFileError
`````````````````````````
.. autoexception:: mozpower.IPGMissingOutputFileError
IPGTimeoutError
```````````````
.. autoexception:: mozpower.IPGTimeoutError
IPGUnknownValueTypeError
````````````````````````
.. autoexception:: mozpower.IPGUnknownValueTypeError
MissingProcessorInfoError
`````````````````````````
.. autoexception:: mozpower.MissingProcessorInfoError
OsCpuComboMissingError
``````````````````````
.. autoexception:: mozpower.OsCpuComboMissingError
PlatformUnsupportedError
````````````````````````
.. autoexception:: mozpower.PlatformUnsupportedError
|