Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Unified Diff: devil/devil/android/battery_utils.py

Issue 1771263002: [devil] Detect if device is not charging properly. (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | devil/devil/android/battery_utils_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: devil/devil/android/battery_utils.py
diff --git a/devil/devil/android/battery_utils.py b/devil/devil/android/battery_utils.py
index ff0bd708ab1a32ad93b42ad06b195052d7b1c523..4c8f54311c44c4f298879e7e76e3e0922baaac38 100644
--- a/devil/devil/android/battery_utils.py
+++ b/devil/devil/android/battery_utils.py
@@ -116,6 +116,8 @@ _PWS_AGGREGATION_INDEX = _PWI_AGGREGATION_INDEX
_PWI_POWER_CONSUMPTION_INDEX = 5
_PWS_POWER_CONSUMPTION_INDEX = _PWI_POWER_CONSUMPTION_INDEX
+_MAX_CHARGE_ERROR = 20
+
class BatteryUtils(object):
@@ -131,7 +133,6 @@ class BatteryUtils(object):
default_retries: An integer containing the default number or times an
operation should be retried on failure if no explicit
value is provided.
-
Raises:
TypeError: If it is not passed a DeviceUtils instance.
"""
@@ -441,9 +442,14 @@ class BatteryUtils(object):
Args:
level: level of charge to wait for.
wait_period: time in seconds to wait between checking.
+ Raises:
+ device_errors.DeviceChargingError: If error while charging is detected.
"""
self.SetCharging(True)
-
+ charge_status = {
+ 'charge_failure_count': 0,
+ 'last_charge_value': 0
+ }
def device_charged():
battery_level = self.GetBatteryInfo().get('level')
if battery_level is None:
@@ -452,6 +458,19 @@ class BatteryUtils(object):
else:
logging.info('current battery level: %s', battery_level)
battery_level = int(battery_level)
+
+ # Use > so that it will not reset if charge is going down.
+ if battery_level > charge_status['last_charge_value']:
+ charge_status['last_charge_value'] = battery_level
+ charge_status['charge_failure_count'] = 0
+ else:
+ charge_status['charge_failure_count'] += 1
+
+ if (not battery_level >= level
+ and charge_status['charge_failure_count'] >= _MAX_CHARGE_ERROR):
+ raise device_errors.DeviceChargingError(
+ 'Device not charging properly. Current level:%s Previous level:%s'
+ % (battery_level, charge_status['last_charge_value']))
return battery_level >= level
timeout_retry.WaitFor(device_charged, wait_period=wait_period)
« no previous file with comments | « no previous file | devil/devil/android/battery_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698