summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2010-03-12 13:27:03 -0800
committerBrian Carlstrom <bdc@google.com>2010-03-16 16:45:00 -0700
commit5433932a79aa6e60c901312311873747ec34ca09 (patch)
treedd311320acfdfd112401e022a441cbdfc3a9b901 /tools
parentf85e98f54ce3f93031ad0106413d0cfa201ae6d3 (diff)
downloadlibcore-5433932a79aa6e60c901312311873747ec34ca09.zip
libcore-5433932a79aa6e60c901312311873747ec34ca09.tar.gz
libcore-5433932a79aa6e60c901312311873747ec34ca09.tar.bz2
misc DalvikRunner changes
Summary: - "vogar --debug-port <port>" now overrides --timeout-seconds to be zero to prevent timeouts during interactive debugging - "vogar --timeout-seconds 0" now disables timeout as a side-effect of the previous change - "vogar" no longer defaults to "javac -Xmaxerrs 1" This is to make using vogar's output more useful when iteratively developing tests. continuous build needs to use "vogar --javac-arg -Xmaxerrs --javac-arg 1" - "vogar --ident ''" allows disabling of output formating This prevents output parsing problems for Emacs *compilation* buffers Change-Id: I599590c9c4fe3c57524af5c4d7f2be2e30ad4685
Diffstat (limited to 'tools')
-rw-r--r--tools/runner/java/dalvik/runner/ActivityMode.java7
-rw-r--r--tools/runner/java/dalvik/runner/Command.java3
-rw-r--r--tools/runner/java/dalvik/runner/DalvikRunner.java27
-rw-r--r--tools/runner/java/dalvik/runner/DeviceDalvikVm.java8
-rw-r--r--tools/runner/java/dalvik/runner/Driver.java12
-rw-r--r--tools/runner/java/dalvik/runner/JavaVm.java8
-rw-r--r--tools/runner/java/dalvik/runner/Javac.java7
-rw-r--r--tools/runner/java/dalvik/runner/Mode.java6
-rw-r--r--tools/runner/java/dalvik/runner/Vm.java4
9 files changed, 61 insertions, 21 deletions
diff --git a/tools/runner/java/dalvik/runner/ActivityMode.java b/tools/runner/java/dalvik/runner/ActivityMode.java
index 163c72a..9adbcd1 100644
--- a/tools/runner/java/dalvik/runner/ActivityMode.java
+++ b/tools/runner/java/dalvik/runner/ActivityMode.java
@@ -38,11 +38,12 @@ final class ActivityMode extends Mode {
private static final String TEST_ACTIVITY_CLASS = "dalvik.runner.TestActivity";
- ActivityMode(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee, File localTemp,
- boolean cleanBefore, boolean cleanAfter, File deviceRunnerDir) {
+ ActivityMode(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs,
+ PrintStream tee, File localTemp, boolean cleanBefore, boolean cleanAfter,
+ File deviceRunnerDir) {
super(new EnvironmentDevice(cleanBefore, cleanAfter,
debugPort, localTemp, deviceRunnerDir),
- timeoutSeconds, sdkJar, tee);
+ timeoutSeconds, sdkJar, javacArgs, tee);
}
private EnvironmentDevice getEnvironmentDevice() {
diff --git a/tools/runner/java/dalvik/runner/Command.java b/tools/runner/java/dalvik/runner/Command.java
index 88ba38e..7b9a9f4 100644
--- a/tools/runner/java/dalvik/runner/Command.java
+++ b/tools/runner/java/dalvik/runner/Command.java
@@ -155,6 +155,9 @@ final class Command {
return gatherOutput();
}
});
+ if (timeoutSeconds == 0) {
+ return future.get();
+ }
return future.get(timeoutSeconds, TimeUnit.SECONDS);
} catch (IOException e) {
throw new RuntimeException("Failed to execute process: " + args, e);
diff --git a/tools/runner/java/dalvik/runner/DalvikRunner.java b/tools/runner/java/dalvik/runner/DalvikRunner.java
index c78866e..34331f2 100644
--- a/tools/runner/java/dalvik/runner/DalvikRunner.java
+++ b/tools/runner/java/dalvik/runner/DalvikRunner.java
@@ -73,6 +73,9 @@ public final class DalvikRunner {
@Option(names = { "--xml-reports-directory" })
private File xmlReportsDirectory;
+ @Option(names = { "--indent" })
+ private String indent = " ";
+
@Option(names = { "--verbose" })
private boolean verbose;
@@ -92,6 +95,9 @@ public final class DalvikRunner {
@Option(names = { "--java-home" })
private File javaHome;
+ @Option(names = { "--javac-arg" })
+ private List<String> javacArgs = new ArrayList<String>();
+
@Option(names = { "--sdk" })
private File sdkJar = new File("/home/dalvik-prebuild/android-sdk-linux/platforms/android-2.0/android.jar");
@@ -128,19 +134,24 @@ public final class DalvikRunner {
System.out.println(" Specify '-' for stdout.");
System.out.println();
System.out.println(" --timeout-seconds <seconds>: maximum execution time of each");
- System.out.println(" test before the runner aborts it.");
+ System.out.println(" test before the runner aborts it. Specifying zero seconds");
+ System.out.println(" or using --debug-port will disable the execution timeout");
System.out.println(" Default is: " + timeoutSeconds);
System.out.println();
System.out.println(" --xml-reports-directory <path>: directory to emit JUnit-style");
System.out.println(" XML test results.");
System.out.println();
+ System.out.println(" --ident: amount to indent test result output. Can be set to ''");
+ System.out.println(" (aka empty string) to simplify output parsing.");
+ System.out.println(" Default is: '" + indent + "'");
+ System.out.println();
System.out.println(" --verbose: turn on verbose output");
System.out.println();
System.out.println("DEVICE OPTIONS");
System.out.println();
System.out.println(" --debug <port>: enable Java debugging on the specified port.");
System.out.println(" This port must be free both on the device and on the local");
- System.out.println(" system.");
+ System.out.println(" system. Disables the timeout specified by --timeout-seconds.");
System.out.println();
System.out.println(" --device-runner-dir <directory>: use the specified directory for");
System.out.println(" on-device temporary files and code.");
@@ -165,6 +176,9 @@ public final class DalvikRunner {
System.out.println(" a release version like 1.5.");
System.out.println(" Default is: " + sdkJar);
System.out.println();
+ System.out.println(" --javac-arg <argument>: include the specified argument when invoking");
+ System.out.println(" javac. Examples: --javac-arg -Xmaxerrs --javac-arg 1");
+ System.out.println();
}
private boolean parseArgs(String[] args) {
@@ -242,6 +256,11 @@ public final class DalvikRunner {
// Post-processing arguments
//
+ // disable timeout when debugging
+ if (debugPort != null) {
+ timeoutSeconds = 0;
+ }
+
for (String testFilename : testFilenames) {
testFiles.add(new File(testFilename));
}
@@ -293,6 +312,7 @@ public final class DalvikRunner {
options.debugPort,
options.timeoutSeconds,
options.sdkJar,
+ options.javacArgs,
options.tee,
localTemp,
options.vmArgs,
@@ -304,6 +324,7 @@ public final class DalvikRunner {
options.debugPort,
options.timeoutSeconds,
options.sdkJar,
+ options.javacArgs,
options.tee,
localTemp,
options.javaHome,
@@ -315,6 +336,7 @@ public final class DalvikRunner {
options.debugPort,
options.timeoutSeconds,
options.sdkJar,
+ options.javacArgs,
options.tee,
localTemp,
options.cleanBefore,
@@ -335,6 +357,7 @@ public final class DalvikRunner {
mode,
options.expectationFiles,
options.xmlReportsDirectory,
+ options.indent,
codeFinders);
try {
driver.loadExpectations();
diff --git a/tools/runner/java/dalvik/runner/DeviceDalvikVm.java b/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
index 061e374..e2063fc 100644
--- a/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
+++ b/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
@@ -27,11 +27,11 @@ import java.util.logging.Logger;
final class DeviceDalvikVm extends Vm {
private static final Logger logger = Logger.getLogger(DeviceDalvikVm.class.getName());
- DeviceDalvikVm(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee,
- File localTemp, List<String> additionalVmArgs,
- boolean cleanBefore, boolean cleanAfter, File runnerDir) {
+ DeviceDalvikVm(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs,
+ PrintStream tee, File localTemp, List<String> additionalVmArgs,
+ boolean cleanBefore, boolean cleanAfter, File runnerDir) {
super(new EnvironmentDevice(cleanBefore, cleanAfter, debugPort, localTemp, runnerDir),
- timeoutSeconds, sdkJar, tee, additionalVmArgs);
+ timeoutSeconds, sdkJar, javacArgs, tee, additionalVmArgs);
}
private EnvironmentDevice getEnvironmentDevice() {
diff --git a/tools/runner/java/dalvik/runner/Driver.java b/tools/runner/java/dalvik/runner/Driver.java
index 574c8cb..b91f6cd 100644
--- a/tools/runner/java/dalvik/runner/Driver.java
+++ b/tools/runner/java/dalvik/runner/Driver.java
@@ -45,6 +45,7 @@ final class Driver {
private final List<CodeFinder> codeFinders;
private final Mode mode;
private final File xmlReportsDirectory;
+ private final String indent;
private final Map<String, ExpectedResult> expectedResults = new HashMap<String, ExpectedResult>();
/**
@@ -54,11 +55,12 @@ final class Driver {
private int unsupportedTests = 0;
public Driver(File localTemp, Mode mode, Set<File> expectationFiles,
- File xmlReportsDirectory, List<CodeFinder> codeFinders) {
+ File xmlReportsDirectory, String indent, List<CodeFinder> codeFinders) {
this.localTemp = localTemp;
this.expectationFiles = expectationFiles;
this.mode = mode;
this.xmlReportsDirectory = xmlReportsDirectory;
+ this.indent = indent;
this.codeFinders = codeFinders;
}
@@ -219,16 +221,18 @@ final class Driver {
if (testRun.isExpectedResult()) {
logger.info("OK " + testRun.getQualifiedName() + " (" + testRun.getResult() + ")");
// In --verbose mode, show the output even on success.
- logger.fine(" " + testRun.getFailureMessage().replace("\n", "\n "));
+ logger.fine(indent + testRun.getFailureMessage().replace("\n", "\n" + indent));
return;
}
logger.info("FAIL " + testRun.getQualifiedName() + " (" + testRun.getResult() + ")");
String description = testRun.getDescription();
if (description != null) {
- logger.info(" \"" + description + "\"");
+ logger.info(indent + "\"" + description + "\"");
}
- logger.info(" " + testRun.getFailureMessage().replace("\n", "\n "));
+ // Don't mess with compiler error output for tools (such as
+ // Emacs) that are trying to parse it with regexps
+ logger.info(indent + testRun.getFailureMessage().replace("\n", "\n" + indent));
}
}
diff --git a/tools/runner/java/dalvik/runner/JavaVm.java b/tools/runner/java/dalvik/runner/JavaVm.java
index 38e0386..cc4ee46 100644
--- a/tools/runner/java/dalvik/runner/JavaVm.java
+++ b/tools/runner/java/dalvik/runner/JavaVm.java
@@ -28,11 +28,11 @@ final class JavaVm extends Vm {
private final File javaHome;
- JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, PrintStream tee,
- File localTemp, File javaHome, List<String> additionalVmArgs,
- boolean cleanBefore, boolean cleanAfter) {
+ JavaVm(Integer debugPort, long timeoutSeconds, File sdkJar, List<String> javacArgs,
+ PrintStream tee, File localTemp, File javaHome, List<String> additionalVmArgs,
+ boolean cleanBefore, boolean cleanAfter) {
super(new EnvironmentHost(cleanBefore, cleanAfter, debugPort, localTemp),
- timeoutSeconds, sdkJar, tee, additionalVmArgs);
+ timeoutSeconds, sdkJar, javacArgs, tee, additionalVmArgs);
this.javaHome = javaHome;
}
diff --git a/tools/runner/java/dalvik/runner/Javac.java b/tools/runner/java/dalvik/runner/Javac.java
index 26e8bb9..82a4ea1 100644
--- a/tools/runner/java/dalvik/runner/Javac.java
+++ b/tools/runner/java/dalvik/runner/Javac.java
@@ -29,7 +29,7 @@ final class Javac {
private final Command.Builder builder = new Command.Builder();
Javac() {
- builder.args("javac", "-Xmaxerrs", "1");
+ builder.args("javac");
}
public Javac bootClasspath(File... path) {
@@ -56,6 +56,11 @@ final class Javac {
return this;
}
+ public Javac extra(List<String> extra) {
+ builder.args(extra);
+ return this;
+ }
+
public List<String> compile(Collection<File> files) {
return builder.args(Strings.objectsToStrings(files))
.execute();
diff --git a/tools/runner/java/dalvik/runner/Mode.java b/tools/runner/java/dalvik/runner/Mode.java
index 3b69cb2..c0c64cc 100644
--- a/tools/runner/java/dalvik/runner/Mode.java
+++ b/tools/runner/java/dalvik/runner/Mode.java
@@ -45,6 +45,7 @@ abstract class Mode {
protected final Environment environment;
protected final long timeoutSeconds;
protected final File sdkJar;
+ protected final List<String> javacArgs;
protected final PrintStream tee;
/**
@@ -74,10 +75,11 @@ abstract class Mode {
// TODO: jar up just the junit classes and drop the jar in our lib/ directory.
new File("out/target/common/obj/JAVA_LIBRARIES/core-tests-luni_intermediates/classes.jar").getAbsoluteFile());
- Mode(Environment environment, long timeoutSeconds, File sdkJar, PrintStream tee) {
+ Mode(Environment environment, long timeoutSeconds, File sdkJar, List<String> javacArgs, PrintStream tee) {
this.environment = environment;
this.timeoutSeconds = timeoutSeconds;
this.sdkJar = sdkJar;
+ this.javacArgs = javacArgs;
this.tee = tee;
}
@@ -120,6 +122,7 @@ abstract class Mode {
.classpath(classpath)
.sourcepath(DalvikRunner.HOME_JAVA)
.destination(base)
+ .extra(javacArgs)
.compile(testRunnerJava);
postCompileTestRunner();
}
@@ -191,6 +194,7 @@ abstract class Mode {
.classpath(classpath)
.sourcepath(testRun.getTestDirectory())
.destination(testClassesDir)
+ .extra(javacArgs)
.compile(sourceFiles);
postCompileTest(testRun);
return true;
diff --git a/tools/runner/java/dalvik/runner/Vm.java b/tools/runner/java/dalvik/runner/Vm.java
index 8ff5858..5aaafb3 100644
--- a/tools/runner/java/dalvik/runner/Vm.java
+++ b/tools/runner/java/dalvik/runner/Vm.java
@@ -40,9 +40,9 @@ public abstract class Vm extends Mode {
protected final List<String> additionalVmArgs;
- Vm(Environment environment, long timeoutSeconds, File sdkJar,
+ Vm(Environment environment, long timeoutSeconds, File sdkJar, List<String> javacArgs,
PrintStream tee, List<String> additionalVmArgs) {
- super(environment, timeoutSeconds, sdkJar, tee);
+ super(environment, timeoutSeconds, sdkJar, javacArgs,tee);
this.additionalVmArgs = additionalVmArgs;
}