Index: build/android/pylib/thermal_throttle.py |
diff --git a/build/android/pylib/thermal_throttle.py b/build/android/pylib/thermal_throttle.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..385a48e7ef5f6a4c63e570e729e0247b5b83451b |
--- /dev/null |
+++ b/build/android/pylib/thermal_throttle.py |
@@ -0,0 +1,47 @@ |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import logging |
+ |
+class ThermalThrottle(object): |
+ """Class to detect and track thermal throttling |
+ |
+ Usage: |
+ Wait for IsThrottled() to be False before running test |
+ After running test call HasBeenThrottled() to find out if the |
+ test run was affected by thermal throttling. |
+ |
+ Currently assumes an OMap device. |
+ """ |
+ def __init__(self, adb): |
+ self._adb = adb |
+ self._throttled = False |
+ |
+ |
+ def HasBeenThrottled(self): |
+ """ True if there has been any throttling since the last call to |
+ HasBeenThrottled or IsThrottled |
+ """ |
+ return self._ReadLog() |
+ |
+ def IsThrottled(self): |
+ """True if currently throttled""" |
+ self._ReadLog() |
+ return self._throttled |
+ |
+ def _ReadLog(self): |
+ has_been_throttled = False |
+ log = self._adb.RunShellCommand('dmesg -c') |
+ for line in log: |
+ if 'omap_thermal_throttle' in line: |
+ if not self._throttled: |
+ logging.warning('>>> Thermally Throttled') |
+ self._throttled = True |
+ has_been_throttled = True |
+ if 'omap_thermal_unthrottle' in line: |
+ if self._throttled: |
+ logging.warning('>>> Thermally Unthrottled') |
+ self._throttled = False |
+ has_been_throttled = True |
+ return has_been_throttled |