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