aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-01-20 13:58:57 +0100
committerDmitry Vyukov <dvyukov@google.com>2016-01-20 13:58:57 +0100
commit8cff5843fb3bbbc1342cf3aafbff953f4477761f (patch)
tree4b0588bf60a8110f70cde42051a526021c496542 /vm
parentaa1b7fe3a884674848f5f5a8edb4a9ad981fcad2 (diff)
vm/adb: use a more reliable way to reboot devices
Diffstat (limited to 'vm')
-rw-r--r--vm/adb/adb.go9
-rw-r--r--vm/vm.go1
2 files changed, 8 insertions, 2 deletions
diff --git a/vm/adb/adb.go b/vm/adb/adb.go
index 5fa3d17dd..5508667c0 100644
--- a/vm/adb/adb.go
+++ b/vm/adb/adb.go
@@ -74,9 +74,14 @@ func (inst *instance) adbOK() error {
}
func (inst *instance) adbReboot() error {
- if _, err := inst.adb("reboot"); err != nil {
- return fmt.Errorf("adb reboot failed: %v", err)
+ // adb reboot episodically hangs, so we use a more reliable way.
+ if _, err := inst.adb("push", inst.cfg.Executor, "/data/syz-executor"); err != nil {
+ return err
}
+ if _, err := inst.adb("shell", "/data/syz-executor", "reboot"); err != nil {
+ return err
+ }
+ time.Sleep(10 * time.Second)
for i := 0; i < 300; i++ {
time.Sleep(time.Second)
if inst.adbOK() == nil {
diff --git a/vm/vm.go b/vm/vm.go
index a3b077fd6..8ac190264 100644
--- a/vm/vm.go
+++ b/vm/vm.go
@@ -37,6 +37,7 @@ type Config struct {
Cmdline string
Image string
Sshkey string
+ Executor string
ConsoleDev string
Cpu int
Mem int