summaryrefslogtreecommitdiffstats
path: root/tools/runner
Commit message (Collapse)AuthorAgeFilesLines
* Add a simple MD5-based cache to DalvikRunner.Elliott Hughes2010-02-183-9/+147
| | | | | | | This makes the new simpler scheme pretty much free. I've also made a start on simplifying the make rules, though there's more we can do, and I'll look at that next.
* Make DalvikRunner work on production devices too.Elliott Hughes2010-02-1712-28/+494
| | | | | | | | | | | | | | | | | Place pre-built .jar files in our lib/ directory, and dex/push them on demand. Change DalvikRunner to somewhat reduce the number of different classpaths in play. My feeling is that we just want one true classpath: we should build with it on the host, we should run with it on the host, we should dex everything on it, we should upload everything to the device, and we should run with it on the device. Also add a convenience script for running DalvikRunner. ("Vogar" is the proposed open source name for DalvikRunner, which really isn't as dalvikvm-specific as the name might imply.) There's a noticeable performance regression here, so my next change will be to add a cache.
* Reverting our test runner's background building behaviour.Jesse Wilson2010-02-161-20/+9
| | | | | | | | | | | | | | | | Our continuous build has been failing to complete lately. See: http://jwilson.mtv.corp.google.com:8080/job/master_passion/274/consoleFull In addition to this problem the continuous build is compiling many more tests ahead-of-time than we were originally - previously we would only have up to 4 tests ready-to-run at any given time. With this change the ExecutorCompletionService was building and installing all of the tests eagerly. I believe the problem might be a mismatch between how the BlockingQueue and the ExecutorCompletionService select which order to return futures. By removing the ExecutorCompletionService I remove the opportunity for such a conflict!
* Make DalvikRunner more resilient to running immediately after device rebootBrian Carlstrom2010-02-114-20/+79
| | | | | | | | | | | | | | | | | Changed EnvironmentDevice.prepare to waitForDevice and waitForNonEmptyDirectory("/sdcard") before proceeding to fix problem with running immediately after "fastboot flashall" dalvik/libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java Added Adb.waitForDevice and Adb.waitForNonEmptyDirectory dalvik/libcore/tools/runner/java/dalvik/runner/Adb.java Added Command.executeWithTimeout based on code refactored from Mode.java dalvik/libcore/tools/runner/java/dalvik/runner/Command.java dalvik/libcore/tools/runner/java/dalvik/runner/Mode.java
* Fix NamingPatternCodeFinder to detect final classesBrian Carlstrom2010-02-101-1/+1
|
* Remove TestRunner.success field / Make postCompileTest return voidBrian Carlstrom2010-02-1024-126/+198
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SUMMARY: - Change TestRunner subclasses to instead implement a Runner interface - Cleanup runtime classpath generation - Misc improvements DETAILS: Change TestRunner subclasses to instead implement a Runner interface *Runner classes now implement the new Runner interface instead of extending TestRunner. prepareTest/test now take a "Class testClass" instead of accessing a "String testClass" from the superclass. This also means that all their "static void main" methods are removed and replaced with a single main method in TestRunner. TestActivity can now instantiate a TestRunner and call its "boolean run()" method to execute tests and retrieve their SUCCESS/FAILURE status via the return value, allowing the removeal of TestRunner.success. Mode now needs to explicitly include TestRunner.java in the list of code to compile because it no longer is implicitly found by compiling its former subclasses. java/dalvik/runner/TestRunner.java java/dalvik/runner/Runner.java java/dalvik/runner/CaliperRunner.java java/dalvik/runner/JUnitRunner.java java/dalvik/runner/JtregRunner.java java/dalvik/runner/MainRunner.java java/dalvik/runner/Mode.java CodeFinder.getRunnerClass now returns a Runner, not a TestRunner java/dalvik/runner/CodeFinder.java java/dalvik/runner/JUnitFinder.java java/dalvik/runner/CaliperFinder.java java/dalvik/runner/JtregFinder.java java/dalvik/runner/MainFinder.java Similarly, TestRun.runnerClass is now a Runner, not a TestRunner java/dalvik/runner/TestRun.java Move logic to run a test based on TestProperties.RUNNER_CLASS from TestActivity to TestRunner since its now used in all cases, not just the Activity case. TestActivity.ActivityRunner remains the one subclass of TestRunner, accessing the TestRunner.run(...) logic via super.run(...), allowing it to maintain its special result file writing logic. java/dalvik/runner/TestActivity.java java/dalvik/runner/TestRunner.java Moved writing of TestProperties.RUNNER_CLASS from ActivityMode now that it is used for all Modes. java/dalvik/runner/ActivityMode.java java/dalvik/runner/Mode.java Since CaliperRunner now has a "Class testClass", it uses the more strongly typed Runner.main(Class<? extends Benchmark>, ...) API. java/dalvik/runner/CaliperRunner.java Fixing javadoc TestRunner->Runner java/dalvik/runner/TestProperties.java Adding new Runner class to the build. Android.mk Cleanup runtime classpath generation Changed Mode.postCompileTest to return void instead of Classpath to match Most.postCompileTestRunner. Removed passing test classpath from compile to run via TestRun.testClasspath. Instead, Vm.getRuntimeSupportClasspath now is used to compute full classpath, instead of using the old TestRun.getTestClasspath in Mode. Mode.compileTest now uses a boolean to indicate compilation success, instead of null/non-null Classpath. TestRun.testClasspath is now replaced with TestRun.testCompiled which is used to track compilation success. In retrospect, it seems like using the absense of a Classpath as an indication of compilation success/failure seems like somewhat of a hack. java/dalvik/runner/Mode.java java/dalvik/runner/ActivityMode.java java/dalvik/runner/DeviceDalvikVm.java java/dalvik/runner/JavaVm.java java/dalvik/runner/TestRun.java New deviceDexFile to make sure dex file name generation stays consistent between build time and compile time. java/dalvik/runner/DeviceDalvikVm.java Changed MainRunner implementation to more closely match JtregRunner java/dalvik/runner/MainRunner.java Misc improvements Changed TestActivity to use a shutdown hook to catch when a test calls System.exit so we can be sure to write a result file and not simply wait for the timeout to catch our failure to return. java/dalvik/runner/TestActivity.java Changed Mkdir.mkdirs to use new Command().execute to get automatic logging of command execution with --verbose java/dalvik/runner/Mkdir.java Improved javadoc java/dalvik/runner/Mode.java Fixed apparently misplaced @SuppressWarnings("unchecked") java/dalvik/runner/OptionParser.java Enabling warnings as errors and turning on unchecked warnings. Android.mk Made sure test script works with fresh device and improved logging test-dalvik-runner.sh
* DalvikRunner can run a test as an android.app.Activity & ↵Brian Carlstrom2010-02-0934-391/+1369
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PathClassLoader.toString change SUMMARY: - PathClassLoader.toString prints path - DalvikRunner --mode activity now working - new DalvikRunner --no-clean vs --no-clean-after behavior DETAILS Dalvik runtime change Changed PathClassLoader.toString to print the class loaders path Also fixed variable name in commented out debug code libcore/dalvik/src/main/java/dalvik/system/PathClassLoader.java Dalvik Runner changes Mode is the new abstract superclass of the existing Vm class. ActivityMode is for the new Mode of running as a Activity on the device. Vm is now a subclass of Mode and its JavaVm and DeviceDalvikVm still exist although some code has been refactored into the new Environment clases (see below) libcore/tools/runner/java/dalvik/runner/Mode.java libcore/tools/runner/java/dalvik/runner/ActivityMode.java libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java libcore/tools/runner/java/dalvik/runner/JavaVm.java libcore/tools/runner/java/dalvik/runner/Vm.java Environment and its subclasses EnvironmentHost and EnvironmentDevice allow us to reuse some common code between the two different device modes (ActivityMode and DeviceDalvikVm). Basically code that was more about where and how to do things based on where the code was running as opposed to how the code was running moved to the Environment classes. For example, prepare() logic for /sdcard/ and ADB code in general. libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java libcore/tools/runner/java/dalvik/runner/Environment.java libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java libcore/tools/runner/java/dalvik/runner/EnvironmentHost.java libcore/tools/runner/java/dalvik/runner/JavaVm.java libcore/tools/runner/java/dalvik/runner/Vm.java Adding new files libcore/tools/runner/Android.mk Aapt is a wrapper for "aapt" similar to Adb and Dx libcore/tools/runner/java/dalvik/runner/Aapt.java Added Adb.install and Adb.uninstall methods Changed from using File.toString to File.getPath for clarity libcore/tools/runner/java/dalvik/runner/Adb.java CodeFinder has been extended so that Driver can ask finders what they need to build and run, specifically through the new getRunnerJava and getRunnerClasspath. (As part of this NamingPatternCodeFinder's runnerClass was changed to getRunnerClass for consistency with the superclass.) This was important for running as an Activity because we want to minimize what we pack into the APK file because of the "dx --dex" runtime and not just pull in all possible runners and supporting libraries. TestRun objects also hold onto this information from their finders. libcore/tools/runner/java/dalvik/runner/Driver.java libcore/tools/runner/java/dalvik/runner/CodeFinder.java libcore/tools/runner/java/dalvik/runner/CaliperFinder.java libcore/tools/runner/java/dalvik/runner/JUnitFinder.java libcore/tools/runner/java/dalvik/runner/JtregFinder.java libcore/tools/runner/java/dalvik/runner/MainFinder.java libcore/tools/runner/java/dalvik/runner/NamingPatternCodeFinder.java libcore/tools/runner/java/dalvik/runner/TestRun.java TestRunner TestRunner's className is now testClass to clarifiy it from the runnerClass. libcore/tools/runner/java/dalvik/runner/TestRunner.java libcore/tools/runner/java/dalvik/runner/CaliperRunner.java libcore/tools/runner/java/dalvik/runner/JUnitRunner.java libcore/tools/runner/java/dalvik/runner/JtregRunner.java libcore/tools/runner/java/dalvik/runner/MainRunner.java Classpath now has a Collection.of and Collection.addAll that take a Collection<File> instead if just a File... libcore/tools/runner/java/dalvik/runner/Classpath.java Added Command.args(File arg) to avoid a lot of args(file.getPath()) libcore/tools/runner/java/dalvik/runner/Command.java Option --clean has expanded to --clean-before, --clean-after, and --clean. Now --no-clean will remove nothing as Elliot requested. --no-clean-after is now what is useful for DalvikRunner debuggin. Default is still to clean before and after. libcore/tools/runner/java/dalvik/runner/DalvikRunner.java Moved Vm.DALVIK_RUNNER_HOME to DalvikRunner.HOME. /tmp/<UUID> paths are now /tmp/dalvikrunner/<UUID> paths are easier cleanup. libcore/tools/runner/java/dalvik/runner/DalvikRunner.java Driver was changed to use a ExecutorCompletionService around the ExecutorService so that exceptions from the execute threads could be reported on the main thread. libcore/tools/runner/java/dalvik/runner/Driver.java We now build the testrunner before the test so that its classes will be around to be packed into APK files. libcore/tools/runner/java/dalvik/runner/Driver.java Dx.dex now takes File arguments instread of Strings. Dx.dex also needs to pass additional memory arguments to not run out of memory building the big dex for the APK. The values I used where from the build/core/definitions.mk libcore/tools/runner/java/dalvik/runner/Dx.java postCompile was split into postCompileTestRunner and postCompileTest because the packaging requires are very different in each case for ActivityMode. Specifically, the test runner is not post-packaged seperately, but packaged in the APK with each test. libcore/tools/runner/java/dalvik/runner/ActivityMode.java libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java libcore/tools/runner/java/dalvik/runner/JavaVm.java libcore/tools/runner/java/dalvik/runner/Vm.java Changed testClass to test to avoid collision with new superclass field libcore/tools/runner/java/dalvik/runner/JtregRunner.java libcore/tools/runner/java/dalvik/runner/MainRunner.java Added @SuppressWarnings("unchecked") libcore/tools/runner/java/dalvik/runner/OptionParser.java New android.app.Activity based on Elliot's TestAPK. It encapsulates an ActivityRunner that invokes the appropriate TestRunner based on test.properties. libcore/tools/runner/java/dalvik/runner/TestActivity.java New class that shared contains (old and some new) between the DalvikRunner and the TestRunner. libcore/tools/runner/java/dalvik/runner/TestProperties.java Regression test script for debugging the matrix of various DalvikRunner modes and test types: libcore/tools/runner/test-dalvik-runner.sh
* Change DalvikRunner to use newly added OptionParser.Brian Carlstrom2010-01-298-144/+732
| | | | | | | | | | | | | | | | | --skip-clean is now --no-clean --java-home now defaults to 1.5 --mode is now used to specify to run on host's java-home DalvikRunner page examples are updated with new --mode and --java-home Fixes junit tests to work on host by using changing classpath to be absolute paths Some minor scaffolding to prepare for running tests within an android.app.Activity. (Patchset 2 adds default --java-home location to usage output) (Patchset 3 address reviewer comments, mostly newbie style issues) (Patchset 4 address enh OptionParser issues, adds short/byte as well) (Patchset 5 address enh OptionParser issues, work with "java" from PATH, change deviceRunnerDir to File)
* Adding support for arbitrary VM args in dalvik runner.Jesse Wilson2010-01-225-13/+32
|
* Teaching DalvikRunner to run arbitrary classes with main() methods.Jesse Wilson2010-01-2215-78/+262
| | | | | | | | | This came up for the XML test suite, which isn't JUnit but a bunch of main methods (that ask you to verify their output independently; ugh) Also setting up the current working directory of the forked process. This only works for local VMs; setting the working directory for device VMs causes the "adb shell" call to crash.
* Merge "Scrubbing some jtreg bugs."Jesse Wilson2010-01-191-0/+45
|\
| * Scrubbing some jtreg bugs.Jesse Wilson2010-01-191-0/+45
| |
* | Show DalvikRunner test output even on success when given --verbose.Elliott Hughes2010-01-121-0/+2
| |
* | Allow DalvikRunner to run tests in core library packages.Elliott Hughes2010-01-071-0/+5
|/ | | | | | | | This is a bit of a hack, but I think it's not unreasonable, given the purpose of this tool (and the fact that we both favor writing our tests in the package they're testing). Bug: 2362187
* Fixing BigDecimal.stripLeadingZeroes on "0e100", as discovered by jtreg.Jesse Wilson2009-12-211-0/+22
| | | | Plus other jtreg test scrubbing.
* More expectations for our test runsJesse Wilson2009-12-213-10/+112
|
* Fixing the XML emitter to honor the expectations file.Jesse Wilson2009-12-204-71/+71
|
* Fixing a busted regex in the expectations file. Also doing regex checking ↵Jesse Wilson2009-12-202-2/+11
| | | | upfront.
* Adding expectations for a bunch of jtreg tests.Jesse Wilson2009-12-1810-78/+741
| | | | | Although tedious, we found a real bug in the mix. This also removes some of the noise from our test results.
* Rename dalvik_jtreg to dalvik_runner.Jesse Wilson2009-12-1734-0/+2517
Now that it runs caliper and JUnit, the old name was awful clumsy.