Use TargetPort for both host- and device-side ports on Android
This requires support for "port" intent extra from Android
ServiceStarter.
Bug: 23429375
diff --git a/cherry/adb.go b/cherry/adb.go
index 2f1bb75..290e24d 100644
--- a/cherry/adb.go
+++ b/cherry/adb.go
@@ -338,17 +338,19 @@
}()
}
-func LaunchAndroidExecServer (adbSerialNumber string, localPort int) error {
+func LaunchAndroidExecServer (adbSerialNumber string, port int) error {
+ portSpec := "tcp:" + strconv.Itoa(port)
+
return runCommands(
- exec.Command("adb", "-s", adbSerialNumber, "forward", "tcp:" + strconv.Itoa(localPort), "tcp:50016"),
+ exec.Command("adb", "-s", adbSerialNumber, "forward", portSpec, portSpec),
exec.Command("adb", "-s", adbSerialNumber, "shell", "setprop", "log.tag.dEQP", "DEBUG"),
- exec.Command("adb", "-s", adbSerialNumber, "shell", "am", "start", "-n", "com.drawelements.deqp/.execserver.ServiceStarter"),
+ exec.Command("adb", "-s", adbSerialNumber, "shell", "am", "start", "-n", "com.drawelements.deqp/.execserver.ServiceStarter", "--ei", "port", strconv.Itoa(port)),
)
}
-func RelaunchAndroidExecServer (adbSerialNumber string) error {
+func RelaunchAndroidExecServer (adbSerialNumber string, port int) error {
return runCommands(
- exec.Command("adb", "-s", adbSerialNumber, "shell", "am", "start", "-n", "com.drawelements.deqp/.execserver.ServiceStarter"),
+ exec.Command("adb", "-s", adbSerialNumber, "shell", "am", "start", "-n", "com.drawelements.deqp/.execserver.ServiceStarter", "--ei", "port", strconv.Itoa(port)),
)
}
diff --git a/cherry/testrunner.go b/cherry/testrunner.go
index 351db92..f210938 100644
--- a/cherry/testrunner.go
+++ b/cherry/testrunner.go
@@ -341,7 +341,7 @@
// If previous error was link error, relaunch execserver just to be sure
if executionStatus == BATCH_EXEC_STATUS_LINK_ERROR && deviceConfig.IsADBDevice {
appendRunnerLogLine("Relaunching execserver")
- err := RelaunchAndroidExecServer(deviceConfig.ADBSerialNumber)
+ err := RelaunchAndroidExecServer(deviceConfig.ADBSerialNumber, batchParams.TargetPort)
if err != nil {
appendRunnerLogLine(fmt.Sprintf("Failed to relaunch ExecServer on Android via ADB: %v", err))
continue // Just try again, if tries left