Merge "Start using the new multi-tenant option"
diff --git a/device_build_interfaces/com/android/tradefed/device/TestDeviceOptions.java b/device_build_interfaces/com/android/tradefed/device/TestDeviceOptions.java
index 329de8e..0d10607 100644
--- a/device_build_interfaces/com/android/tradefed/device/TestDeviceOptions.java
+++ b/device_build_interfaces/com/android/tradefed/device/TestDeviceOptions.java
@@ -593,6 +593,11 @@
return mGceDriverParams;
}
+ /** Add a param to the gce driver params. */
+ public void addGceDriverParams(String param) {
+ mGceDriverParams.add(param);
+ }
+
/** Set the GCE driver parameter that should be paired with the build id from build info */
public void setGceDriverBuildIdParam(String gceDriverBuildIdParam) {
mGceDriverBuildIdParam = gceDriverBuildIdParam;
diff --git a/src/com/android/tradefed/invoker/InvocationExecution.java b/src/com/android/tradefed/invoker/InvocationExecution.java
index fedee05..9e53af4 100644
--- a/src/com/android/tradefed/invoker/InvocationExecution.java
+++ b/src/com/android/tradefed/invoker/InvocationExecution.java
@@ -330,6 +330,7 @@
public final void runDevicePreInvocationSetup(
IInvocationContext context, IConfiguration config, ITestLogger logger)
throws DeviceNotAvailableException, TargetSetupError {
+ customizeDevicePreInvocation(config, context);
for (String deviceName : context.getDeviceConfigNames()) {
ITestDevice device = context.getDevice(deviceName);
@@ -346,6 +347,16 @@
}
}
+ /**
+ * Give a chance to customize some of the device before preInvocationSetup.
+ *
+ * @param config The config of the invocation.
+ * @param context The current invocation context.
+ */
+ protected void customizeDevicePreInvocation(IConfiguration config, IInvocationContext context) {
+ // Empty by default
+ }
+
/** {@inheritDoc} */
@Override
public final void runDevicePostInvocationTearDown(
diff --git a/src/com/android/tradefed/invoker/RemoteInvocationExecution.java b/src/com/android/tradefed/invoker/RemoteInvocationExecution.java
index 99d9ab2..56fdb7c 100644
--- a/src/com/android/tradefed/invoker/RemoteInvocationExecution.java
+++ b/src/com/android/tradefed/invoker/RemoteInvocationExecution.java
@@ -30,6 +30,7 @@
import com.android.tradefed.config.OptionSetter;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.DeviceSelectionOptions;
+import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.device.TestDeviceOptions;
import com.android.tradefed.device.cloud.GceAvdInfo;
import com.android.tradefed.device.cloud.GceManager;
@@ -117,6 +118,21 @@
}
@Override
+ protected void customizeDevicePreInvocation(IConfiguration config, IInvocationContext context) {
+ super.customizeDevicePreInvocation(config, context);
+
+ if (config.getCommandOptions().getShardCount() != null
+ && config.getCommandOptions().getShardIndex() == null) {
+ ITestDevice device = context.getDevices().get(0);
+ TestDeviceOptions options = device.getOptions();
+ // Trigger the multi-tenant start in the VM
+ options.addGceDriverParams("--num-avds-per-instance");
+ options.addGceDriverParams(config.getCommandOptions().getShardCount().toString());
+ // TODO: Track how many instances we created
+ }
+ }
+
+ @Override
public void runTests(
TestInformation info, IConfiguration config, ITestInvocationListener listener)
throws Throwable {