aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBilly Lau <billylau1@gmail.com>2016-11-15 11:53:00 +0000
committerBilly Lau <billylau1@gmail.com>2016-11-15 11:53:00 +0000
commite246add2ca1c029ea927be7c0370f53405f02a86 (patch)
tree5fbe176bd9cb0c8d11145321a6baa6ed191b584c
parent112238483a2df647d2f482e26d972b70bbd7c34e (diff)
Added a retry clause when doing battery check in adb.go
Some devices may not boot up fast enough when battery check is done as it currently is in adb.go. Therefore, getBatteryLevel() is modified to take in a parameter to determine the number of times to retry before giving up.
-rw-r--r--vm/adb/adb.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/vm/adb/adb.go b/vm/adb/adb.go
index 49a29d418..4d5bacb6d 100644
--- a/vm/adb/adb.go
+++ b/vm/adb/adb.go
@@ -259,7 +259,7 @@ func (inst *instance) checkBatteryLevel() error {
minLevel = 20
requiredLevel = 30
)
- val, err := inst.getBatteryLevel()
+ val, err := inst.getBatteryLevel(3)
if err != nil {
return err
}
@@ -272,7 +272,7 @@ func (inst *instance) checkBatteryLevel() error {
if !vm.SleepInterruptible(time.Minute) {
return nil
}
- val, err = inst.getBatteryLevel()
+ val, err = inst.getBatteryLevel(0)
if err != nil {
return err
}
@@ -283,10 +283,20 @@ func (inst *instance) checkBatteryLevel() error {
return nil
}
-func (inst *instance) getBatteryLevel() (int, error) {
+func (inst *instance) getBatteryLevel(numRetry int) (int, error) {
out, err := inst.adb("shell", "dumpsys battery | grep level:")
- if err != nil {
- return 0, err
+
+ // allow for retrying for devices that does not boot up so fast
+ for ; numRetry >= 0 && err != nil; numRetry-- {
+ if numRetry > 0 {
+ // sleep for 5 seconds before retrying
+ time.Sleep(5 * time.Second)
+ out, err = inst.adb("shell", "dumpsys battery | grep level:")
+ } else {
+ if err != nil {
+ return 0, err
+ }
+ }
}
val := 0
for _, c := range out {