From 328fb8b971883cc45568b5937551ff98c949eba5 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Fri, 22 Jan 2010 10:06:15 -0800 Subject: [PATCH] Adding support for arbitrary VM args in dalvik runner. --- libcore/tools/runner/java/dalvik/runner/DalvikRunner.java | 14 +++++++++++--- .../tools/runner/java/dalvik/runner/DeviceDalvikVm.java | 7 ++++--- libcore/tools/runner/java/dalvik/runner/JavaVm.java | 7 ++++--- libcore/tools/runner/java/dalvik/runner/Strings.java | 2 +- libcore/tools/runner/java/dalvik/runner/Vm.java | 15 ++++++++++++--- 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java b/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java index 5c5075ab8..84d54ef6f 100644 --- a/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java +++ b/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java @@ -41,6 +41,7 @@ public final class DalvikRunner { private Set expectationFiles = new LinkedHashSet(); private File xmlReportsDirectory; private String javaHome; + private List vmArgs = new ArrayList(); private boolean clean = true; private String deviceRunnerDir = "/sdcard/dalvikrunner"; private List testFiles = new ArrayList(); @@ -99,6 +100,9 @@ public final class DalvikRunner { } else if ("--verbose".equals(args[i])) { Logger.getLogger("dalvik.runner").setLevel(Level.FINE); + } else if ("--vm-arg".equals(args[i])) { + vmArgs.add(args[++i]); + } else if ("--xml-reports-directory".equals(args[i])) { xmlReportsDirectory = new File(args[++i]); if (!xmlReportsDirectory.isDirectory()) { @@ -163,6 +167,9 @@ public final class DalvikRunner { System.out.println(" test before the runner aborts it."); System.out.println(" Default is: " + timeoutSeconds); System.out.println(); + System.out.println(" --vm-arg : include the specified argument when spawning a"); + System.out.println(" virtual machine. Examples: -Xint:fast, -ea, -Xmx16M"); + System.out.println(); System.out.println(" --xml-reports-directory : directory to emit JUnit-style"); System.out.println(" XML test results."); System.out.println(); @@ -172,9 +179,10 @@ public final class DalvikRunner { private void run() throws Exception { Vm vm = javaHome != null - ? new JavaVm(debugPort, timeoutSeconds, sdkJar, localTemp, javaHome, clean) - : new DeviceDalvikVm(debugPort, timeoutSeconds, sdkJar, localTemp, - clean, deviceRunnerDir); + ? new JavaVm(debugPort, timeoutSeconds, sdkJar, localTemp, + javaHome, vmArgs, clean) + : new DeviceDalvikVm(debugPort, timeoutSeconds, sdkJar, + localTemp, vmArgs, clean, deviceRunnerDir); List codeFinders = Arrays.asList( new JtregFinder(localTemp), new JUnitFinder(), diff --git a/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java b/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java index d95e9481d..47db11f2a 100644 --- a/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java +++ b/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java @@ -17,6 +17,7 @@ package dalvik.runner; import java.io.File; +import java.util.List; import java.util.logging.Logger; /** @@ -36,9 +37,9 @@ final class DeviceDalvikVm extends Vm { private final Adb adb = new Adb(); - DeviceDalvikVm(Integer debugPort, long timeoutSeconds, - File sdkJar, File localTemp, boolean clean, String runnerDir) { - super(debugPort, timeoutSeconds, sdkJar, localTemp, clean); + DeviceDalvikVm(Integer debugPort, long timeoutSeconds, File sdkJar, + File localTemp, List additionalVmArgs, boolean clean, String runnerDir) { + super(debugPort, timeoutSeconds, sdkJar, localTemp, additionalVmArgs, clean); this.runnerDir = new File(runnerDir); this.testTemp = new File(this.runnerDir, "/tests.tmp"); diff --git a/libcore/tools/runner/java/dalvik/runner/JavaVm.java b/libcore/tools/runner/java/dalvik/runner/JavaVm.java index c1eab3ef9..8b53477bc 100644 --- a/libcore/tools/runner/java/dalvik/runner/JavaVm.java +++ b/libcore/tools/runner/java/dalvik/runner/JavaVm.java @@ -17,6 +17,7 @@ package dalvik.runner; import java.io.File; +import java.util.List; /** * A local Java virtual machine like Harmony or the RI. @@ -25,9 +26,9 @@ final class JavaVm extends Vm { private final String javaHome; - JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, - File localTemp, String javaHome, boolean clean) { - super(debugPort, timeoutSeconds, sdkJar, localTemp, clean); + JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, File localTemp, + String javaHome, List additionalVmArgs, boolean clean) { + super(debugPort, timeoutSeconds, sdkJar, localTemp, additionalVmArgs, clean); this.javaHome = javaHome; } diff --git a/libcore/tools/runner/java/dalvik/runner/Strings.java b/libcore/tools/runner/java/dalvik/runner/Strings.java index 741af1886..e6968416d 100644 --- a/libcore/tools/runner/java/dalvik/runner/Strings.java +++ b/libcore/tools/runner/java/dalvik/runner/Strings.java @@ -20,8 +20,8 @@ package dalvik.runner; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; -import java.io.InputStreamReader; import java.io.IOException; +import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; diff --git a/libcore/tools/runner/java/dalvik/runner/Vm.java b/libcore/tools/runner/java/dalvik/runner/Vm.java index 52bf5f6e9..3d66fce49 100644 --- a/libcore/tools/runner/java/dalvik/runner/Vm.java +++ b/libcore/tools/runner/java/dalvik/runner/Vm.java @@ -19,7 +19,9 @@ package dalvik.runner; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -61,6 +63,7 @@ public abstract class Vm { = Executors.newFixedThreadPool(1, Threads.daemonThreadFactory()); protected final Integer debugPort; + protected final List additionalVmArgs; protected final long timeoutSeconds; protected final File sdkJar; protected final File localTemp; @@ -70,11 +73,12 @@ public abstract class Vm { private Classpath testRunnerClasses; Vm(Integer debugPort, long timeoutSeconds, File sdkJar, File localTemp, - boolean clean) { + List additionalVmArgs, boolean clean) { this.debugPort = debugPort; this.timeoutSeconds = timeoutSeconds; this.sdkJar = sdkJar; this.localTemp = localTemp; + this.additionalVmArgs = additionalVmArgs; this.clean = clean; } @@ -230,6 +234,7 @@ public abstract class Vm { .classpath(getRuntimeSupportClasspath()) .userDir(testRun.getUserDir()) .debugPort(debugPort) + .vmArgs(additionalVmArgs) .mainClass(testRun.getTestRunner().getName()) .build(); @@ -305,7 +310,7 @@ public abstract class Vm { private Integer debugPort; private String mainClass; private List vmCommand = Collections.singletonList("java"); - private List vmArgs = Collections.emptyList(); + private List vmArgs = new ArrayList(); public VmCommandBuilder vmCommand(String... vmCommand) { this.vmCommand = Arrays.asList(vmCommand.clone()); @@ -343,7 +348,11 @@ public abstract class Vm { } public VmCommandBuilder vmArgs(String... vmArgs) { - this.vmArgs = Arrays.asList(vmArgs.clone()); + return vmArgs(Arrays.asList(vmArgs)); + } + + public VmCommandBuilder vmArgs(Collection vmArgs) { + this.vmArgs.addAll(vmArgs); return this; } -- 2.11.0