Add minimum battery level to adb_wait_for_device
This should prevent the Android bots running out of battery at the
expense of extra time spent waiting at the end of the build.
BUG=skia:4606
Review URL: https://codereview.chromium.org/1522013002
diff --git a/platform_tools/android/bin/adb_wait_for_device b/platform_tools/android/bin/adb_wait_for_device
index 0b640d2..882cd3f 100755
--- a/platform_tools/android/bin/adb_wait_for_device
+++ b/platform_tools/android/bin/adb_wait_for_device
@@ -1,14 +1,39 @@
#!/bin/bash
#
-# Wait for the device to be both attached and booted.
+# Wait for the device to be ready to run tests.
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $SCRIPT_DIR/android_setup.sh
source $SCRIPT_DIR/utils/setup_adb.sh
-set -e
-set -x
+function get_battery_level {
+ STATS="$($ADB $DEVICE_SERIAL shell dumpsys batteryproperties)"
+ SPLIT=( $STATS )
+ for i in "${!SPLIT[@]}"; do
+ if [ "${SPLIT[$i]}" = "level:" ]; then
+ echo "${SPLIT[$i+1]}"
+ return
+ fi
+ done
+ echo "Could not determine battery level!" 1>&2
+ echo "0"
+}
+set -e
+
+# Wait for the device to be connected and fully booted.
while [ "$($ADB $DEVICE_SERIAL shell getprop sys.boot_completed | tr -d '\r')" != "1" ]; do
+ echo "Waiting for the device to be connected and ready."
sleep 5
done
+
+# Wait for battery charge.
+DESIRED_BATTERY_LEVEL=30
+CURRENT_BATTERY_LEVEL="$(get_battery_level)"
+while [ "${CURRENT_BATTERY_LEVEL}" -lt "${DESIRED_BATTERY_LEVEL}" ]; do
+ echo "Battery level is ${CURRENT_BATTERY_LEVEL}; waiting to charge to ${DESIRED_BATTERY_LEVEL}"
+ sleep 5
+ CURRENT_BATTERY_LEVEL="$(get_battery_level)"
+done
+
+echo "Ready!"