Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import re | 5 import re |
| 6 import logging | |
| 6 | 7 |
| 7 import android_commands | 8 import android_commands |
| 8 import math | 9 import math |
| 9 | 10 |
| 10 # Valid values of result type. | 11 # Valid values of result type. |
| 11 RESULT_TYPES = {'unimportant': 'RESULT ', | 12 RESULT_TYPES = {'unimportant': 'RESULT ', |
| 12 'default': '*RESULT ', | 13 'default': '*RESULT ', |
| 13 'informational': ''} | 14 'informational': ''} |
| 14 | 15 |
| 15 | 16 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 def TearDown(self): | 112 def TearDown(self): |
| 112 """Tears down performance tests.""" | 113 """Tears down performance tests.""" |
| 113 if self._original_scaling_governor: | 114 if self._original_scaling_governor: |
| 114 self._SetScalingGovernorInternal(self._original_scaling_governor) | 115 self._SetScalingGovernorInternal(self._original_scaling_governor) |
| 115 self._original_scaling_governor = None | 116 self._original_scaling_governor = None |
| 116 | 117 |
| 117 def _SetScalingGovernorInternal(self, value): | 118 def _SetScalingGovernorInternal(self, value): |
| 118 for cpu in range(self._num_cpus): | 119 for cpu in range(self._num_cpus): |
| 119 self._adb.RunShellCommand( | 120 self._adb.RunShellCommand( |
| 120 ('echo %s > ' + PerfTestSetup._SCALING_GOVERNOR) % (value, cpu)) | 121 ('echo %s > ' + PerfTestSetup._SCALING_GOVERNOR) % (value, cpu)) |
| 122 | |
| 123 | |
| 124 class ThermalThrottle(object): | |
|
bulach
2012/10/31 10:44:47
it'd make sense to have this class in its own file
Anthony Berent
2012/10/31 15:14:02
Done.
| |
| 125 """Class to detect and track thermal throttling | |
| 126 | |
| 127 Usage: | |
| 128 Wait for IsThrottled() to be False before running test | |
| 129 After running test call HasBeenThrottled() to find out if the | |
| 130 test run was affected by thermal throttling. | |
| 131 | |
| 132 Currently assumes an OMap device, but I don't know of any others with | |
|
bulach
2012/10/31 10:44:47
nit: people told me in the past to avoid using fir
Anthony Berent
2012/10/31 15:14:02
Done.
| |
| 133 thermal throttling. | |
| 134 """ | |
| 135 _throttled = False | |
|
bulach
2012/10/31 10:44:47
nit: this should be a regular member in __init__ (
Anthony Berent
2012/10/31 15:14:02
Done.
| |
| 136 | |
| 137 def __init__(self, adb): | |
| 138 self._adb = adb | |
| 139 | |
| 140 def HasBeenThrottled(self): | |
| 141 """ True if there has been any throttling since the last call to | |
| 142 HasBeenThrottled or IsThrottled | |
| 143 """ | |
| 144 return self._readLog() | |
| 145 | |
| 146 def IsThrottled(self): | |
| 147 """True if currently throttled""" | |
| 148 self._readLog() | |
| 149 return self._throttled | |
| 150 | |
| 151 def _readLog(self): | |
|
bulach
2012/10/31 10:44:47
nit: _ReadLog
Anthony Berent
2012/10/31 15:14:02
Done.
| |
| 152 has_been_throttled = False | |
| 153 log = self._adb.RunShellCommand("dmesg -c") | |
|
bulach
2012/10/31 10:44:47
nit: single quotes on all strings here.
Anthony Berent
2012/10/31 15:14:02
Done.
| |
| 154 for line in log: | |
| 155 if "omap_thermal_throttle" in line: | |
| 156 if not self._throttled: | |
| 157 logging.warning(">>> Thermally Throttled") | |
| 158 self._throttled = True | |
| 159 has_been_throttled = True | |
| 160 if "omap_thermal_unthrottle" in line: | |
| 161 if self._throttled: | |
| 162 logging.warning(">>> Thermally Unthrottled") | |
| 163 self._throttled = False | |
| 164 has_been_throttled = True | |
| 165 return has_been_throttled | |
| 166 | |
| OLD | NEW |