aboutsummaryrefslogtreecommitdiffstats
path: root/vm/isolated
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-05-06 14:24:42 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-05-06 14:24:42 +0200
commit037b77dc65b054baa4bd72db8a4f4940d87b695d (patch)
tree544ff5cb867f3bbd192c74d1545385ca89713d2d /vm/isolated
parent6c18ddb0e6d4133b05c18275b062808dadc2d294 (diff)
vm/{adb,isolated}: dudup common code
Found with gometalinter/dupl. Update #538
Diffstat (limited to 'vm/isolated')
-rw-r--r--vm/isolated/isolated.go38
1 files changed, 1 insertions, 37 deletions
diff --git a/vm/isolated/isolated.go b/vm/isolated/isolated.go
index 4a6bf7fe6..86adb80dc 100644
--- a/vm/isolated/isolated.go
+++ b/vm/isolated/isolated.go
@@ -305,43 +305,7 @@ func (inst *instance) Run(timeout time.Duration, stop <-chan bool, command strin
merger.Add("dmesg", dmesg)
merger.Add("ssh", rpipe)
- errc := make(chan error, 1)
- signal := func(err error) {
- select {
- case errc <- err:
- default:
- }
- }
-
- go func() {
- select {
- case <-time.After(timeout):
- signal(vmimpl.ErrTimeout)
- case <-stop:
- signal(vmimpl.ErrTimeout)
- case <-inst.closed:
- if inst.debug {
- log.Logf(0, "instance closed")
- }
- signal(fmt.Errorf("instance closed"))
- case err := <-merger.Err:
- cmd.Process.Kill()
- dmesg.Close()
- merger.Wait()
- if cmdErr := cmd.Wait(); cmdErr == nil {
- // If the command exited successfully, we got EOF error from merger.
- // But in this case no error has happened and the EOF is expected.
- err = nil
- }
- signal(err)
- return
- }
- cmd.Process.Kill()
- dmesg.Close()
- merger.Wait()
- cmd.Wait()
- }()
- return merger.Output, errc, nil
+ return vmimpl.Multiplex(cmd, merger, dmesg, timeout, stop, inst.closed, inst.debug)
}
func (inst *instance) sshArgs(portArg string) []string {