Remove test runner tool vogar from Froyo.

This tool has been open sourced independently and it will be quite
awkward for external contributors who attempt to use or contribute
to this dead copy. This code is test only and not used by the
production runtime.
http://code.google.com/p/vogar/

Change-Id: Ib53bdfdb600330e1a2f200b5747305fc527a78a6
diff --git a/libcore/tools/integrate/Android.mk b/libcore/tools/integrate/Android.mk
deleted file mode 100644
index f0f25b3..0000000
--- a/libcore/tools/integrate/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-	Command.java  \
-	Filesystem.java \
-	Git.java \
-	Module.java \
-	MappedDirectory.java \
-	PullHarmonyCode.java \
-	PushAndroidCode.java \
-	Svn.java
-
-LOCAL_MODULE:= integrate
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-subdir-makefiles)
diff --git a/libcore/tools/integrate/Command.java b/libcore/tools/integrate/Command.java
deleted file mode 100644
index 5e7796f..0000000
--- a/libcore/tools/integrate/Command.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * An out of process executable.
- */
-class Command {
-
-    private final List<String> args;
-    private final boolean permitNonZeroExitStatus;
-
-    Command(String... args) {
-        this(Arrays.asList(args));
-    }
-
-    Command(List<String> args) {
-        this.args = new ArrayList<String>(args);
-        this.permitNonZeroExitStatus = false;
-    }
-
-    private Command(Builder builder) {
-        this.args = new ArrayList<String>(builder.args);
-        this.permitNonZeroExitStatus = builder.permitNonZeroExitStatus;
-    }
-
-    static class Builder {
-        private final List<String> args = new ArrayList<String>();
-        private boolean permitNonZeroExitStatus = false;
-
-        public Builder args(String... args) {
-            return args(Arrays.asList(args));
-        }
-
-        public Builder args(Collection<String> args) {
-            this.args.addAll(args);
-            return this;
-        }
-
-        public Builder permitNonZeroExitStatus() {
-            permitNonZeroExitStatus = true;
-            return this;
-        }
-
-        public Command build() {
-            return new Command(this);
-        }
-
-        public List<String> execute() {
-            return build().execute();
-        }
-    }
-
-    public List<String> execute() {
-        try {
-            Process process = new ProcessBuilder()
-                    .command(args)
-                    .redirectErrorStream(true)
-                    .start();
-
-            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
-            List<String> outputLines = new ArrayList<String>();
-            String outputLine;
-            while ((outputLine = in.readLine()) != null) {
-                outputLines.add(outputLine);
-            }
-
-            if (process.waitFor() != 0 && !permitNonZeroExitStatus) {
-                StringBuilder message = new StringBuilder();
-                for (String line : outputLines) {
-                    message.append("\n").append(line);
-                }
-                throw new RuntimeException("Process failed: " + args + message);
-            }
-
-            return outputLines;
-        } catch (IOException e) {
-            throw new RuntimeException("Process failed: " + args, e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Process failed: " + args, e);
-        }
-    }
-
-}
diff --git a/libcore/tools/integrate/Filesystem.java b/libcore/tools/integrate/Filesystem.java
deleted file mode 100644
index 4b296a0..0000000
--- a/libcore/tools/integrate/Filesystem.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Factory for filesystem commands.
- */
-class Filesystem {
-
-    public void move(String source, String target) {
-        new Command("mv", source, target).execute();
-    }
-
-    /**
-     * Moves all of the files in {@code source} to {@code target}, one at a
-     * time. Unlike {@code move}, this approach works even if the target
-     * directory is nonempty.
-     */
-    public int moveContents(String source, String target) {
-        return copyContents(true, source, target);
-    }
-
-    /**
-     * Copies all of the files in {@code source} to {@code target}, one at a
-     * time. Unlike {@code move}, this approach works even if the target
-     * directory is nonempty.
-     */
-    public int copyContents(String source, String target) {
-        return copyContents(false, source, target);
-    }
-
-    private int copyContents(boolean move, String source, String target) {
-        List<String> files = new Command("find", source, "-type", "f") .execute();
-        for (String file : files) {
-            String targetFile = target + "/" + file.substring(source.length());
-            mkdir(parent(targetFile));
-            if (move) {
-                new Command("mv", "-i", file, targetFile).execute();
-            } else {
-                new Command("cp", file, targetFile).execute();
-            }
-        }
-        return files.size();
-    }
-
-    private String parent(String file) {
-        return file.substring(0, file.lastIndexOf('/'));
-    }
-
-    public void mkdir(String dir) {
-        new Command("mkdir", "-p", dir).execute();
-    }
-
-    public List<String> find(String where, String name) {
-        return new Command("find", where, "-name", name).execute();
-    }
-
-    public void rm(Collection<String> files) {
-        new Command.Builder().args("rm", "-r").args(files).execute();
-    }
-
-    public void rm(String file) {
-        new Command("rm", "-r", file).execute();
-    }
-}
diff --git a/libcore/tools/integrate/Git.java b/libcore/tools/integrate/Git.java
deleted file mode 100644
index da7dcfa..0000000
--- a/libcore/tools/integrate/Git.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Factory for git commands.
- */
-class Git {
-
-    private static final Pattern STATUS_DELETED
-            = Pattern.compile("#\\tdeleted:    (.*)");
-
-    public void branch(String newBranch) {
-        branch(newBranch, "HEAD");
-    }
-
-    /**
-     * @param base another branch, or a revision identifier like {@code HEAD}.
-     */
-    public void branch(String newBranch, String base) {
-        // -b is used by git to branch from another checkout
-        new Command("git", "checkout", "-b", newBranch, base).execute();
-    }
-
-    public void commit(String message) {
-        new Command("git", "commit", "-m", message).execute();
-    }
-
-    public void add(String path) {
-        new Command("git", "add", path).execute();
-    }
-
-    public void remove(Collection<String> paths) {
-        new Command.Builder().args("git", "rm").args(paths).execute();
-    }
-
-    public List<String> merge(String otherBranch) {
-        return new Command.Builder()
-                .args("git", "merge", "-s", "recursive", otherBranch)
-                .permitNonZeroExitStatus()
-                .execute();
-    }
-
-    /**
-     * Returns the files that have been deleted from the filesystem, but that
-     * don't exist in the active git change.
-     */
-    public List<String> listDeleted() {
-        List<String> statusLines = new Command.Builder()
-                .args("git", "status")
-                .permitNonZeroExitStatus()
-                .execute();
-
-        List<String> deletedFiles = new ArrayList<String>();
-        Matcher matcher = STATUS_DELETED.matcher("");
-        for (String line : statusLines) {
-            matcher.reset(line);
-            if (matcher.matches()) {
-                deletedFiles.add(matcher.group(1));
-            }
-        }
-        return deletedFiles;
-    }
-
-    public void rm(List<String> files) {
-        new Command.Builder()
-                .args("git", "rm").args(files)
-                .permitNonZeroExitStatus()
-                .build()
-                .execute();
-    }
-}
diff --git a/libcore/tools/integrate/MappedDirectory.java b/libcore/tools/integrate/MappedDirectory.java
deleted file mode 100644
index 8e28d29..0000000
--- a/libcore/tools/integrate/MappedDirectory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * A logical directory that has a different location in Harmony and Dalvik.
- */
-class MappedDirectory {
-
-    private final String svnPath;
-    private final String gitPath;
-
-    public MappedDirectory(String svnPath, String gitPath) {
-        this.svnPath = svnPath;
-        this.gitPath = gitPath;
-    }
-
-    public String svnPath() {
-        return svnPath;
-    }
-
-    public String gitPath() {
-        return gitPath;
-    }
-
-    @Override public String toString() {
-        return "svn:" + svnPath + " -> git:" + gitPath;
-    }
-}
diff --git a/libcore/tools/integrate/Module.java b/libcore/tools/integrate/Module.java
deleted file mode 100644
index 02cdb6a..0000000
--- a/libcore/tools/integrate/Module.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A logical unit of code shared between Apache Harmony and Dalvik.
- */
-class Module {
-
-    static final Map<String, Module> VALUES;
-    static {
-        Map<String, Module> valuesMutable = new LinkedHashMap<String, Module>();
-
-        String svnRoot = "http://svn.apache.org/repos/asf/harmony/enhanced/classlib/trunk/modules";
-        valuesMutable.put("archive", new Module.Builder(svnRoot, "archive")
-                .mapDirectory("archive/src/main/native/archive/shared",
-                        "archive/src/main/native")
-                .mapDirectory("archive/src/main/native/zip/shared",
-                        "archive/src/main/native")
-                .build());
-
-        valuesMutable.put("crypto", new Module.Builder(svnRoot, "crypto")
-                .mapDirectory("crypto/src/test/api/java.injected/javax",
-                        "crypto/src/test/java/org/apache/harmony/crypto/tests/javax")
-                .mapDirectory("crypto/src/test/api/java",
-                        "crypto/src/test/java")
-                .mapDirectory("crypto/src/test/resources/serialization",
-                        "crypto/src/test/java/serialization")
-                .mapDirectory("crypto/src/test/support/common/java",
-                        "crypto/src/test/java")
-                .build());
-
-        valuesMutable.put("logging", new Module.Builder(svnRoot, "logging").build());
-
-        valuesMutable.put("regex", new Module.Builder(svnRoot, "regex").build());
-
-        valuesMutable.put("security", new Module.Builder(svnRoot, "security")
-                .mapDirectory("security/src/main/java/common",
-                        "security/src/main/java")
-                .mapDirectory("security/src/main/java/unix/org",
-                        "security/src/main/java/org")
-                .mapDirectory("security/src/test/api/java",
-                        "security/src/test/java")
-                .build());
-
-        valuesMutable.put("text", new Module.Builder(svnRoot, "text").build());
-
-        valuesMutable.put("x-net", new Module.Builder(svnRoot, "x-net").build());
-
-        VALUES = Collections.unmodifiableMap(valuesMutable);
-    }
-
-    private final String svnBaseUrl;
-    private final String path;
-    private final Set<MappedDirectory> mappedDirectories;
-
-    public String getSvnBaseUrl() {
-        return svnBaseUrl;
-    }
-
-    public String path() {
-        return path;
-    }
-
-    public Set<MappedDirectory> getMappedDirectories() {
-        return mappedDirectories;
-    }
-
-    private Module(Builder builder) {
-        this.svnBaseUrl = builder.svnBaseUrl;
-        this.path = builder.path;
-        this.mappedDirectories = new LinkedHashSet<MappedDirectory>(builder.mappedDirectories);
-    }
-
-    public static class Builder {
-        private final String svnBaseUrl;
-        private final String path;
-        private final Set<MappedDirectory> mappedDirectories
-                = new LinkedHashSet<MappedDirectory>();
-
-        public Builder(String svnBaseUrl, String path) {
-            this.svnBaseUrl = svnBaseUrl;
-            this.path = path;
-        }
-
-        public Builder mapDirectory(String svnPath, String gitPath) {
-            mappedDirectories.add(new MappedDirectory(svnPath, gitPath));
-            return this;
-        }
-
-        public Module build() {
-            return new Module(this);
-        }
-    }
-}
diff --git a/libcore/tools/integrate/PullHarmonyCode.java b/libcore/tools/integrate/PullHarmonyCode.java
deleted file mode 100644
index ce019d4..0000000
--- a/libcore/tools/integrate/PullHarmonyCode.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.List;
-import java.util.UUID;
-
-/**
- * Download two versions of Apache Harmony from their SVN version, and use it
- * to perform a three-way merge with Dalvik.
- */
-public class PullHarmonyCode {
-
-    private final int currentVersion;
-    private final int targetVersion;
-
-    public PullHarmonyCode(int currentVersion, int targetVersion) {
-        this.currentVersion = currentVersion;
-        this.targetVersion = targetVersion;
-    }
-
-    public void pull(Module module) {
-        String path = module.path();
-        String svnOldBranch = path + "_" + currentVersion;
-        String svnNewBranch = path + "_" + targetVersion;
-        String dalvikBranch = path + "_dalvik";
-
-        Git git = new Git();
-        Filesystem filesystem = new Filesystem();
-        Svn svn = new Svn();
-
-        // Assume we're starting with the current Dalvik code. Tuck this away
-        // somewhere while we rewrite history.
-        String temp = "/tmp/" + UUID.randomUUID();
-        filesystem.mkdir(temp);
-
-        // To prepare a three-way-merge, we need a common starting point: the
-        // time at which Dalvik and Harmony were most the same. We'll use the
-        // previous Harmony SVN code as this starting point. We grab the old
-        // code from their repository, and commit it as a git branch.
-        System.out.print("Creating branch " + svnOldBranch + "...");
-        git.branch(svnOldBranch);
-        filesystem.move(path, temp + "/" + path);
-        svn.checkOut(currentVersion, module.getSvnBaseUrl() + "/" + path);
-        filesystem.rm(filesystem.find(path, ".svn"));
-        for (MappedDirectory mappedDirectory : module.getMappedDirectories()) {
-            filesystem.moveContents(mappedDirectory.svnPath(), mappedDirectory.gitPath());
-        }
-        git.rm(git.listDeleted());
-        git.add(path);
-        git.commit(svnOldBranch);
-        System.out.println("done");
-
-        // Create a branch that's derived from the starting point. It will
-        // contain all of the changes Harmony has made from then until now.
-        System.out.print("Creating branch " + svnNewBranch + "...");
-        git.branch(svnNewBranch, svnOldBranch);
-        filesystem.rm(path);
-        svn.checkOut(targetVersion, module.getSvnBaseUrl() + "/" + path);
-        filesystem.rm(filesystem.find(path, ".svn"));
-        for (MappedDirectory mappedDirectory : module.getMappedDirectories()) {
-            filesystem.moveContents(mappedDirectory.svnPath(), mappedDirectory.gitPath());
-        }
-        git.rm(git.listDeleted());
-        git.add(path);
-        git.commit(svnNewBranch);
-        System.out.println("done");
-
-        // Create another branch that's derived from the starting point. It will
-        // contain all of the changes Dalvik has made from then until now.
-        System.out.print("Creating branch " + dalvikBranch + "...");
-        git.branch(dalvikBranch, svnOldBranch);
-        filesystem.rm(path);
-        filesystem.move(temp + "/" + path, path);
-        git.rm(git.listDeleted());
-        git.add(path);
-        git.commit(dalvikBranch);
-        System.out.println("done");
-
-        // Merge the two sets of changes together: Harmony's and Dalvik's. By
-        // initializing a common starting point, git can make better decisions
-        // when the two new versions differ. For example, if today's Dalvik has
-        // a method that today's Harmony does not, it may be because Dalvik
-        // added it, or because Harmony deleted it!
-        System.out.println("Merging " + svnNewBranch + " into " + dalvikBranch + ":");
-        List<String> mergeResults = git.merge(svnNewBranch);
-        for (String mergeResult : mergeResults) {
-            System.out.print("  ");
-            System.out.println(mergeResult);
-        }
-    }
-
-
-    public static void main(String[] args) {
-        if (args.length < 3) {
-            printUsage();
-            return;
-        }
-
-        int currentSvnRev = Integer.parseInt(args[0]);
-        int targetSvnRev = Integer.parseInt(args[1]);
-
-        if (currentSvnRev < 527399 || targetSvnRev <= currentSvnRev) {
-            System.out.println("Invalid SVN revision range: "
-                    + currentSvnRev + ".." + targetSvnRev);
-            return;
-        }
-
-        Module module = Module.VALUES.get(args[2]);
-        if (module == null) {
-            System.out.println("No such module: " + args[2]);
-            return;
-        }
-
-        PullHarmonyCode puller = new PullHarmonyCode(currentSvnRev, targetSvnRev);
-        puller.pull(module);
-    }
-
-    private static void printUsage() {
-        System.out.println("This tool will prepare a three-way merge between the latest Harmony");
-        System.out.println("the latest Dalvik, and their common ancestor. It downloads both old");
-        System.out.println("and new versions of Harmony code from SVN for better merge results.");
-        System.out.println();
-        System.out.println("Usage: PullHarmonyCode <current_rev> <target_rev> <module>...");
-        System.out.println();
-        System.out.println("  <current_rev>  is the SVN revision of the Harmony code that was");
-        System.out.println("                 most recently integrated into Dalvik. This should");
-        System.out.println("                 be a number greater than 527399. The current");
-        System.out.println("                 revision for each module is tracked at");
-        System.out.println("                 http://go/dalvik/harmony");
-        System.out.println();
-        System.out.println("    <target_rev> is the SVN revision of the Harmony code to be");
-        System.out.println("                 merged into Dalvik. This should be a number greater");
-        System.out.println("                 than <current_rev>. The latest Harmony revision is");
-        System.out.println("                 tracked at");
-        System.out.println("                 http://svn.apache.org/viewvc/harmony/?root=Apache-SVN");
-        System.out.println();
-        System.out.println("        <module> is one of " + Module.VALUES.keySet());
-        System.out.println();
-        System.out.println("This program must be executed from within the dalvik/libcore directory");
-        System.out.println("of an Android git client. Such a client must be synced and contain no");
-        System.out.println("uncommitted changes. Upon termination, a new Git branch with the");
-        System.out.println("integrated changes will be active. This branch may require some manual");
-        System.out.println("merging.");
-        System.out.println();
-        System.out.println("Example usage:");
-        System.out.println("  java -cp ../../out/host/linux-x86/framework/integrate.jar PullAndroidCode \\");
-        System.out.println("    527399  802921 security");
-    }
-}
diff --git a/libcore/tools/integrate/PushAndroidCode.java b/libcore/tools/integrate/PushAndroidCode.java
deleted file mode 100644
index c0002f5..0000000
--- a/libcore/tools/integrate/PushAndroidCode.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2009 Google Inc. All Rights Reserved.
-
-import java.util.UUID;
-
-/**
- * Copy the current Android sourcecode into Apache Harmony, where it can be
- * reviewed and submitted to their SVN. Only run this script after first merging
- * the latest harmony code into Android.
- */
-public class PushAndroidCode {
-
-    private final String androidPath;
-    private final String harmonyPath;
-
-    public PushAndroidCode(String androidPath, String harmonyPath) {
-        this.androidPath = androidPath;
-        this.harmonyPath = harmonyPath;
-    }
-
-    public void push(Module module) {
-        Filesystem filesystem = new Filesystem();
-
-        // copy android code to a temp directory that is laid out like Harmony
-        String temp = "/tmp/" + UUID.randomUUID();
-        filesystem.mkdir(temp);
-        filesystem.copyContents(androidPath + "/" + module.path(),
-                temp + "/" + module.path());
-        for (MappedDirectory mappedDirectory : module.getMappedDirectories()) {
-            filesystem.moveContents(
-                    temp + "/" + mappedDirectory.gitPath(),
-                    temp + "/" + mappedDirectory.svnPath());
-        }
-
-        // clobber files from harmony with their Android equivalents
-        filesystem.copyContents(temp + "/" + module.path(),
-                harmonyPath + "/" + module.path());
-    }
-
-    public static void main(String[] args) {
-        if (args.length < 3) {
-            printUsage();
-            return;
-        }
-
-        String androidPath = args[0] + "/dalvik/libcore";
-        String harmonyPath = args[1] + "/working_classlib/modules";
-
-        // TODO: validate directories?
-        
-        Module[] modules = new Module[args.length - 2];
-        for (int i = 0; i < modules.length; i++) {
-            modules[i] = Module.VALUES.get(args[i+2]);
-            if (modules[i] == null) {
-                System.out.println("No such module: " + args[i+2]);
-                return;
-            }
-        }
-
-        PushAndroidCode pusher = new PushAndroidCode(androidPath, harmonyPath);
-        for (Module module : modules) {
-            pusher.push(module);
-        }
-    }
-
-    private static void printUsage() {
-        System.out.println("This tool will clobber Harmony's core libraries with Android's copy");
-        System.out.println("so that a patch can be submitted upstream.");
-        System.out.println();
-        System.out.println("Usage: PushAndroidCode <android_root> <harmony_root> <module>...");
-        System.out.println();
-        System.out.println("  <android_root> is the android git client directory that contains dalvik");
-        System.out.println("                 This should hold an up-to-date checkout of Android. The");
-        System.out.println("                 target modules should also be up-to-date with respect to");
-        System.out.println("                 Harmony; use the PullHarmonyCode tool first if necessary.");
-        System.out.println();
-        System.out.println("  <harmony_root> is the android client directory that contains working_classlib.");
-        System.out.println("                 This should hold an up-to-date checkout of Harmony.");
-        System.out.println();
-        System.out.println("  <module> is one of " + Module.VALUES.keySet());
-        System.out.println();
-        System.out.println("Example usage:");
-        System.out.println("  java -cp out/host/linux-x86/framework/integrate.jar PushAndroidCode \\");
-        System.out.println("    /usr/local/google/jesse/clients/jessewilson_g1 \\");
-        System.out.println("    /usr/local/google/jesse/clients/jessewilson_h0/trunk \\");
-        System.out.println("    crypto");
-    }
-}
diff --git a/libcore/tools/integrate/Svn.java b/libcore/tools/integrate/Svn.java
deleted file mode 100644
index dc9be35..0000000
--- a/libcore/tools/integrate/Svn.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Factory for Subversion commands.
- */
-class Svn {
-
-    public void checkOut(int version, String url) {
-        new Command("svn", "co", "-r", "" + version, url).execute();
-    }
-}
diff --git a/libcore/tools/runner/Android.mk b/libcore/tools/runner/Android.mk
deleted file mode 100644
index b208219..0000000
--- a/libcore/tools/runner/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# build DalvikRunner from the source under java/.
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES :=  $(call all-java-files-under,java)
-LOCAL_MODULE:= dalvik_runner
-LOCAL_STATIC_JAVA_LIBRARIES := caliper javatest jh jtreg kxml2-2.3.0
-# TODO this only works when junit is already built...
-LOCAL_JAVA_LIBRARIES := junit
-LOCAL_JAVACFLAGS := -Werror -Xlint:unchecked
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-subdir-makefiles)
-
-# prebuilt caliper.jar
-include $(CLEAR_VARS)
-LOCAL_PREBUILT_JAVA_LIBRARIES := caliper:lib/caliper.jar
-include $(BUILD_HOST_PREBUILT)
-
-# prebuilt javatest.jar
-include $(CLEAR_VARS)
-LOCAL_PREBUILT_JAVA_LIBRARIES := javatest:lib/javatest.jar
-include $(BUILD_HOST_PREBUILT)
-
-# prebuilt jh.jar
-include $(CLEAR_VARS)
-LOCAL_PREBUILT_JAVA_LIBRARIES := jh:lib/jh.jar
-include $(BUILD_HOST_PREBUILT)
-
-# prebuilt jtreg.jar
-include $(CLEAR_VARS)
-LOCAL_PREBUILT_JAVA_LIBRARIES := jtreg:lib/jtreg.jar
-include $(BUILD_HOST_PREBUILT)
diff --git a/libcore/tools/runner/expectations.txt b/libcore/tools/runner/expectations.txt
deleted file mode 100644
index 4c9f8e1..0000000
--- a/libcore/tools/runner/expectations.txt
+++ /dev/null
@@ -1,743 +0,0 @@
-# The RI avoids blocking calls when '\r' is the last character. We don't
-# bother since that adds complexity to every other read call, and '\r' as the
-# last character will be diminishingly rare anyway.
-test java.io.BufferedReader.ReadLine
-result EXEC_FAILED
-pattern .*java.lang.RuntimeException: Read past limit.*
-
-test java.io.BufferedReader.Ready
-result EXEC_FAILED
-pattern .*Hit infinite wait condition.*
-
-
-# The test is checking that the implementation doesn't read any characters
-# earlier than it absolutely needs to. This is a bogus requirement; streams
-# are allowed to buffer input as necessary.
-test java.io.StreamTokenizer.Reset
-result EXEC_FAILED
-pattern .*Test failed: should get token \[, but get -1.*
-
-
-# These tests rely on Java 6 APIs
-test java.util.Arrays.Big
-result COMPILE_FAILED
-pattern .*cannot find symbol.*
-
-test java.util.Arrays.CopyMethods
-result COMPILE_FAILED
-pattern .*cannot find symbol.*
-
-
-# Dalvik doesn't include the "SunJCE" crypto provider
-test com.sun.crypto.provider.Cipher.AES.Test4513830
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.Test4512704
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.Test4512524
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.Test4511676
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.Test4517355
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.TestISO10126Padding
-result EXEC_FAILED
-pattern .* java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.Test4626070
-result EXEC_FAILED
-pattern .*NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.AES.TestShortBuffer
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.CTS.CTSMode
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.DES.DesAPITest
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.DES.DoFinalReturnLen
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.DES.FlushBug
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.DES.KeyWrapping
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.DES.PaddingTest
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.DES.Sealtest
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.DES.PerformanceTest
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Cipher.PBE.DecryptWithoutParameters
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.PBE.PBEInvalidParamsTest
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.PBE.PBEKeysAlgorithmNames
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.Cipher.PBE.PBEParametersTest
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.PBE.PKCS12Oid
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.UTIL.StrongOrUnlimited
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.Cipher.KeyWrap.NISTWrapKAT
-result EXEC_FAILED
-pattern .*Provider SunJCE is not available.*
-
-test com.sun.crypto.provider.KeyAgreement.DHGenSecretKey
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.KeyAgreement.DHGenSharedSecret
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.KeyAgreement.DHKeyAgreement3
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.KeyAgreement.DHKeyFactory
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.KeyAgreement.DHKeyGenSpeed
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.KeyAgreement.TestExponentSize
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.KeyFactory.TestProviderLeak
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.KeyFactory.PBKDF2HmacSHA1FactoryTest
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.KeyGenerator.Test4628062
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.KeyGenerator.TestExplicitKeyLength
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Mac.HmacPBESHA1
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-test com.sun.crypto.provider.Mac.HmacMD5
-result EXEC_FAILED
-pattern .*java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE.*
-
-test com.sun.crypto.provider.Mac.MacClone
-result EXEC_FAILED
-pattern .*java.security.NoSuchProviderException: SunJCE.*
-
-
-# These NPEs all happen while calling Provider#getName on the result of
-# Security#getProvider(). Unfortunately, that method is permitted to return
-# null if the system has no provider with the requested name. And since we don't
-# have the "SunJCE" provider, tests fail
-test com.sun.crypto.provider.Cipher.PBE.PKCS12Cipher
-result EXEC_FAILED
-pattern .*PKCS12Cipher.java\:87\).*NullPointerException.*
-
-test com.sun.crypto.provider.Cipher.PBE.PKCS12CipherKAT
-result EXEC_FAILED
-pattern .*NullPointerException.*PKCS12CipherKAT.java\:183\).*
-
-test com.sun.crypto.provider.Cipher.RC2ArcFour.CipherKAT
-result EXEC_FAILED
-pattern .*NullPointerException.*CipherKAT.java\:205\).*
-
-test com.sun.crypto.provider.Cipher.RSA.TestOAEP_KAT
-result EXEC_FAILED
-pattern .*TestOAEP_KAT.java\:62\).*NullPointerException.*
-
-test com.sun.crypto.provider.Cipher.RSA.TestOAEP
-result EXEC_FAILED
-pattern .*TestOAEP.java\:50\).*NullPointerException.*
-
-test com.sun.crypto.provider.Cipher.RSA.TestOAEPParameterSpec
-result EXEC_FAILED
-pattern .*TestOAEPParameterSpec.java\:124\).*NullPointerException.*
-
-test com.sun.crypto.provider.Cipher.RSA.TestOAEPWithParams
-result EXEC_FAILED
-pattern .*TestOAEPWithParams.java\:58\).*NullPointerException.*
-
-test com.sun.crypto.provider.Cipher.RSA.TestRSA
-result EXEC_FAILED
-pattern .*TestRSA.java\:171\).*NullPointerException.*
-
-test com.sun.crypto.provider.Mac.HmacSaltLengths
-result EXEC_FAILED
-pattern .*HmacSaltLengths.java\:83\).*java.lang.NullPointerException.*
-
-test com.sun.crypto.provider.Mac.MacKAT
-result EXEC_FAILED
-pattern .*MacKAT.java\:228\).*java.lang.NullPointerException.*
-
-
-# These tests call into misc Sun classes that we don't have
-test com.sun.crypto.provider.KeyAgreement.DHKeyAgreement2
-result COMPILE_FAILED
-pattern .*cannot find symbol.*sun.misc.HexDumpEncoder.*
-
-test com.sun.crypto.provider.Cipher.KeyWrap.XMLEncKAT
-result COMPILE_FAILED
-pattern .*cannot find symbol.*sun.misc.BASE64Decoder.*
-
-test com.sun.crypto.provider.TLS.TestKeyMaterial
-result COMPILE_FAILED
-pattern .*package sun.security.internal.spec does not exist.*
-
-test com.sun.crypto.provider.TLS.TestMasterSecret
-result COMPILE_FAILED
-pattern .*package sun.security.internal.spec does not exist.*
-
-test com.sun.crypto.provider.TLS.TestPremaster
-result COMPILE_FAILED
-pattern .*package sun.security.internal.spec does not exist.*
-
-test com.sun.crypto.provider.TLS.TestPRF
-result COMPILE_FAILED
-pattern .*package sun.security.internal.spec does not exist.*
-
-
-# we don't have com.sun.jdi; none of the corresponding tests will work
-test com.sun.jdi.connect.spi.GeneratedConnectors
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.connect.spi.DebugUsingCustomConnector
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.redefine.RedefineTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.redefineMethod.RedefineTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.sde.MangleStepTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.sde.MangleTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.sde.FilterMangleTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.sde.SourceDebugExtensionTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.sde.TemperatureTableTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.AcceptTimeout
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.AccessSpecifierTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.AfterThreadDeathTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.AllLineLocations
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ArrayRangeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.BacktraceFieldTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.BadHandshakeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.BreakpointTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ClassesByName
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ClassesByName2Test
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ClassLoaderClassesTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.CompatibleConnectors
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ConnectedVMs
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ConstantPoolInfo
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.CountEvent
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.CountFilterTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.DebuggerThreadTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.DeleteAllBkptsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.DeleteEventRequestsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.DoubleAgentTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.EarlyReturnNegativeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.EarlyReturnTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.EnumTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.EventQueueDisconnectTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ExceptionEvents
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ExclusiveBind
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ExpiredRequestDeletionTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FieldWatchpoints
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FilterMatch
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FilterNoMatch
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FinalizerTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FinalLocalsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.FramesTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.GenericsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.GetLocalVariables2Test
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.HomeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.InstanceFilter
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.InstancesTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.InterruptHangTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.InvokeHangTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.InvokeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.Java_gTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.LaunchCommandLine
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.LineNumberInfo
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ListenAddress
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.LocalVariableEqual
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.LocationTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.MethodEntryExitEvents
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.MethodExitReturnValuesTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ModificationWatchpoints
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.MonitorEventTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.MonitorFrameInfo
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.MultiBreakpointsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.NewInstanceTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.NoLaunchOptionTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.NoLocInfoTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.OnThrowTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.OptionTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.PopAndInvokeTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.PopAndStepTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.PopAsynchronousTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.PopSynchronousTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ReferrersTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.RepStep
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.RequestReflectionTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.RunToExit
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.SDENullTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.SourceNameFilterTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.StepTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.SuspendThreadTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.TemplateTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.ThreadGroupTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.TwoThreadsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.UnpreparedByName
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.UnpreparedClasses
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.UTF8Test
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.VarargsTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.Vars
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.VMDeathLastTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-test com.sun.jdi.VMDeathRequestTest
-result COMPILE_FAILED
-pattern .*package com.sun.jdi does not exist.*
-
-
-# Dalvik doesn't include a com.sun.net HTTP server
-test com.sun.net.httpserver
-result UNSUPPORTED
-
-test sun.net.www
-result UNSUPPORTED
-
-
-# Dalvik doesn't include AWT except the font package
-test java.awt
-result UNSUPPORTED
-
-test java.awt.FontClass
-result SUCCESS
-
-
-# Dalvik doesn't include java.beans except for property listeners
-test java.beans
-result UNSUPPORTED
-
-test java.beans.PropertyChangeSupport
-result SUCCESS
-
-
-# Dalvik doesn't include java.lang.instrument
-test java.lang.instrument
-result UNSUPPORTED
-
-
-# Dalvik doesn't include java.lang.management
-test java.lang.management
-result UNSUPPORTED
-
-
-# Dalvik doesn't include RMI
-test java.rmi
-result UNSUPPORTED
-
-test sun.rmi
-result UNSUPPORTED
-
-
-# Dalvik doesn't include javax.management
-test javax.management
-result UNSUPPORTED
-
-
-# Dalvik doesn't include javax.naming
-test javax.naming
-result UNSUPPORTED
-
-
-# Dalvik doesn't include javax.sound
-test javax.sound
-result UNSUPPORTED
-
-
-# Dalvik doesn't include javax.swing
-test javax.swing
-result UNSUPPORTED
-
-
-# Dalvik doesn't include sun.management
-test sun.management
-result UNSUPPORTED
-
-
-# Dalvik doesn't include javax.smartcardio
-test sun.security.smartcardio
-result UNSUPPORTED
-
-# Our exception messages don't match the RIs
-test java.lang.StringBuilder.Exceptions
-result EXEC_FAILED
-pattern .*got java\.lang\.StringIndexOutOfBoundsException: null - FAILED.*
-
-test java.lang.StringBuffer.Exceptions
-result EXEC_FAILED
-pattern .*got java\.lang\.StringIndexOutOfBoundsException: null - FAILED.*
-
-
-# We don't expose Java 6 APIs
-test java.lang.String.IsEmpty
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method isEmpty\(\).*
-
-test java.lang.String.Exceptions
-result COMPILE_FAILED
-pattern .*cannot find symbol.*new String.*
-
-test java.lang.String.Encodings
-result COMPILE_FAILED
-pattern .*cannot find symbol.*new String.*
-
-test java.io.File.GetXSpace
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method getTotalSpace\(\).*
-
-test java.io.File.MaxPathLength
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method getTotalSpace\(\).*
-
-test java.io.File.SetAccess (from File)
-result COMPILE_FAILED
-pattern .*method setWritable\(boolean,boolean\).*
-
-test java.io.PipedInputStream.Constructors
-result COMPILE_FAILED
-pattern .*constructor PipedInputStream\(int\).*
-
-test java.io.PipedReader.Constructors
-result COMPILE_FAILED
-pattern .*constructor PipedReader\(int\).*
-
-test java.io.File.SetAccess
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method setWritable\(boolean,boolean\).*
-
-test java.io.PipedWriter.WriteAfterReaderClose
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method clearError().*
-
-test java.io.PrintWriter.ClearErrorWriter
-result COMPILE_FAILED
-pattern .*cannot find symbol.*method clearError().*
-
-
-# A low-impact bug that we're ignoring: "Shared FileDescriptors get closed too early"
-#   http://code.google.com/p/android/issues/detail?id=5923
-test java.io.FileDescriptor.Finalize
-result EXEC_FAILED
-pattern .*java.io.IOException.*openCheck.*
-
-
-# We don't have AWT
-test java.io.File.isDirectory.Applet
-result COMPILE_FAILED
-pattern .*package java.applet does not exist.*
diff --git a/libcore/tools/runner/java/dalvik/runner/Aapt.java b/libcore/tools/runner/java/dalvik/runner/Aapt.java
deleted file mode 100644
index 4d1a873..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Aapt.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * An aapt (Android Asset Packaging Tool) command.
- */
-final class Aapt {
-
-    public void apk(File apk, File manifest) {
-
-        // TODO: we should be able to work with a shipping SDK, not depend on out/...
-        new Command.Builder()
-                .args("aapt")
-                .args("package")
-                .args("-F")
-                .args(apk)
-                .args("-M")
-                .args(manifest)
-                .args("-I")
-                .args("out/target/common/obj/APPS/framework-res_intermediates/package-export.apk")
-                .execute();
-    }
-    public void add(File apk, File dex) {
-        new Command.Builder()
-                .args("aapt")
-                .args("add")
-                .args("-k")
-                .args(apk)
-                .args(dex)
-                .execute();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/ActivityMode.java b/libcore/tools/runner/java/dalvik/runner/ActivityMode.java
deleted file mode 100644
index 163c72a..0000000
--- a/libcore/tools/runner/java/dalvik/runner/ActivityMode.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.TimeoutException;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.logging.Logger;
-
-/**
- * Runs a test in the context of an android.app.Activity on a device
- */
-final class ActivityMode extends Mode {
-
-    private static final Logger logger = Logger.getLogger(ActivityMode.class.getName());
-
-    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) {
-        super(new EnvironmentDevice(cleanBefore, cleanAfter,
-                debugPort, localTemp, deviceRunnerDir),
-                timeoutSeconds, sdkJar, tee);
-    }
-
-    private EnvironmentDevice getEnvironmentDevice() {
-        return (EnvironmentDevice) environment;
-    }
-
-    @Override protected void prepare(Set<File> testRunnerJava, Classpath testRunnerClasspath) {
-        testRunnerJava.add(new File("dalvik/libcore/tools/runner/lib/TestActivity.java"));
-        super.prepare(testRunnerJava, testRunnerClasspath);
-    }
-
-    @Override protected void postCompileTestRunner() {
-    }
-
-    @Override protected void postCompileTest(TestRun testRun) {
-        logger.fine("aapt and push " + testRun.getQualifiedName());
-
-        // Some things of note:
-        // 1. we can't put multiple dex files in one apk
-        // 2. we can't just give dex multiple jars with conflicting class names
-        // 3. dex is slow if we give it too much to chew on
-        // 4. dex can run out of memory if given too much to chew on
-
-        // With that in mind, the APK packaging strategy is as follows:
-        // 1. make an empty classes temporary directory
-        // 2. add test runner classes
-        // 3. find original jar test came from, add contents to classes
-        // 4. add supported runner classes specified by finder
-        // 5. add latest test classes to output
-        // 6. dx to create a dex
-        // 7. aapt the dex to create apk
-        // 8. sign the apk
-        // 9. install the apk
-        File packagingDir = makePackagingDirectory(testRun);
-        addTestRunnerClasses(packagingDir);
-        List<File> found = new ArrayList<File>();
-        File originalTestJar = findOriginalTestJar(testRun);
-        if (originalTestJar != null) {
-            found.add(originalTestJar);
-        }
-        found.addAll(testRun.getRunnerClasspath().getElements());
-        extractJars(packagingDir, found);
-        addTestClasses(testRun, packagingDir);
-        File dex = createDex(testRun, packagingDir);
-        File apkUnsigned = createApk(testRun, dex);
-        File apkSigned = signApk(testRun, apkUnsigned);
-        installApk(testRun, apkSigned);
-    }
-
-    private File makePackagingDirectory(TestRun testRun) {
-        File packagingDir = new File(environment.testCompilationDir(testRun), "packaging");
-        new Rm().directoryTree(packagingDir);
-        new Mkdir().mkdirs(packagingDir);
-        return packagingDir;
-    }
-
-    private void addTestRunnerClasses(File packagingDir) {
-        new Command("rsync", "-a",
-                    environment.testRunnerClassesDir() + "/",
-                    packagingDir + "/").execute();
-    }
-
-    private File findOriginalTestJar(TestRun testRun) {
-        String testClass = testRun.getTestClass();
-        String testFile = testClass.replace('.', '/') + ".class";
-        for (File element : testClasspath.getElements()) {
-            try {
-                JarFile jar = new JarFile(element);
-                JarEntry jarEntry = jar.getJarEntry(testFile);
-                if (jarEntry != null) {
-                    return element;
-                }
-            } catch (IOException e) {
-                throw new RuntimeException(
-                        "Could not find element " + element +
-                        " of test class path " + testClasspath, e);
-            }
-        }
-        return null;
-    }
-
-    private static void extractJars(File packagingDir, List<File> jars) {
-        for (File jar : jars) {
-            new Command.Builder()
-                    .args("unzip")
-                    .args("-q")
-                    .args("-o")
-                    .args(jar)
-                    .args("-d")
-                    .args(packagingDir).execute();
-        }
-        new Rm().directoryTree(new File(packagingDir, "META-INF"));
-    }
-
-    private void addTestClasses(TestRun testRun, File packagingDir) {
-        File testClassesDir = environment.testClassesDir(testRun);
-        new Command("rsync", "-a",
-                    testClassesDir + "/",
-                    packagingDir + "/").execute();
-    }
-    private File createDex (TestRun testRun, File packagingDir) {
-        File testClassesDir = environment.testClassesDir(testRun);
-        File dex = new File(testClassesDir + ".dex");
-        new Dx().dex(dex, Classpath.of(packagingDir));
-        return dex;
-    }
-
-    /**
-     * According to android.content.pm.PackageParser, package name
-     * "must have at least one '.' separator" Since the qualified name
-     * may not contain a dot, we prefix containing one to ensure we
-     * are compliant.
-     */
-    private static String packageName(TestRun testRun) {
-        return "DalvikRunner." + testRun.getQualifiedName();
-    }
-
-    private File createApk (TestRun testRun, File dex) {
-        String androidManifest =
-            "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
-            "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" +
-            "      package=\"" + packageName(testRun) + "\">\n" +
-            "    <uses-permission android:name=\"android.permission.INTERNET\" />\n" +
-            "    <application>\n" +
-            "        <activity android:name=\"" + TEST_ACTIVITY_CLASS + "\">\n" +
-            "            <intent-filter>\n" +
-            "                <action android:name=\"android.intent.action.MAIN\" />\n" +
-            "                <category android:name=\"android.intent.category.LAUNCHER\" />\n" +
-            "            </intent-filter>\n" +
-            "        </activity>\n" +
-            "    </application>\n" +
-            "</manifest>\n";
-        File androidManifestFile =
-                new File(environment.testCompilationDir(testRun),
-                        "AndroidManifest.xml");
-        try {
-            FileOutputStream androidManifestOut =
-                    new FileOutputStream(androidManifestFile);
-            androidManifestOut.write(androidManifest.getBytes("UTF-8"));
-            androidManifestOut.close();
-        } catch (IOException e) {
-            throw new RuntimeException("Problem writing " + androidManifestFile, e);
-        }
-
-        File testClassesDir = environment.testClassesDir(testRun);
-        File apkUnsigned = new File(testClassesDir + ".apk.unsigned");
-        new Aapt().apk(apkUnsigned, androidManifestFile);
-        new Aapt().add(apkUnsigned, dex);
-        new Aapt().add(apkUnsigned, new File(testClassesDir, TestProperties.FILE));
-        return apkUnsigned;
-    }
-
-    private File signApk(TestRun testRun, File apkUnsigned) {
-        File testClassesDir = environment.testClassesDir(testRun);
-        File apkSigned = new File(testClassesDir, testRun.getQualifiedName() + ".apk");
-        // TODO: we should be able to work with a shipping SDK, not depend on out/...
-        // TODO: we should be able to work without hardwired keys, not depend on build/...
-        new Command.Builder()
-                .args("java")
-                .args("-jar")
-                .args("out/host/linux-x86/framework/signapk.jar")
-                .args("build/target/product/security/testkey.x509.pem")
-                .args("build/target/product/security/testkey.pk8")
-                .args(apkUnsigned)
-                .args(apkSigned).execute();
-        new Rm().file(apkUnsigned);
-        return apkSigned;
-    }
-
-    private void installApk(TestRun testRun, File apkSigned) {
-        // install the local apk ona the device
-        getEnvironmentDevice().adb.uninstall(packageName(testRun));
-        getEnvironmentDevice().adb.install(apkSigned);
-    }
-
-    @Override protected void fillInProperties(Properties properties, TestRun testRun) {
-        super.fillInProperties(properties, testRun);
-        properties.setProperty(TestProperties.DEVICE_RUNNER_DIR, getEnvironmentDevice().runnerDir.getPath());
-    }
-
-    @Override protected List<String> runTestCommand(TestRun testRun)
-            throws TimeoutException {
-        new Command(
-            "adb", "shell", "am", "start",
-            "-a","android.intent.action.MAIN",
-            "-n", (packageName(testRun) + "/" + TEST_ACTIVITY_CLASS)).executeWithTimeout(timeoutSeconds);
-
-        File resultDir = new File(getEnvironmentDevice().runnerDir, testRun.getQualifiedName());
-        File resultFile = new File(resultDir, TestProperties.RESULT_FILE);
-        getEnvironmentDevice().adb.waitForFile(resultFile, timeoutSeconds);
-        return new Command.Builder()
-            .args("adb", "shell", "cat", resultFile.getPath())
-            .tee(tee)
-            .build().executeWithTimeout(timeoutSeconds);
-    }
-
-    @Override void cleanup(TestRun testRun) {
-        super.cleanup(testRun);
-        if (environment.cleanAfter) {
-            getEnvironmentDevice().adb.uninstall(testRun.getQualifiedName());
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Adb.java b/libcore/tools/runner/java/dalvik/runner/Adb.java
deleted file mode 100644
index c982058..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Adb.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.List;
-import java.util.concurrent.TimeoutException;
-
-/**
- * An adb command.
- */
-final class Adb {
-
-    public void mkdir(File name) {
-        new Command("adb", "shell", "mkdir", name.getPath()).execute();
-    }
-
-    public void rm(File name) {
-        new Command("adb", "shell", "rm", "-r", name.getPath()).execute();
-    }
-
-    public void push(File local, File remote) {
-        new Command("adb", "push", local.getPath(), remote.getPath())
-                .execute();
-    }
-
-    public void install(File apk) {
-        new Command("adb", "install", "-r", apk.getPath())
-                .execute();
-    }
-
-    public void uninstall(String packageName) {
-        new Command("adb", "uninstall", packageName)
-                .execute();
-    }
-
-    public void forwardTcp(int localPort, int devicePort) {
-        new Command("adb", "forward", "tcp:" + localPort, "tcp:" + devicePort)
-                .execute();
-    }
-
-    public void waitForDevice() {
-        new Command("adb", "wait-for-device").execute();
-    }
-
-    /**
-     * Loop until we see a file on the device. For example, wait
-     * result.txt appears.
-     */
-    public void waitForFile(File file, long timeoutSeconds) {
-        waitFor(true, file, timeoutSeconds);
-    }
-
-    /**
-     * Loop until we see a non-empty directory on the device. For
-     * example, wait until /sdcard is mounted.
-     */
-    public void waitForNonEmptyDirectory(File path, long timeoutSeconds) {
-        waitFor(false, path, timeoutSeconds);
-    }
-
-    private void waitFor(boolean file, File path, long timeoutSeconds) {
-        final int millisPerSecond = 1000;
-        final long start = System.currentTimeMillis();
-        final long deadline = start + (millisPerSecond * timeoutSeconds);
-
-        while (true) {
-            final long remainingSeconds = ((deadline - System.currentTimeMillis())
-                                           / millisPerSecond);
-            String pathArgument = path.getPath();
-            if (!file) {
-                pathArgument += "/";
-            }
-            Command command = new Command("adb", "shell", "ls", pathArgument);
-            List<String> output;
-            try {
-                output = command.executeWithTimeout(remainingSeconds);
-            } catch (TimeoutException e) {
-                throw new RuntimeException("Timed out after " + timeoutSeconds +
-                                           " seconds waiting for file " + path, e);
-            }
-            try {
-                Thread.sleep(millisPerSecond);
-            } catch (InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-            if (file) {
-                // for files, we expect one line of output that matches the filename
-                if (output.size() == 1 && output.get(0).equals(path.getPath())) {
-                    return;
-                }
-            } else {
-                // for a non empty directory, we just want any output
-                if (!output.isEmpty()) {
-                    return;
-                }
-            }
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/CaliperFinder.java b/libcore/tools/runner/java/dalvik/runner/CaliperFinder.java
deleted file mode 100644
index 3609471..0000000
--- a/libcore/tools/runner/java/dalvik/runner/CaliperFinder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * Create {@link TestRun}s for {@code .java} files with Caliper benchmarks in
- * them.
- */
-class CaliperFinder extends NamingPatternCodeFinder {
-
-    @Override protected boolean matches(File file) {
-        return file.getName().endsWith("Benchmark.java");
-    }
-
-    @Override protected String testName(File file) {
-        return "caliper";
-    }
-
-    public Class<? extends Runner> getRunnerClass() {
-        return CaliperRunner.class;
-    }
-
-    public File getRunnerJava() {
-        return new File(DalvikRunner.HOME_JAVA, "dalvik/runner/CaliperRunner.java");
-    }
-
-    public Classpath getRunnerClasspath() {
-        return new Classpath();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/CaliperRunner.java b/libcore/tools/runner/java/dalvik/runner/CaliperRunner.java
deleted file mode 100644
index b30644b..0000000
--- a/libcore/tools/runner/java/dalvik/runner/CaliperRunner.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import com.google.caliper.Benchmark;
-import com.google.caliper.Runner;
-
-/**
- * Runs a <a href="http://code.google.com/p/caliper/">Caliper</a> benchmark.
- */
-public final class CaliperRunner implements dalvik.runner.Runner {
-
-    public void prepareTest(Class<?> testClass) {}
-
-    public boolean test(Class<?> testClass) {
-        try {
-            Runner.main(testClass.asSubclass(Benchmark.class), new String[0]);
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return false; // always print benchmarking results
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Classpath.java b/libcore/tools/runner/java/dalvik/runner/Classpath.java
deleted file mode 100644
index 607615a..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Classpath.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * A list of jar files and directories.
- */
-final class Classpath {
-
-    private final List<File> elements = new ArrayList<File>();
-
-    public static Classpath of(File... files) {
-        return of(Arrays.asList(files));
-    }
-
-    public static Classpath of(Collection<File> files) {
-        Classpath result = new Classpath();
-        result.elements.addAll(files);
-        return result;
-    }
-
-    public void addAll(File... elements) {
-        addAll(Arrays.asList(elements));
-    }
-
-    public void addAll(Collection<File> elements) {
-        this.elements.addAll(elements);
-    }
-
-    public void addAll(Classpath anotherClasspath) {
-        this.elements.addAll(anotherClasspath.elements);
-    }
-
-    public Collection<File> getElements() {
-        return elements;
-    }
-
-    @Override public String toString() {
-        return Strings.join(elements, ":");
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/CodeFinder.java b/libcore/tools/runner/java/dalvik/runner/CodeFinder.java
deleted file mode 100644
index f770fa4..0000000
--- a/libcore/tools/runner/java/dalvik/runner/CodeFinder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.Set;
-
-/**
- * A strategy for finding runnable things in a directory.
- */
-public interface CodeFinder {
-
-    /**
-     * Returns all test runs in the given file or directory. If the returned set
-     * is empty, no executable code of this kind were found.
-     */
-    public Set<TestRun> findTests(File file);
-
-    /**
-     * Return the class for the TestRunner
-     */
-    public Class<? extends Runner> getRunnerClass();
-
-    /**
-     * Return the Java file for the TestRunner
-     */
-    public File getRunnerJava();
-
-    /**
-     * Return the compile classpath for the TestRunner
-     */
-    public Classpath getRunnerClasspath();
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Command.java b/libcore/tools/runner/java/dalvik/runner/Command.java
deleted file mode 100644
index 88ba38e..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Command.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Logger;
-
-/**
- * An out of process executable.
- */
-final class Command {
-
-    private final Logger logger = Logger.getLogger(Command.class.getName());
-
-    private final List<String> args;
-    private final File workingDirectory;
-    private final boolean permitNonZeroExitStatus;
-    private final PrintStream tee;
-    private Process process;
-
-    Command(String... args) {
-        this(Arrays.asList(args));
-    }
-
-    Command(List<String> args) {
-        this.args = new ArrayList<String>(args);
-        this.workingDirectory = null;
-        this.permitNonZeroExitStatus = false;
-        this.tee = null;
-    }
-
-    private Command(Builder builder) {
-        this.args = new ArrayList<String>(builder.args);
-        this.workingDirectory = builder.workingDirectory;
-        this.permitNonZeroExitStatus = builder.permitNonZeroExitStatus;
-        this.tee = builder.tee;
-    }
-
-    public List<String> getArgs() {
-        return Collections.unmodifiableList(args);
-    }
-
-    public synchronized void start() throws IOException {
-        if (isStarted()) {
-            throw new IllegalStateException("Already started!");
-        }
-
-        logger.fine("executing " + Strings.join(args, " "));
-
-        ProcessBuilder processBuilder = new ProcessBuilder()
-                .command(args)
-                .redirectErrorStream(true);
-        if (workingDirectory != null) {
-            processBuilder.directory(workingDirectory);
-        }
-
-        process = processBuilder.start();
-    }
-
-    public boolean isStarted() {
-        return process != null;
-    }
-
-    public Process getProcess() {
-        if (!isStarted()) {
-            throw new IllegalStateException("Not started!");
-        }
-
-        return process;
-    }
-
-    public synchronized List<String> gatherOutput()
-            throws IOException, InterruptedException {
-        if (!isStarted()) {
-            throw new IllegalStateException("Not started!");
-        }
-
-        BufferedReader in = new BufferedReader(
-                new InputStreamReader(process.getInputStream()));
-        List<String> outputLines = new ArrayList<String>();
-        String outputLine;
-        while ((outputLine = in.readLine()) != null) {
-            if (tee != null) {
-                tee.println(outputLine);
-            }
-            outputLines.add(outputLine);
-        }
-
-        if (process.waitFor() != 0 && !permitNonZeroExitStatus) {
-            StringBuilder message = new StringBuilder();
-            for (String line : outputLines) {
-                message.append("\n").append(line);
-            }
-            throw new CommandFailedException(args, outputLines);
-        }
-
-        return outputLines;
-    }
-
-    public synchronized List<String> execute() {
-        try {
-            start();
-            return gatherOutput();
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to execute process: " + args, e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Interrupted while executing process: " + args, e);
-        }
-    }
-
-    /**
-     * Executes a command with a specified timeout. Output is returned
-     * if the command succeeds. If Otherwise null is returned if the
-     * command timed out.
-     */
-    public List<String> executeWithTimeout(long timeoutSeconds)
-            throws TimeoutException {
-        ExecutorService outputReader
-            = Executors.newFixedThreadPool(1, Threads.daemonThreadFactory());
-        try {
-            start();
-            // run on a different thread to allow a timeout
-            Future<List<String>> future = outputReader.submit(new Callable<List<String>>() {
-                    public List<String> call() throws Exception {
-                        return gatherOutput();
-                    }
-                });
-            return future.get(timeoutSeconds, TimeUnit.SECONDS);
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to execute process: " + args, e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Interrupted while executing process: " + args, e);
-        } catch (ExecutionException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (isStarted()) {
-                getProcess().destroy(); // to release the output reader
-            }
-            outputReader.shutdown();
-        }
-    }
-
-    static class Builder {
-        private final List<String> args = new ArrayList<String>();
-        private File workingDirectory;
-        private boolean permitNonZeroExitStatus = false;
-        private PrintStream tee = null;
-
-        public Builder args(Object... objects) {
-            for (Object object : objects) {
-                args(object.toString());
-            }
-            return this;
-        }
-
-        public Builder args(String... args) {
-            return args(Arrays.asList(args));
-        }
-
-        public Builder args(Collection<String> args) {
-            this.args.addAll(args);
-            return this;
-        }
-
-        /**
-         * Sets the working directory from which the command will be executed.
-         * This must be a <strong>local</strong> directory; Commands run on
-         * remote devices (ie. via {@code adb shell}) require a local working
-         * directory.
-         */
-        public Builder workingDirectory(File workingDirectory) {
-            this.workingDirectory = workingDirectory;
-            return this;
-        }
-
-        public Builder permitNonZeroExitStatus() {
-            permitNonZeroExitStatus = true;
-            return this;
-        }
-
-        public Builder tee(PrintStream printStream) {
-            tee = printStream;
-            return this;
-        }
-
-        public Command build() {
-            return new Command(this);
-        }
-
-        public List<String> execute() {
-            return build().execute();
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/CommandFailedException.java b/libcore/tools/runner/java/dalvik/runner/CommandFailedException.java
deleted file mode 100644
index d16a279..0000000
--- a/libcore/tools/runner/java/dalvik/runner/CommandFailedException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.util.List;
-
-/**
- * Thrown when an out of process executable does not return normally.
- */
-class CommandFailedException extends RuntimeException {
-
-    private final List<String> args;
-    private final List<String> outputLines;
-
-    public CommandFailedException(List<String> args, List<String> outputLines) {
-        super(formatMessage(args, outputLines));
-        this.args = args;
-        this.outputLines = outputLines;
-    }
-
-    public List<String> getArgs() {
-        return args;
-    }
-
-    public List<String> getOutputLines() {
-        return outputLines;
-    }
-
-    public static String formatMessage(List<String> args, List<String> outputLines) {
-        StringBuilder result = new StringBuilder();
-        result.append("Command failed:");
-        for (String arg : args) {
-            result.append(" ").append(arg);
-        }
-        for (String outputLine : outputLines) {
-            result.append("\n  ").append(outputLine);
-        }
-        return result.toString();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java b/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java
deleted file mode 100644
index c78866e..0000000
--- a/libcore/tools/runner/java/dalvik/runner/DalvikRunner.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Formatter;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-
-/**
- * Command line interface for running benchmarks and tests on dalvik.
- */
-public final class DalvikRunner {
-
-    static final File HOME = new File("dalvik/libcore/tools/runner");
-    static final File HOME_JAVA = new File(HOME, "java");
-
-    private static class Options {
-
-        private final List<File> testFiles = new ArrayList<File>();
-
-        @Option(names = { "--expectations" })
-        private Set<File> expectationFiles = new LinkedHashSet<File>();
-        {
-            expectationFiles.add(new File("dalvik/libcore/tools/runner/expectations.txt"));
-        }
-
-        private static String MODE_DEVICE = "device";
-        private static String MODE_HOST = "host";
-        private static String MODE_ACTIVITY = "activity";
-        @Option(names = { "--mode" })
-        private String mode = MODE_DEVICE;
-
-        @Option(names = { "--timeout" })
-        private long timeoutSeconds = 10 * 60; // default is ten minutes;
-
-        @Option(names = { "--clean-before" })
-        private boolean cleanBefore = true;
-
-        @Option(names = { "--clean-after" })
-        private boolean cleanAfter = true;
-
-        @Option(names = { "--clean" })
-        private boolean clean = true;
-
-        @Option(names = { "--xml-reports-directory" })
-        private File xmlReportsDirectory;
-
-        @Option(names = { "--verbose" })
-        private boolean verbose;
-
-        @Option(names = { "--tee" })
-        private String teeName;
-        private PrintStream tee;
-
-        @Option(names = { "--debug" })
-        private Integer debugPort;
-
-        @Option(names = { "--device-runner-dir" })
-        private File deviceRunnerDir = new File("/sdcard/dalvikrunner");
-
-        @Option(names = { "--vm-arg" })
-        private List<String> vmArgs = new ArrayList<String>();
-
-        @Option(names = { "--java-home" })
-        private File javaHome;
-
-        @Option(names = { "--sdk" })
-        private File sdkJar = new File("/home/dalvik-prebuild/android-sdk-linux/platforms/android-2.0/android.jar");
-
-        private void printUsage() {
-            System.out.println("Usage: DalvikRunner [options]... <tests>...");
-            System.out.println();
-            System.out.println("  <tests>: a .java file containing a jtreg test, JUnit test,");
-            System.out.println("      Caliper benchmark, or a directory of such tests.");
-            System.out.println();
-            System.out.println("GENERAL OPTIONS");
-            System.out.println();
-            System.out.println("  --expectations <file>: include the specified file when looking for");
-            System.out.println("      test expectations. The file should include qualified test names");
-            System.out.println("      and the corresponding expected output.");
-            System.out.println("      Default is: " + expectationFiles);
-            System.out.println();
-            System.out.println("  --mode <device|host|activity>: specify which environment to run the");
-            System.out.println("      tests in. Options are on the device VM, on the host VM, and on");
-            System.out.println("      device within an android.app.Activity.");
-            System.out.println("      Default is: " + mode);
-            System.out.println();
-            System.out.println("  --clean-before: remove working directories before building and");
-            System.out.println("      running (default). Disable with --no-clean-before if you are");
-            System.out.println("      using interactively with your own temporary input files.");
-            System.out.println();
-            System.out.println("  --clean-after: remove temporary files after running (default).");
-            System.out.println("      Disable with --no-clean-after and use with --verbose if");
-            System.out.println("      you'd like to manually re-run commands afterwards.");
-            System.out.println();
-            System.out.println("  --clean: synonym for --clean-before and --clean-after (default).");
-            System.out.println("      Disable with --no-clean if you want no files removed.");
-            System.out.println();
-            System.out.println("  --tee <file>: emit test output to file during execution.");
-            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("      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("  --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.out.println("  --device-runner-dir <directory>: use the specified directory for");
-            System.out.println("      on-device temporary files and code.");
-            System.out.println("      Default is: " + deviceRunnerDir);
-            System.out.println();
-            System.out.println("GENERAL VM OPTIONS");
-            System.out.println();
-            System.out.println("  --vm-arg <argument>: include the specified argument when spawning a");
-            System.out.println("      virtual machine. Examples: -Xint:fast, -ea, -Xmx16M");
-            System.out.println();
-            System.out.println("HOST VM OPTIONS");
-            System.out.println();
-            System.out.println("  --java-home <java_home>: execute the tests on the local workstation");
-            System.out.println("      using the specified java home directory. This does not impact");
-            System.out.println("      which javac gets used. When unset, java is used from the PATH.");
-            System.out.println();
-            System.out.println("COMPILE OPTIONS");
-            System.out.println();
-            System.out.println("  --sdk <android jar>: the API jar file to compile against.");
-            System.out.println("      Usually this is <SDK>/platforms/android-<X.X>/android.jar");
-            System.out.println("      where <SDK> is the path to an Android SDK path and <X.X> is");
-            System.out.println("      a release version like 1.5.");
-            System.out.println("      Default is: " + sdkJar);
-            System.out.println();
-        }
-
-        private boolean parseArgs(String[] args) {
-            final List<String> testFilenames;
-            try {
-                testFilenames = new OptionParser(this).parse(args);
-            } catch (RuntimeException e) {
-                System.out.println(e.getMessage());
-                return false;
-            }
-
-            //
-            // Semantic error validation
-            //
-
-            boolean device;
-            boolean vm;
-            if (mode.equals(MODE_DEVICE)) {
-                device = true;
-                vm = true;
-            } else if (mode.equals(MODE_HOST)) {
-                device = false;
-                vm = true;
-            } else if (mode.equals(MODE_ACTIVITY)) {
-                device = true;
-                vm = false;
-            } else {
-                System.out.println("Unknown mode: " + mode);
-                return false;
-            }
-
-
-            if (device) { // check device option consistency
-                if (javaHome != null) {
-                    System.out.println("java home " + javaHome + " should not be specified for mode " + mode);
-                    return false;
-                }
-
-            } else { // check host (!device) option consistency
-                if (javaHome != null && !new File(javaHome, "/bin/java").exists()) {
-                    System.out.println("Invalid java home: " + javaHome);
-                    return false;
-                }
-            }
-
-            // check vm option consistency
-            if (!vm) {
-                if (!vmArgs.isEmpty()) {
-                    System.out.println("vm args " + vmArgs + " should not be specified for mode " + mode);
-                    return false;
-                }
-            }
-
-            if (!sdkJar.exists()) {
-                System.out.println("Could not find SDK jar: " + sdkJar);
-                return false;
-            }
-
-            if (xmlReportsDirectory != null && !xmlReportsDirectory.isDirectory()) {
-                System.out.println("Invalid XML reports directory: " + xmlReportsDirectory);
-                return false;
-            }
-
-            if (testFilenames.isEmpty()) {
-                System.out.println("No tests provided.");
-                return false;
-            }
-
-            if (!clean) {
-                cleanBefore = false;
-                cleanAfter = false;
-            }
-
-            //
-            // Post-processing arguments
-            //
-
-            for (String testFilename : testFilenames) {
-                testFiles.add(new File(testFilename));
-            }
-
-            if (teeName != null) {
-                if (teeName.equals("-")) {
-                    tee = System.out;
-                } else {
-                    try {
-                        tee = new PrintStream(new BufferedOutputStream(new FileOutputStream(teeName)));
-                    } catch (FileNotFoundException e) {
-                        System.out.println("Could not open file teeName: " + e);
-                        return false;
-                    }
-                }
-            }
-
-            if (verbose) {
-                Logger.getLogger("dalvik.runner").setLevel(Level.FINE);
-            }
-
-            return true;
-        }
-
-    }
-
-    private final Options options = new Options();
-    private final File localTemp = new File("/tmp/dalvikrunner/" + UUID.randomUUID());
-
-    private DalvikRunner() {}
-
-    private void prepareLogging() {
-        ConsoleHandler handler = new ConsoleHandler();
-        handler.setLevel(Level.ALL);
-        handler.setFormatter(new Formatter() {
-            @Override public String format(LogRecord r) {
-                return r.getMessage() + "\n";
-            }
-        });
-        Logger logger = Logger.getLogger("dalvik.runner");
-        logger.addHandler(handler);
-        logger.setUseParentHandlers(false);
-    }
-
-    private void run() {
-        Mode mode;
-        if (options.mode.equals(Options.MODE_DEVICE)) {
-            mode = new DeviceDalvikVm(
-                    options.debugPort,
-                    options.timeoutSeconds,
-                    options.sdkJar,
-                    options.tee,
-                    localTemp,
-                    options.vmArgs,
-                    options.cleanBefore,
-                    options.cleanAfter,
-                    options.deviceRunnerDir);
-        } else if (options.mode.equals(Options.MODE_HOST)) {
-            mode = new JavaVm(
-                    options.debugPort,
-                    options.timeoutSeconds,
-                    options.sdkJar,
-                    options.tee,
-                    localTemp,
-                    options.javaHome,
-                    options.vmArgs,
-                    options.cleanBefore,
-                    options.cleanAfter);
-        } else if (options.mode.equals(Options.MODE_ACTIVITY)) {
-            mode = new ActivityMode(
-                    options.debugPort,
-                    options.timeoutSeconds,
-                    options.sdkJar,
-                    options.tee,
-                    localTemp,
-                    options.cleanBefore,
-                    options.cleanAfter,
-                    options.deviceRunnerDir);
-        } else {
-            System.out.println("Unknown mode mode " + options.mode + ".");
-            return;
-        }
-
-        List<CodeFinder> codeFinders = Arrays.asList(
-                new JtregFinder(localTemp),
-                new JUnitFinder(),
-                new CaliperFinder(),
-                new MainFinder());
-        Driver driver = new Driver(
-                localTemp,
-                mode,
-                options.expectationFiles,
-                options.xmlReportsDirectory,
-                codeFinders);
-        try {
-            driver.loadExpectations();
-        } catch (IOException e) {
-            System.out.println("Problem loading expectations: " + e);
-            return;
-        }
-
-        driver.buildAndRunAllTests(options.testFiles);
-        mode.shutdown();
-    }
-
-    public static void main(String[] args) {
-        DalvikRunner dalvikRunner = new DalvikRunner();
-        if (!dalvikRunner.options.parseArgs(args)) {
-            dalvikRunner.options.printUsage();
-            return;
-        }
-        dalvikRunner.prepareLogging();
-        dalvikRunner.run();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java b/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
deleted file mode 100644
index 061e374..0000000
--- a/libcore/tools/runner/java/dalvik/runner/DeviceDalvikVm.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.PrintStream;
-import java.util.List;
-import java.util.logging.Logger;
-
-/**
- * Execute tests on a Dalvik VM using an Android device or emulator.
- */
-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) {
-        super(new EnvironmentDevice(cleanBefore, cleanAfter, debugPort, localTemp, runnerDir),
-                timeoutSeconds, sdkJar, tee, additionalVmArgs);
-    }
-
-    private EnvironmentDevice getEnvironmentDevice() {
-        return (EnvironmentDevice) environment;
-    }
-
-    @Override protected void postCompileTestRunner() {
-        // TODO: does this really need to be a special case?
-        postCompile("testrunner", environment.testRunnerClassesDir());
-
-        // dex everything on the classpath and push it to the device.
-        for (File classpathElement : testClasspath.getElements()) {
-            String name = basenameOfJar(classpathElement);
-            logger.fine("dex and push " + name);
-            // make the local dex (inside a jar)
-            // TODO: this is *really* expensive. we need a cache!
-            File outputFile = getEnvironmentDevice().testDir(name + ".jar");
-            new Dx().dex(outputFile, Classpath.of(classpathElement));
-            // push the local dex to the device
-            getEnvironmentDevice().adb.push(outputFile, deviceDexFile(name));
-        }
-    }
-
-    private String basenameOfJar(File jarFile) {
-        return jarFile.getName().replaceAll("\\.jar$", "");
-    }
-
-    @Override protected void postCompileTest(TestRun testRun) {
-        postCompile(testRun.getQualifiedName(), environment.testClassesDir(testRun));
-    }
-
-    private void postCompile(String name, File dir) {
-        logger.fine("dex and push " + name);
-
-        // make the local dex (inside a jar)
-        File localDex = new File(dir.getPath() + ".jar");
-        new Dx().dex(localDex, Classpath.of(dir));
-
-        // post the local dex to the device
-        File deviceDex = deviceDexFile(name);
-        getEnvironmentDevice().adb.push(localDex, deviceDex);
-    }
-
-    private File deviceDexFile(String name) {
-        return new File(getEnvironmentDevice().runnerDir, name + ".jar");
-    }
-
-    @Override protected VmCommandBuilder newVmCommandBuilder(
-            File workingDirectory) {
-        // ignore the working directory; it's device-local and we can't easily
-        // set the working directory for commands run via adb shell.
-        // TODO: we only *need* to set ANDROID_DATA on production devices.
-        // We set "user.home" to /sdcard because code might reasonably assume it can write to
-        // that directory.
-        return new VmCommandBuilder()
-                .vmCommand("adb", "shell", "ANDROID_DATA=/sdcard", "dalvikvm")
-                .vmArgs("-Duser.home=/sdcard")
-                .vmArgs("-Duser.name=root")
-                .vmArgs("-Duser.language=en")
-                .vmArgs("-Duser.region=US")
-                .vmArgs("-Djavax.net.ssl.trustStore=/system/etc/security/cacerts.bks")
-                .temp(getEnvironmentDevice().testTemp);
-    }
-
-    @Override protected Classpath getRuntimeSupportClasspath(TestRun testRun) {
-        Classpath classpath = new Classpath();
-        classpath.addAll(deviceDexFile(testRun.getQualifiedName()));
-        classpath.addAll(deviceDexFile("testrunner"));
-        for (File testClasspathElement : testClasspath.getElements()) {
-            classpath.addAll(deviceDexFile(basenameOfJar(testClasspathElement)));
-        }
-        return classpath;
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Driver.java b/libcore/tools/runner/java/dalvik/runner/Driver.java
deleted file mode 100644
index 574c8cb..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Driver.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.logging.Logger;
-
-/**
- * Compiles, installs, runs and reports tests.
- */
-final class Driver {
-
-    private static final Logger logger = Logger.getLogger(Driver.class.getName());
-
-    private final File localTemp;
-    private final Set<File> expectationFiles;
-    private final List<CodeFinder> codeFinders;
-    private final Mode mode;
-    private final File xmlReportsDirectory;
-    private final Map<String, ExpectedResult> expectedResults = new HashMap<String, ExpectedResult>();
-
-    /**
-     * The number of tests that weren't run because they aren't supported by
-     * this runner.
-     */
-    private int unsupportedTests = 0;
-
-    public Driver(File localTemp, Mode mode, Set<File> expectationFiles,
-            File xmlReportsDirectory, List<CodeFinder> codeFinders) {
-        this.localTemp = localTemp;
-        this.expectationFiles = expectationFiles;
-        this.mode = mode;
-        this.xmlReportsDirectory = xmlReportsDirectory;
-        this.codeFinders = codeFinders;
-    }
-
-    public void loadExpectations() throws IOException {
-        for (File f : expectationFiles) {
-            if (f.exists()) {
-                expectedResults.putAll(ExpectedResult.parse(f));
-            }
-        }
-    }
-
-    /**
-     * Builds and executes all tests in the test directory.
-     */
-    public void buildAndRunAllTests(Collection<File> testFiles) {
-        new Mkdir().mkdirs(localTemp);
-
-        Set<TestRun> tests = new LinkedHashSet<TestRun>();
-        for (File testFile : testFiles) {
-            Set<TestRun> testsForFile = Collections.emptySet();
-
-            for (CodeFinder codeFinder : codeFinders) {
-                testsForFile = codeFinder.findTests(testFile);
-
-                // break as soon as we find any match. We don't need multiple
-                // matches for the same file, since that would run it twice.
-                if (!testsForFile.isEmpty()) {
-                    break;
-                }
-            }
-
-            tests.addAll(testsForFile);
-        }
-
-        // compute TestRunner java and classpath to pass to mode.prepare
-        Set<File> testRunnerJava = new HashSet<File>();
-        Classpath testRunnerClasspath = new Classpath();
-        for (final TestRun testRun : tests) {
-            testRunnerJava.add(testRun.getRunnerJava());
-            testRunnerClasspath.addAll(testRun.getRunnerClasspath());
-        }
-
-        // mode.prepare before mode.buildAndInstall to ensure test
-        // runner is built. packaging of activity APK files needs the
-        // test runner along with the test specific files.
-        mode.prepare(testRunnerJava, testRunnerClasspath);
-
-        logger.info("Running " + tests.size() + " tests.");
-
-        // build and install tests in a background thread. Using lots of
-        // threads helps for packages that contain many unsupported tests
-        final BlockingQueue<TestRun> readyToRun = new ArrayBlockingQueue<TestRun>(4);
-
-        ExecutorService builders = Threads.threadPerCpuExecutor();
-        int t = 0;
-        for (final TestRun testRun : tests) {
-            final int runIndex = t++;
-            builders.submit(new Runnable() {
-                public void run() {
-                    try {
-                        ExpectedResult expectedResult = lookupExpectedResult(testRun);
-                        testRun.setExpectedResult(expectedResult);
-
-                        if (expectedResult.getResult() == Result.UNSUPPORTED) {
-                            testRun.setResult(Result.UNSUPPORTED, Collections.<String>emptyList());
-                            logger.fine("skipping test " + testRun
-                                    + " because the expectations file says it is unsupported.");
-
-                        } else {
-                            mode.buildAndInstall(testRun);
-                            logger.fine("installed test " + runIndex + "; "
-                                    + readyToRun.size() + " are ready to run");
-                        }
-
-                        readyToRun.put(testRun);
-                    } catch (Throwable throwable) {
-                        testRun.setResult(Result.ERROR, throwable);
-                    }
-                }
-            });
-        }
-        builders.shutdown();
-
-        List<TestRun> runs = new ArrayList<TestRun>(tests.size());
-        for (int i = 0; i < tests.size(); i++) {
-            logger.fine("executing test " + i + "; "
-                    + readyToRun.size() + " are ready to run");
-
-            // if it takes 5 minutes for build and install, something is broken
-            TestRun testRun;
-            try {
-                testRun = readyToRun.poll(5 * 60, TimeUnit.SECONDS);
-            } catch (InterruptedException e) {
-                throw new RuntimeException("Unexpected interruption waiting for build and install", e);
-            }
-
-            if (testRun == null) {
-                throw new IllegalStateException("Expected " + tests.size() + " tests but found only " + i);
-            }
-
-            runs.add(testRun);
-            execute(testRun);
-            mode.cleanup(testRun);
-        }
-
-        if (unsupportedTests > 0) {
-            logger.info("Skipped " + unsupportedTests + " unsupported tests.");
-        }
-
-        if (xmlReportsDirectory != null) {
-            logger.info("Printing XML Reports... ");
-            int numFiles = new XmlReportPrinter().generateReports(xmlReportsDirectory, runs);
-            logger.info(numFiles + " XML files written.");
-        }
-    }
-
-    /**
-     * Finds the expected result for the specified test run. This strips off
-     * parts of the test's qualified name until it either finds a match or runs
-     * out of name.
-     */
-    private ExpectedResult lookupExpectedResult(TestRun testRun) {
-        String name = testRun.getQualifiedName();
-
-        while (true) {
-            ExpectedResult expectedResult = expectedResults.get(name);
-            if (expectedResult != null) {
-                return expectedResult;
-            }
-
-            int dot = name.lastIndexOf('.');
-            if (dot == -1) {
-                return ExpectedResult.SUCCESS;
-            }
-
-            name = name.substring(0, dot);
-        }
-    }
-
-    /**
-     * Executes a single test and then prints the result.
-     */
-    private void execute(TestRun testRun) {
-        if (testRun.getResult() == Result.UNSUPPORTED) {
-            logger.fine("skipping " + testRun.getQualifiedName());
-            unsupportedTests++;
-            return;
-        }
-
-        if (testRun.isRunnable()) {
-            mode.runTest(testRun);
-        }
-
-        printResult(testRun);
-    }
-
-    private void printResult(TestRun testRun) {
-        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  "));
-            return;
-        }
-
-        logger.info("FAIL " + testRun.getQualifiedName() + " (" + testRun.getResult() + ")");
-        String description = testRun.getDescription();
-        if (description != null) {
-            logger.info("  \"" + description + "\"");
-        }
-
-        logger.info("  " + testRun.getFailureMessage().replace("\n", "\n  "));
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Dx.java b/libcore/tools/runner/java/dalvik/runner/Dx.java
deleted file mode 100644
index 393b70d..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Dx.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.logging.Logger;
-
-/**
- * A dx command.
- */
-final class Dx {
-    private static final Logger logger = Logger.getLogger(Dx.class.getName());
-    private static final Md5Cache DEX_CACHE = new Md5Cache("dex");
-
-    /**
-     * Converts all the .class files on 'classpath' into a dex file written to 'output'.
-     */
-    public void dex(File output, Classpath classpath) {
-        File key = DEX_CACHE.makeKey(classpath);
-        if (key != null && key.exists()) {
-            logger.fine("dex cache hit for " + classpath);
-            new Command.Builder().args("cp", key, output).execute();
-            return;
-        }
-        /*
-         * We pass --core-library so that we can write tests in the
-         * same package they're testing, even when that's a core
-         * library package. If you're actually just using this tool to
-         * execute arbitrary code, this has the unfortunate
-         * side-effect of preventing "dx" from protecting you from
-         * yourself.
-         *
-         * Memory options pulled from build/core/definitions.mk to
-         * handle large dx input when building dex for APK.
-         */
-        new Command.Builder()
-                .args("dx")
-                .args("-JXms16M")
-                .args("-JXmx1536M")
-                .args("--dex")
-                .args("--output=" + output)
-                .args("--core-library")
-                .args(Strings.objectsToStrings(classpath.getElements()))
-                .execute();
-        DEX_CACHE.insert(key, output);
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Environment.java b/libcore/tools/runner/java/dalvik/runner/Environment.java
deleted file mode 100644
index c284a37..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Environment.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.logging.Logger;
-
-/**
- * A target runtime environment such as a remote device or the local host
- */
-abstract class Environment {
-    private static final Logger logger = Logger.getLogger(Environment.class.getName());
-
-    final boolean cleanBefore;
-    final boolean cleanAfter;
-    final Integer debugPort;
-    private final File localTemp;
-
-    Environment (boolean cleanBefore, boolean cleanAfter, Integer debugPort, File localTemp) {
-        this.cleanBefore = cleanBefore;
-        this.cleanAfter = cleanAfter;
-        this.debugPort = debugPort;
-        this.localTemp = localTemp;
-    }
-
-    /**
-     * Initializes the temporary directories and test harness necessary to run
-     * tests.
-     */
-    abstract void prepare();
-
-    /**
-     * Prepares the directory from which the test will be executed. Some tests
-     * expect to read data files from the current working directory; this step
-     * should ensure such files are available.
-     */
-    abstract void prepareUserDir(TestRun testRun);
-
-    /**
-     * Deletes files and releases any resources required for the execution of
-     * the given test.
-     */
-    void cleanup(TestRun testRun) {
-        if (cleanAfter) {
-            logger.fine("clean " + testRun.getQualifiedName());
-            new Rm().directoryTree(testCompilationDir(testRun));
-            new Rm().directoryTree(testUserDir(testRun));
-        }
-    }
-
-    final File testDir(String name) {
-        return new File(localTemp, name);
-    }
-
-    final File testRunnerDir(String name) {
-        return new File(testDir("testrunner"), name);
-    }
-
-    final File testRunnerClassesDir() {
-        return testRunnerDir("classes");
-    }
-
-    final File testCompilationDir(TestRun testRun) {
-        return new File(localTemp, testRun.getQualifiedName());
-    }
-
-    final File testClassesDir(TestRun testRun) {
-        return new File(testCompilationDir(testRun), "classes");
-    }
-
-    final File testUserDir(TestRun testRun) {
-        File testTemp = new File(localTemp, "userDir");
-        return new File(testTemp, testRun.getQualifiedName());
-    }
-
-    abstract void shutdown();
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java b/libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java
deleted file mode 100644
index 9ac1c64..0000000
--- a/libcore/tools/runner/java/dalvik/runner/EnvironmentDevice.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.logging.Logger;
-
-class EnvironmentDevice extends Environment {
-    private static final Logger logger = Logger.getLogger(EnvironmentDevice.class.getName());
-
-    final Adb adb = new Adb();
-    final File runnerDir;
-    final File testTemp;
-
-    EnvironmentDevice (boolean cleanBefore, boolean cleanAfter,
-            Integer debugPort, File localTemp, File runnerDir) {
-        super(cleanBefore, cleanAfter, debugPort, localTemp);
-        this.runnerDir = runnerDir;
-        this.testTemp = new File(runnerDir, "/tests.tmp");
-    }
-
-    @Override void prepare() {
-        adb.waitForDevice();
-        adb.waitForNonEmptyDirectory(runnerDir.getParentFile(), 5 * 60);
-        if (cleanBefore) {
-            adb.rm(runnerDir);
-        }
-        adb.mkdir(runnerDir);
-        adb.mkdir(testTemp);
-        adb.mkdir(new File("/sdcard/dalvik-cache")); // TODO: only necessary on production devices.
-        if (debugPort != null) {
-            adb.forwardTcp(debugPort, debugPort);
-        }
-    }
-
-    @Override protected void prepareUserDir(TestRun testRun) {
-        File testClassesDirOnDevice = testClassesDirOnDevice(testRun);
-        adb.mkdir(testClassesDirOnDevice);
-        adb.push(testRun.getTestDirectory(), testClassesDirOnDevice);
-        testRun.setUserDir(testClassesDirOnDevice);
-    }
-
-    private File testClassesDirOnDevice(TestRun testRun) {
-        return new File(runnerDir, testRun.getQualifiedName());
-    }
-
-    @Override void cleanup(TestRun testRun) {
-        super.cleanup(testRun);
-        if (cleanAfter) {
-            adb.rm(testClassesDirOnDevice(testRun));
-        }
-    }
-
-    @Override void shutdown() {
-        if (cleanAfter) {
-            adb.rm(runnerDir);
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/EnvironmentHost.java b/libcore/tools/runner/java/dalvik/runner/EnvironmentHost.java
deleted file mode 100644
index d02ea55..0000000
--- a/libcore/tools/runner/java/dalvik/runner/EnvironmentHost.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-class EnvironmentHost extends Environment {
-
-    EnvironmentHost(boolean cleanBefore, boolean cleanAfter,
-            Integer debugPort, File localTemp) {
-        super(cleanBefore, cleanAfter, debugPort, localTemp);
-    }
-
-    @Override void prepare() {}
-
-    @Override protected void prepareUserDir(TestRun testRun) {
-        File testUserDir = testUserDir(testRun);
-
-        // if the user dir exists, cp would copy the files to the wrong place
-        if (testUserDir.exists()) {
-            throw new IllegalStateException();
-        }
-
-        new Mkdir().mkdirs(testUserDir.getParentFile());
-        new Command("cp", "-r", testRun.getTestDirectory().toString(),
-                testUserDir.toString()).execute();
-        testRun.setUserDir(testUserDir);
-    }
-
-    @Override void shutdown() {}
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/ExpectedResult.java b/libcore/tools/runner/java/dalvik/runner/ExpectedResult.java
deleted file mode 100644
index a0244ce..0000000
--- a/libcore/tools/runner/java/dalvik/runner/ExpectedResult.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Logger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * The expected outcome of a test execution. This is typically encoded in the
- * expectations text file, which has the following format:
- * <pre>
- * test java.io.StreamTokenizer.Reset
- * result UNSUPPORTED
- * pattern .*should get token \[, but get -1.*
- *
- * # should we fix this?
- * test java.util.Arrays.CopyMethods
- * result COMPILE_FAILED
- * pattern .*cannot find symbol.*
- * </pre>
- */
-class ExpectedResult {
-
-    private static final Logger logger = Logger.getLogger(ExpectedResult.class.getName());
-
-    /** Matches lines in the file containing a key and value pair. */
-    private static final Pattern KEY_VALUE_PAIR_PATTERN = Pattern.compile("(\\w+)\\s+(.+)");
-
-    /** The pattern to use when no expected output is specified */
-    private static final Pattern MATCH_ALL_PATTERN
-            = Pattern.compile(".*", Pattern.MULTILINE | Pattern.DOTALL);
-
-    /** The expectation of a general successful test run. */
-    static final ExpectedResult SUCCESS = new ExpectedResult(Result.SUCCESS, null);
-
-    /** The test's expected result, such as {@code EXEC_FAILED}. */
-    private final Result result;
-
-    /** The pattern the expected output will match. */
-    private final Pattern pattern;
-
-    private ExpectedResult(Result result, String pattern) {
-        if (result == null) {
-            throw new IllegalArgumentException();
-        }
-
-        this.result = result;
-        this.pattern = pattern != null
-                ? Pattern.compile(pattern, Pattern.MULTILINE | Pattern.DOTALL)
-                : MATCH_ALL_PATTERN;
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public Pattern getPattern() {
-        return pattern;
-    }
-
-    public static Map<String, ExpectedResult> parse(File expectationsFile)
-            throws IOException {
-        logger.fine("loading expectations file " + expectationsFile);
-
-        BufferedReader reader = new BufferedReader(new FileReader(expectationsFile));
-        try {
-            Map<String, ExpectedResult> results = new HashMap<String, ExpectedResult>();
-            Matcher keyValuePairMatcher = KEY_VALUE_PAIR_PATTERN.matcher("");
-
-            // the fields of interest for the current element
-            String qualifiedName = null;
-            Result result = null;
-            String pattern = null;
-
-            String line;
-            while ((line = reader.readLine()) != null) {
-                line = line.trim();
-
-                if (line.length() == 0 || line.startsWith("#")) {
-                    continue; // skip comment and blank lines
-                }
-
-                keyValuePairMatcher.reset(line);
-                if (!keyValuePairMatcher.matches()) {
-                    throw new IllegalArgumentException("Unexpected line " + line
-                            + " in file " + expectationsFile);
-                }
-
-                String key = keyValuePairMatcher.group(1);
-                String value = keyValuePairMatcher.group(2);
-                if (key.equals("result") && result == null) {
-                    result = Result.valueOf(value);
-
-                } else if (key.equals("pattern") && pattern == null) {
-                    pattern = value;
-
-                } else if (key.equals("test")) {
-                    // when we encounter a new qualified name, the previous
-                    // element is complete. Add it to the results.
-                    if (qualifiedName != null) {
-                        ExpectedResult expectation = new ExpectedResult(result, pattern);
-                        ExpectedResult previous = results.put(qualifiedName, expectation);
-                        if (previous != null) {
-                            throw new IllegalArgumentException(
-                                    "Duplicate expectations for " + qualifiedName);
-                        }
-
-                        result = null;
-                        pattern = null;
-                    }
-
-                    qualifiedName = value;
-
-                } else {
-                    throw new IllegalArgumentException("Unexpected key " + key
-                            + " in file " + expectationsFile);
-                }
-            }
-
-            // add the last element in the file
-            if (qualifiedName != null) {
-                ExpectedResult expectation = new ExpectedResult(result, pattern);
-                ExpectedResult previous = results.put(qualifiedName, expectation);
-                if (previous != null) {
-                    throw new IllegalArgumentException(
-                            "Duplicate expectations for " + qualifiedName);
-                }
-            }
-
-            logger.fine("loaded " + results.size() + " expectations.");
-            return results;
-        } finally {
-            reader.close();
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/JUnitFinder.java b/libcore/tools/runner/java/dalvik/runner/JUnitFinder.java
deleted file mode 100644
index 131a8cf..0000000
--- a/libcore/tools/runner/java/dalvik/runner/JUnitFinder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * Create {@link TestRun}s for {@code .java} files with JUnit tests in them.
- */
-class JUnitFinder extends NamingPatternCodeFinder {
-
-    @Override protected boolean matches(File file) {
-        return file.getName().endsWith("Test.java");
-    }
-
-    // TODO: try to get names for each method?
-    @Override protected String testName(File file) {
-        return "junit";
-    }
-
-    public Class<? extends Runner> getRunnerClass() {
-        return JUnitRunner.class;
-    }
-
-    public File getRunnerJava() {
-        return new File(DalvikRunner.HOME_JAVA, "dalvik/runner/JUnitRunner.java");
-    }
-
-    public Classpath getRunnerClasspath() {
-        // TODO: we should be able to work with a shipping SDK, not depend on out/...
-        return Classpath.of(new File("out/host/common/obj/JAVA_LIBRARIES/junit_intermediates/javalib.jar").getAbsoluteFile());
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/JUnitRunner.java b/libcore/tools/runner/java/dalvik/runner/JUnitRunner.java
deleted file mode 100644
index 4891448..0000000
--- a/libcore/tools/runner/java/dalvik/runner/JUnitRunner.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.runner.TestSuiteLoader;
-
-/**
- * Runs a JUnit test.
- */
-public final class JUnitRunner implements Runner {
-
-    private final junit.textui.TestRunner testRunner;
-    private Test junitTest;
-
-    public JUnitRunner() {
-        final TestSuiteLoader testSuiteLoader = new TestSuiteLoader() {
-            public Class load(String suiteClassName) throws ClassNotFoundException {
-                return JUnitRunner.class.getClassLoader().loadClass(suiteClassName);
-            }
-
-            public Class reload(Class c) {
-                return c;
-            }
-        };
-
-        testRunner = new junit.textui.TestRunner() {
-            @Override public TestSuiteLoader getLoader() {
-                return testSuiteLoader;
-            }
-        };
-    }
-
-    public void prepareTest(Class<?> testClass) {
-        junitTest = testRunner.getTest(testClass.getName());
-    }
-
-    public boolean test(Class<?> testClass) {
-        TestResult result = testRunner.doRun(junitTest);
-        return result.wasSuccessful();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/JavaVm.java b/libcore/tools/runner/java/dalvik/runner/JavaVm.java
deleted file mode 100644
index 38e0386..0000000
--- a/libcore/tools/runner/java/dalvik/runner/JavaVm.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.PrintStream;
-import java.util.List;
-import java.util.Set;
-
-/**
- * A local Java virtual machine like Harmony or the RI.
- */
-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) {
-        super(new EnvironmentHost(cleanBefore, cleanAfter, debugPort, localTemp),
-                timeoutSeconds, sdkJar, tee, additionalVmArgs);
-        this.javaHome = javaHome;
-    }
-
-    @Override protected void postCompileTestRunner() {
-    }
-
-    @Override protected void postCompileTest(TestRun testRun) {
-    }
-
-    @Override protected VmCommandBuilder newVmCommandBuilder(
-            File workingDirectory) {
-        String java = javaHome == null ? "java" : new File(javaHome, "bin/java").getPath();
-        return new VmCommandBuilder()
-                .vmCommand(java)
-                .workingDir(workingDirectory);
-    }
-    @Override protected Classpath getRuntimeSupportClasspath(TestRun testRun) {
-        Classpath classpath = new Classpath();
-        classpath.addAll(environment.testClassesDir(testRun));
-        classpath.addAll(testClasspath);
-        classpath.addAll(environment.testRunnerClassesDir());
-        classpath.addAll(testRunnerClasspath);
-        return classpath;
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Javac.java b/libcore/tools/runner/java/dalvik/runner/Javac.java
deleted file mode 100644
index 26e8bb9..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Javac.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * A javac command.
- */
-final class Javac {
-
-    private final Command.Builder builder = new Command.Builder();
-
-    Javac() {
-        builder.args("javac", "-Xmaxerrs", "1");
-    }
-
-    public Javac bootClasspath(File... path) {
-        builder.args("-bootclasspath", Classpath.of(path).toString());
-        return this;
-    }
-
-    public Javac classpath(File... path) {
-        return classpath(Classpath.of(path));
-    }
-
-    public Javac classpath(Classpath classpath) {
-        builder.args("-classpath", classpath.toString());
-        return this;
-    }
-
-    public Javac sourcepath(File... path) {
-        builder.args("-sourcepath", Classpath.of(path).toString());
-        return this;
-    }
-
-    public Javac destination(File directory) {
-        builder.args("-d", directory.toString());
-        return this;
-    }
-
-    public List<String> compile(Collection<File> files) {
-        return builder.args(Strings.objectsToStrings(files))
-                .execute();
-    }
-
-    public List<String> compile(File... files) {
-        return compile(Arrays.asList(files));
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/JtregFinder.java b/libcore/tools/runner/java/dalvik/runner/JtregFinder.java
deleted file mode 100644
index d846ae2..0000000
--- a/libcore/tools/runner/java/dalvik/runner/JtregFinder.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import com.sun.javatest.TestDescription;
-import com.sun.javatest.TestResult;
-import com.sun.javatest.TestResultTable;
-import com.sun.javatest.TestSuite;
-import com.sun.javatest.WorkDirectory;
-import com.sun.javatest.regtest.RegressionTestSuite;
-
-import java.io.File;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Set;
-import java.util.logging.Logger;
-
-/**
- * Create {@link TestRun}s for {@code .java} files with jtreg tests in them.
- */
-class JtregFinder implements CodeFinder {
-
-    // TODO: add support for the  @library directive, as seen in
-    //   test/com/sun/crypto/provider/Cipher/AES/TestKATForECB_VT.java
-
-    private static final Logger logger = Logger.getLogger(JtregFinder.class.getName());
-
-    /**
-     * The subpath of a platform implementation under which tests live. Used to
-     * derive relative test paths like {@code /java/io/Reader} from an absolute
-     * path like {@code /home/jessewilson/platform_v6/test/java/io/Reader}.
-     */
-    static final String TEST_ROOT = "/test/";
-
-    private final File localTemp;
-
-    JtregFinder(File localTemp) {
-        this.localTemp = localTemp;
-    }
-
-    /**
-     * Returns the tests in {@code directoryToScan}.
-     */
-    public Set<TestRun> findTests(File directoryToScan) {
-        // for now, jtreg doesn't know how to scan anything but directories
-        if (!directoryToScan.isDirectory()) {
-            return Collections.emptySet();
-        }
-
-        try {
-            logger.fine("scanning " + directoryToScan + " for jtreg tests");
-            File workDirectory = new File(localTemp, "JTwork");
-            new Mkdir().mkdirs(workDirectory);
-
-            /*
-             * This code is capable of extracting test descriptions using jtreg 4.0
-             * and its bundled copy of jtharness. As a command line tool, jtreg's
-             * API wasn't intended for this style of use. As a consequence, this
-             * code is fragile and may be incompatible with newer versions of jtreg.
-             */
-            TestSuite testSuite = new RegressionTestSuite(directoryToScan);
-            WorkDirectory wd = WorkDirectory.convert(workDirectory, testSuite);
-            TestResultTable resultTable = wd.getTestResultTable();
-
-            Set<TestRun> result = new LinkedHashSet<TestRun>();
-            for (Iterator i = resultTable.getIterator(); i.hasNext(); ) {
-                TestResult testResult = (TestResult) i.next();
-                TestDescription description = testResult.getDescription();
-                String qualifiedName = qualifiedName(description);
-                String suiteName = suiteName(description);
-                String testName = description.getName();
-                String testClass = description.getName();
-                result.add(new TestRun(description.getDir(), description.getFile(),
-                        testClass, suiteName, testName, qualifiedName,
-                        description.getTitle(),
-                        getRunnerClass(), getRunnerJava(), getRunnerClasspath()));
-            }
-            return result;
-        } catch (Exception jtregFailure) {
-            // jtreg shouldn't fail in practice
-            throw new RuntimeException(jtregFailure);
-        }
-    }
-
-    /**
-     * Returns a fully qualified name of the form {@code
-     * java.lang.Math.PowTests} from the given test description. The returned
-     * name is appropriate for use in a filename.
-     */
-    String qualifiedName(TestDescription testDescription) {
-        return suiteName(testDescription) + "." + escape(testDescription.getName());
-    }
-
-    /**
-     * Returns the name of the class under test, such as {@code java.lang.Math}.
-     */
-    String suiteName(TestDescription testDescription) {
-        String dir = testDescription.getDir().toString();
-        int separatorIndex = dir.indexOf(TEST_ROOT);
-        return separatorIndex != -1
-                ? escape(dir.substring(separatorIndex + TEST_ROOT.length()))
-                : escape(dir);
-    }
-
-    /**
-     * Returns a similar string with filename-unsafe characters replaced by
-     * filename-safe ones.
-     */
-    private String escape(String s) {
-        return s.replace('/', '.');
-    }
-
-    public Class<? extends Runner> getRunnerClass() {
-        return JtregRunner.class;
-    }
-
-    public File getRunnerJava() {
-        return new File(DalvikRunner.HOME_JAVA, "dalvik/runner/JtregRunner.java");
-    }
-
-    public Classpath getRunnerClasspath() {
-        return new Classpath();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/JtregRunner.java b/libcore/tools/runner/java/dalvik/runner/JtregRunner.java
deleted file mode 100644
index 633a529..0000000
--- a/libcore/tools/runner/java/dalvik/runner/JtregRunner.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.lang.reflect.Method;
-
-/**
- * Runs a jtreg test.
- */
-public final class JtregRunner implements Runner {
-
-    private Method main;
-
-    public void prepareTest(Class<?> testClass) {
-        try {
-            main = testClass.getMethod("main", String[].class);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean test(Class<?> testClass) {
-        try {
-            main.invoke(null, new Object[] { new String[0] });
-            return true;
-        } catch (Throwable failure) {
-            failure.printStackTrace();
-            return false;
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/MainFinder.java b/libcore/tools/runner/java/dalvik/runner/MainFinder.java
deleted file mode 100644
index 282969f..0000000
--- a/libcore/tools/runner/java/dalvik/runner/MainFinder.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * Create {@link TestRun}s for {@code .java} files with main methods in them.
- */
-class MainFinder extends NamingPatternCodeFinder {
-
-    @Override protected boolean matches(File file) {
-        return file.getName().endsWith(".java");
-    }
-
-    @Override protected String testName(File file) {
-        return "main";
-    }
-
-    public Class<? extends Runner> getRunnerClass() {
-        return MainRunner.class;
-    }
-
-    public File getRunnerJava() {
-        return new File(DalvikRunner.HOME_JAVA, "dalvik/runner/MainRunner.java");
-    }
-
-    public Classpath getRunnerClasspath() {
-        return new Classpath();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/MainRunner.java b/libcore/tools/runner/java/dalvik/runner/MainRunner.java
deleted file mode 100644
index 34a4a47..0000000
--- a/libcore/tools/runner/java/dalvik/runner/MainRunner.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.lang.reflect.Method;
-
-/**
- * Runs a Java class with a main method.
- */
-public final class MainRunner implements Runner {
-
-    private Method main;
-
-    public void prepareTest(Class<?> testClass) {
-        try {
-            main = testClass.getMethod("main", String[].class);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean test(Class<?> testClass) {
-        try {
-            main.invoke(null, new Object[] { new String[0] });
-        } catch (Throwable ex) {
-            ex.printStackTrace();
-        }
-        return false; // always print main method output
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Md5Cache.java b/libcore/tools/runner/java/dalvik/runner/Md5Cache.java
deleted file mode 100644
index f6ba85d..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Md5Cache.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.security.MessageDigest;
-import java.util.logging.Logger;
-
-/**
- * Caches content by MD5.
- */
-public final class Md5Cache {
-    private static final Logger logger = Logger.getLogger(Md5Cache.class.getName());
-    private static final File CACHE_ROOT = new File("/tmp/vogar-md5-cache/");
-
-    private final String keyPrefix;
-
-    /**
-     * Creates a new cache accessor. There's only one directory on disk, so 'keyPrefix' is really
-     * just a convenience for humans inspecting the cache.
-     */
-    public Md5Cache(String keyPrefix) {
-        this.keyPrefix = keyPrefix;
-    }
-
-    /**
-     * Returns an ASCII hex representation of the MD5 of the content of 'file'.
-     */
-    private static String md5(File file) {
-        byte[] digest = null;
-        try {
-            MessageDigest digester = MessageDigest.getInstance("MD5");
-            byte[] bytes = new byte[8192];
-            FileInputStream in = new FileInputStream(file);
-            try {
-                int byteCount;
-                while ((byteCount = in.read(bytes)) > 0) {
-                    digester.update(bytes, 0, byteCount);
-                }
-                digest = digester.digest();
-            } finally {
-                in.close();
-            }
-        } catch (Exception cause) {
-            throw new RuntimeException("Unable to compute MD5 of \"" + file + "\"", cause);
-        }
-        return (digest == null) ? null : byteArrayToHexString(digest);
-    }
-
-    private static String byteArrayToHexString(byte[] bytes) {
-        StringBuilder result = new StringBuilder();
-        for (byte b : bytes) {
-            result.append(Integer.toHexString((b >> 4) & 0xf));
-            result.append(Integer.toHexString(b & 0xf));
-        }
-        return result.toString();
-    }
-
-    /**
-     * Returns the appropriate key for a dex file corresponding to the contents of 'classpath'.
-     * Returns null if we don't think it's possible to cache the given classpath.
-     */
-    public File makeKey(Classpath classpath) {
-        // Do we have it in cache?
-        String key = keyPrefix;
-        for (File element : classpath.getElements()) {
-            // We only cache dexed .jar files, not directories.
-            if (!element.toString().endsWith(".jar")) {
-                return null;
-            }
-            key += "-" + md5(element);
-        }
-        return new File(CACHE_ROOT, key);
-    }
-
-    /**
-     * Copy the file 'content' into the cache with the given 'key'.
-     * This method assumes you're using the appropriate key for the content (and has no way to
-     * check because the key is a function of the inputs that made the content, not the content
-     * itself).
-     * We accept a null so the caller doesn't have to pay attention to whether we think we can
-     * cache the content or not.
-     */
-    public void insert(File key, File content) {
-        if (key == null) {
-            return;
-        }
-        logger.fine("inserting " + key);
-        if (!key.toString().startsWith(CACHE_ROOT.toString())) {
-            throw new IllegalArgumentException("key '" + key + "' not a valid cache key");
-        }
-        // Make sure the cache exists first.
-        new Mkdir().mkdirs(CACHE_ROOT);
-        // Copy it onto the same file system first, then atomically move it into place.
-        // That way, if we fail, we don't leave anything dangerous lying around.
-        File temporary = new File(key + ".tmp");
-        new Command.Builder().args("cp", content, temporary).execute();
-        new Command.Builder().args("mv", temporary, key).execute();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Mkdir.java b/libcore/tools/runner/java/dalvik/runner/Mkdir.java
deleted file mode 100644
index 46dcf08..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Mkdir.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * A mkdir command.
- */
-final class Mkdir {
-
-    public void mkdirs(File directory) {
-        new Command("mkdir", "-p", directory.getPath()).execute();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Mode.java b/libcore/tools/runner/java/dalvik/runner/Mode.java
deleted file mode 100644
index 0ad7172..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Mode.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Logger;
-import java.util.regex.Pattern;
-
-/**
- * A Mode for running tests. Examples including running in a virtual
- * machine either on the host or a device or within a specific context
- * such as within an Activity.
- */
-abstract class Mode {
-
-    private static final Pattern JAVA_TEST_PATTERN = Pattern.compile("\\/(\\w)+\\.java$");
-
-    private static final Logger logger = Logger.getLogger(Mode.class.getName());
-
-    protected final Environment environment;
-    protected final long timeoutSeconds;
-    protected final File sdkJar;
-    protected final PrintStream tee;
-
-    /**
-     * Set of Java files needed to built to tun the currently selected
-     * set of tests. We build a subset rather than all the files all
-     * the time to reduce dex packaging costs in the activity mode
-     * case.
-     */
-    protected final Set<File> testRunnerJava = new HashSet<File>();
-
-    /**
-     * Classpath of testRunner on the host side including any
-     * supporting libraries for testRunnerJava. Useful for compiling
-     * testRunnerJava as well as executing it on the host. Execution
-     * on the device requires further packaging typically done by
-     * postCompileTestRunner.
-     */
-    protected final Classpath testRunnerClasspath = new Classpath();
-
-    // TODO: this should be an immutable collection.
-    protected final Classpath testClasspath = Classpath.of(
-            new File("dalvik/libcore/tools/runner/lib/jsr305.jar"),
-            new File("dalvik/libcore/tools/runner/lib/guava.jar"),
-            new File("dalvik/libcore/tools/runner/lib/caliper.jar"),
-            // TODO: we should be able to work with a shipping SDK, not depend on out/...
-            // dalvik/libcore/**/test/ for junit
-            // 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_intermediates/classes.jar").getAbsoluteFile());
-
-    Mode(Environment environment, long timeoutSeconds, File sdkJar, PrintStream tee) {
-        this.environment = environment;
-        this.timeoutSeconds = timeoutSeconds;
-        this.sdkJar = sdkJar;
-        this.tee = tee;
-    }
-
-    /**
-     * Initializes the temporary directories and test harness necessary to run
-     * tests.
-     */
-    protected void prepare(Set<File> testRunnerJava, Classpath testRunnerClasspath) {
-        this.testRunnerJava.add(new File(DalvikRunner.HOME_JAVA, "dalvik/runner/TestRunner.java"));
-        this.testRunnerJava.addAll(dalvikAnnotationSourceFiles());
-        this.testRunnerJava.addAll(testRunnerJava);
-        this.testRunnerClasspath.addAll(testRunnerClasspath);
-        environment.prepare();
-        compileTestRunner();
-    }
-
-    private List<File> dalvikAnnotationSourceFiles() {
-        // Hopefully one day we'll strip the dalvik annotations out, but until then we need to make
-        // them available to javac(1).
-        File sourceDir = new File("dalvik/libcore/dalvik/src/main/java/dalvik/annotation");
-        File[] javaSourceFiles = sourceDir.listFiles(new FilenameFilter() {
-            public boolean accept(File dir, String filename) {
-                return filename.endsWith(".java");
-            }
-        });
-        return Arrays.asList(javaSourceFiles);
-    }
-
-    private void compileTestRunner() {
-        logger.fine("build testrunner");
-
-        Classpath classpath = new Classpath();
-        classpath.addAll(testClasspath);
-        classpath.addAll(testRunnerClasspath);
-
-        File base = environment.testRunnerClassesDir();
-        new Mkdir().mkdirs(base);
-        new Javac()
-                .bootClasspath(sdkJar)
-                .classpath(classpath)
-                .sourcepath(DalvikRunner.HOME_JAVA)
-                .destination(base)
-                .compile(testRunnerJava);
-        postCompileTestRunner();
-    }
-
-    /**
-     * Hook method called after TestRunner compilation.
-     */
-    abstract protected void postCompileTestRunner();
-
-    /**
-     * Compiles classes for the given test and makes them ready for execution.
-     * If the test could not be compiled successfully, it will be updated with
-     * the appropriate test result.
-     */
-    public void buildAndInstall(TestRun testRun) {
-        logger.fine("build " + testRun.getQualifiedName());
-
-        boolean testCompiled;
-        try {
-            testCompiled = compileTest(testRun);
-            if (!testCompiled) {
-                testRun.setResult(Result.UNSUPPORTED, Collections.<String>emptyList());
-                return;
-            }
-        } catch (CommandFailedException e) {
-            testRun.setResult(Result.COMPILE_FAILED, e.getOutputLines());
-            return;
-        } catch (IOException e) {
-            testRun.setResult(Result.ERROR, e);
-            return;
-        }
-        testRun.setTestCompiled(testCompiled);
-        environment.prepareUserDir(testRun);
-    }
-
-    /**
-     * Compiles the classes for the described test.
-     *
-     * @return the path to the compiled classes (directory or jar), or {@code
-     *      null} if the test could not be compiled.
-     * @throws CommandFailedException if javac fails
-     */
-    private boolean compileTest(TestRun testRun) throws IOException {
-        if (!JAVA_TEST_PATTERN.matcher(testRun.getTestJava().toString()).find()) {
-            return false;
-        }
-
-        String qualifiedName = testRun.getQualifiedName();
-        File testClassesDir = environment.testClassesDir(testRun);
-        new Mkdir().mkdirs(testClassesDir);
-        FileOutputStream propertiesOut = new FileOutputStream(
-                new File(testClassesDir, TestProperties.FILE));
-        Properties properties = new Properties();
-        fillInProperties(properties, testRun);
-        properties.store(propertiesOut, "generated by " + Mode.class.getName());
-        propertiesOut.close();
-
-        Classpath classpath = new Classpath();
-        classpath.addAll(testClasspath);
-        classpath.addAll(testRun.getRunnerClasspath());
-
-        Set<File> sourceFiles = new HashSet<File>();
-        sourceFiles.add(testRun.getTestJava());
-        sourceFiles.addAll(dalvikAnnotationSourceFiles());
-
-        // compile the test case
-        new Javac()
-                .bootClasspath(sdkJar)
-                .classpath(classpath)
-                .sourcepath(testRun.getTestDirectory())
-                .destination(testClassesDir)
-                .compile(sourceFiles);
-        postCompileTest(testRun);
-        return true;
-    }
-
-    /**
-     * Hook method called after test compilation.
-     *
-     * @param testRun The test being compiled
-     */
-    abstract protected void postCompileTest(TestRun testRun);
-
-
-    /**
-     * Fill in properties for running in this mode
-     */
-    protected void fillInProperties(Properties properties, TestRun testRun) {
-        properties.setProperty(TestProperties.TEST_CLASS, testRun.getTestClass());
-        properties.setProperty(TestProperties.QUALIFIED_NAME, testRun.getQualifiedName());
-        properties.setProperty(TestProperties.RUNNER_CLASS, testRun.getRunnerClass().getName());
-    }
-
-    /**
-     * Runs the test, and updates its test result.
-     */
-    void runTest(TestRun testRun) {
-        if (!testRun.isRunnable()) {
-            throw new IllegalArgumentException();
-        }
-
-        List<String> output;
-        try {
-            output = runTestCommand(testRun);
-        } catch (TimeoutException e) {
-            testRun.setResult(Result.EXEC_TIMEOUT,
-                Collections.singletonList("Exceeded timeout! (" + timeoutSeconds + "s)"));
-            return;
-        } catch (Exception e) {
-            testRun.setResult(Result.ERROR, e);
-            return;
-        }
-        // we only look at the output of the last command
-        if (output.isEmpty()) {
-            testRun.setResult(Result.ERROR,
-                    Collections.singletonList("No output returned!"));
-            return;
-        }
-
-        Result result = TestProperties.RESULT_SUCCESS.equals(output.get(output.size() - 1))
-                ? Result.SUCCESS
-                : Result.EXEC_FAILED;
-        testRun.setResult(result, output.subList(0, output.size() - 1));
-    }
-
-    /**
-     * Run the actual test to gather output
-     */
-    protected abstract List<String> runTestCommand(TestRun testRun)
-        throws TimeoutException;
-
-    /**
-     * Deletes files and releases any resources required for the execution of
-     * the given test.
-     */
-    void cleanup(TestRun testRun) {
-        environment.cleanup(testRun);
-    }
-
-    /**
-     * Cleans up after all test runs have completed.
-     */
-    void shutdown() {
-        environment.shutdown();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/NamingPatternCodeFinder.java b/libcore/tools/runner/java/dalvik/runner/NamingPatternCodeFinder.java
deleted file mode 100644
index 19c9df2..0000000
--- a/libcore/tools/runner/java/dalvik/runner/NamingPatternCodeFinder.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.LinkedHashSet;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * A code finder that traverses through the directory tree looking for matching
- * naming patterns.
- */
-abstract class NamingPatternCodeFinder implements CodeFinder {
-
-    private final String PACKAGE_PATTERN = "(?m)^\\s*package\\s+(\\S+)\\s*;";
-
-    private final String TYPE_DECLARATION_PATTERN
-            = "(?m)\\b(?:public|private)\\s+(?:final\\s+)?(?:interface|class|enum)\\b";
-
-    public Set<TestRun> findTests(File testDirectory) {
-        Set<TestRun> result = new LinkedHashSet<TestRun>();
-        findTestsRecursive(result, testDirectory);
-        return result;
-    }
-
-    /**
-     * Returns true if {@code file} contains a test class of this type.
-     */
-    protected boolean matches(File file) {
-        return file.getName().endsWith(".java");
-    }
-
-    protected abstract String testName(File file);
-
-    private void findTestsRecursive(Set<TestRun> sink, File file) {
-        if (file.isDirectory()) {
-            for (File child : file.listFiles()) {
-                findTestsRecursive(sink, child);
-            }
-            return;
-        }
-
-        if (!matches(file)) {
-            return;
-        }
-
-        String className = fileToClass(file);
-        File testDirectory = file.getParentFile();
-        String testName = testName(file);
-        String testDescription = null;
-        sink.add(new TestRun(testDirectory, file, className, className,
-                testName, className, testDescription,
-                getRunnerClass(), getRunnerJava(), getRunnerClasspath()));
-    }
-
-    /**
-     * Returns the Java classname for the given file. For example, given the
-     * input {@code luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArrayListTest.java},
-     * this returns {@code org.apache.harmony.luni.tests.java.util.ArrayListTest}.
-     */
-    private String fileToClass(File file) {
-        String filePath = file.getPath();
-        if (!filePath.endsWith(".java")) {
-            throw new IllegalArgumentException("Not a .java file: " + file);
-        }
-
-        // We can get the unqualified class name from the path.
-        // It's the last element minus the trailing ".java".
-        String filename = file.getName();
-        String className = filename.substring(0, filename.length() - 5);
-
-        // For the package, the only foolproof way is to look for the package
-        // declaration inside the file.
-        try {
-            String content = Strings.readFile(file);
-            Pattern packagePattern = Pattern.compile(PACKAGE_PATTERN);
-            Matcher packageMatcher = packagePattern.matcher(content);
-            if (!packageMatcher.find()) {
-                // if it doesn't have a package, make sure there's at least a
-                // type declaration otherwise we're probably reading the wrong
-                // kind of file.
-                if (Pattern.compile(TYPE_DECLARATION_PATTERN).matcher(content).find()) {
-                    return className;
-                }
-                throw new IllegalArgumentException("Not a .java file: '" + file + "'\n" + content);
-            }
-            String packageName = packageMatcher.group(1);
-            return packageName + "." + className;
-        } catch (IOException ex) {
-            throw new IllegalArgumentException("Couldn't read '" + file + "': " + ex.getMessage());
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Option.java b/libcore/tools/runner/java/dalvik/runner/Option.java
deleted file mode 100644
index 779aa63..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Option.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates a field as representing a command-line option for OptionParser.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface Option {
-    /**
-     * The names for this option, such as { "-h", "--help" }.
-     * Names must start with one or two '-'s.
-     * An option must have at least one name.
-     */
-    String[] names();
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/OptionParser.java b/libcore/tools/runner/java/dalvik/runner/OptionParser.java
deleted file mode 100644
index 3516264..0000000
--- a/libcore/tools/runner/java/dalvik/runner/OptionParser.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Parses command line options.
- *
- * Strings in the passed-in String[] are parsed left-to-right. Each
- * String is classified as a short option (such as "-v"), a long
- * option (such as "--verbose"), an argument to an option (such as
- * "out.txt" in "-f out.txt"), or a non-option positional argument.
- *
- * A simple short option is a "-" followed by a short option
- * character. If the option requires an argument (which is true of any
- * non-boolean option), it may be written as a separate parameter, but
- * need not be. That is, "-f out.txt" and "-fout.txt" are both
- * acceptable.
- *
- * It is possible to specify multiple short options after a single "-"
- * as long as all (except possibly the last) do not require arguments.
- *
- * A long option begins with "--" followed by several characters. If
- * the option requires an argument, it may be written directly after
- * the option name, separated by "=", or as the next argument. (That
- * is, "--file=out.txt" or "--file out.txt".)
- *
- * A boolean long option '--name' automatically gets a '--no-name'
- * companion. Given an option "--flag", then, "--flag", "--no-flag",
- * "--flag=true" and "--flag=false" are all valid, though neither
- * "--flag true" nor "--flag false" are allowed (since "--flag" by
- * itself is sufficient, the following "true" or "false" is
- * interpreted separately). You can use "yes" and "no" as synonyms for
- * "true" and "false".
- *
- * Each String not starting with a "-" and not a required argument of
- * a previous option is a non-option positional argument, as are all
- * successive Strings. Each String after a "--" is a non-option
- * positional argument.
- *
- * Parsing of numeric fields such byte, short, int, long, float, and
- * double fields is supported. This includes both unboxed and boxed
- * versions (e.g. int vs Integer). If there is a problem parsing the
- * argument to match the desired type, a runtime exception is thrown.
- *
- * File option fields are supported by simply wrapping the string
- * argument in a File object without testing for the existance of the
- * file.
- *
- * Parameterized Collection fields such as List<File> and Set<String>
- * are supported as long as the parameter type is otherwise supported
- * by the option parser. The collection field should be initialized
- * with an appropriate collection instance.
- *
- * The fields corresponding to options are updated as their options
- * are processed. Any remaining positional arguments are returned as a
- * List<String>.
- *
- * Here's a simple example:
- *
- * // This doesn't need to be a separate class, if your application doesn't warrant it.
- * // Non-@Option fields will be ignored.
- * class Options {
- *     @Option(names = { "-q", "--quiet" })
- *     boolean quiet = false;
- *
- *     // Boolean options require a long name if it's to be possible to explicitly turn them off.
- *     // Here the user can use --no-color.
- *     @Option(names = { "--color" })
- *     boolean color = true;
- *
- *     @Option(names = { "-m", "--mode" })
- *     String mode = "standard; // Supply a default just by setting the field.
- *
- *     @Option(names = { "-p", "--port" })
- *     int portNumber = 8888;
- *
- *     // There's no need to offer a short name for rarely-used options.
- *     @Option(names = { "--timeout" })
- *     double timeout = 1.0;
- *
- *     @Option(names = { "-o", "--output-file" })
- *     File output;
- *
- *     // Multiple options are added to the collection.
- *     // The collection field itself must be non-null.
- *     @Option(names = { "-i", "--input-file" })
- *     List<File> inputs = new ArrayList<File>();
- *
- * }
- *
- * class Main {
- *     public static void main(String[] args) {
- *         Options options = new Options();
- *         List<String> inputFilenames = new OptionParser(options).parse(args);
- *         for (String inputFilename : inputFilenames) {
- *             if (!options.quiet) {
- *                 ...
- *             }
- *             ...
- *         }
- *     }
- * }
- *
- * See also:
- *
- *  the getopt(1) man page
- *  Python's "optparse" module (http://docs.python.org/library/optparse.html)
- *  the POSIX "Utility Syntax Guidelines" (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- *  the GNU "Standards for Command Line Interfaces" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
- */
-public class OptionParser {
-    private static final HashMap<Class<?>, Handler> handlers = new HashMap<Class<?>, Handler>();
-    static {
-        handlers.put(boolean.class, new BooleanHandler());
-        handlers.put(Boolean.class, new BooleanHandler());
-
-        handlers.put(byte.class, new ByteHandler());
-        handlers.put(Byte.class, new ByteHandler());
-        handlers.put(short.class, new ShortHandler());
-        handlers.put(Short.class, new ShortHandler());
-        handlers.put(int.class, new IntegerHandler());
-        handlers.put(Integer.class, new IntegerHandler());
-        handlers.put(long.class, new LongHandler());
-        handlers.put(Long.class, new LongHandler());
-
-        handlers.put(float.class, new FloatHandler());
-        handlers.put(Float.class, new FloatHandler());
-        handlers.put(double.class, new DoubleHandler());
-        handlers.put(Double.class, new DoubleHandler());
-
-        handlers.put(String.class, new StringHandler());
-        handlers.put(File.class, new FileHandler());
-    }
-    Handler getHandler(Type type) {
-        if (type instanceof ParameterizedType) {
-            ParameterizedType parameterizedType = (ParameterizedType) type;
-            Class rawClass = (Class<?>) parameterizedType.getRawType();
-            if (!Collection.class.isAssignableFrom(rawClass)) {
-                throw new RuntimeException("cannot handle non-collection parameterized type " + type);
-            }
-            Type actualType = parameterizedType.getActualTypeArguments()[0];
-            if (!(actualType instanceof Class)) {
-                throw new RuntimeException("cannot handle nested parameterized type " + type);
-            }
-            return getHandler(actualType);
-        }
-        if (type instanceof Class) {
-            if (Collection.class.isAssignableFrom((Class) type)) {
-                // could handle by just having a default of treating
-                // contents as String but consciously decided this
-                // should be an error
-                throw new RuntimeException(
-                        "cannot handle non-parameterized collection " + type + ". " +
-                        "use a generic Collection to specify a desired element type");
-            }
-            return handlers.get((Class<?>) type);
-        }
-        throw new RuntimeException("cannot handle unknown field type " + type);
-    }
-
-    private final Object optionSource;
-    private final HashMap<String, Field> optionMap;
-
-    /**
-     * Constructs a new OptionParser for setting the @Option fields of 'optionSource'.
-     */
-    public OptionParser(Object optionSource) {
-        this.optionSource = optionSource;
-        this.optionMap = makeOptionMap();
-    }
-
-    /**
-     * Parses the command-line arguments 'args', setting the @Option fields of the 'optionSource' provided to the constructor.
-     * Returns a list of the positional arguments left over after processing all options.
-     */
-    public List<String> parse(String[] args) {
-        return parseOptions(Arrays.asList(args).iterator());
-    }
-
-    private List<String> parseOptions(Iterator<String> args) {
-        final List<String> leftovers = new ArrayList<String>();
-
-        // Scan 'args'.
-        while (args.hasNext()) {
-            final String arg = args.next();
-            if (arg.equals("--")) {
-                // "--" marks the end of options and the beginning of positional arguments.
-                break;
-            } else if (arg.startsWith("--")) {
-                // A long option.
-                parseLongOption(arg, args);
-            } else if (arg.startsWith("-")) {
-                // A short option.
-                parseGroupedShortOptions(arg, args);
-            } else {
-                // The first non-option marks the end of options.
-                leftovers.add(arg);
-                break;
-            }
-        }
-
-        // Package up the leftovers.
-        while (args.hasNext()) {
-            leftovers.add(args.next());
-        }
-        return leftovers;
-    }
-
-    private Field fieldForArg(String name) {
-        final Field field = optionMap.get(name);
-        if (field == null) {
-            throw new RuntimeException("unrecognized option '" + name + "'");
-        }
-        return field;
-    }
-
-    private void parseLongOption(String arg, Iterator<String> args) {
-        String name = arg.replaceFirst("^--no-", "--");
-        String value = null;
-
-        // Support "--name=value" as well as "--name value".
-        final int equalsIndex = name.indexOf('=');
-        if (equalsIndex != -1) {
-            value = name.substring(equalsIndex + 1);
-            name = name.substring(0, equalsIndex);
-        }
-
-        final Field field = fieldForArg(name);
-        final Handler handler = getHandler(field.getGenericType());
-        if (value == null) {
-            if (handler.isBoolean()) {
-                value = arg.startsWith("--no-") ? "false" : "true";
-            } else {
-                value = grabNextValue(args, name, field);
-            }
-        }
-        setValue(optionSource, field, arg, handler, value);
-    }
-
-    // Given boolean options a and b, and non-boolean option f, we want to allow:
-    // -ab
-    // -abf out.txt
-    // -abfout.txt
-    // (But not -abf=out.txt --- POSIX doesn't mention that either way, but GNU expressly forbids it.)
-    private void parseGroupedShortOptions(String arg, Iterator<String> args) {
-        for (int i = 1; i < arg.length(); ++i) {
-            final String name = "-" + arg.charAt(i);
-            final Field field = fieldForArg(name);
-            final Handler handler = getHandler(field.getGenericType());
-            String value;
-            if (handler.isBoolean()) {
-                value = "true";
-            } else {
-                // We need a value. If there's anything left, we take the rest of this "short option".
-                if (i + 1 < arg.length()) {
-                    value = arg.substring(i + 1);
-                    i = arg.length() - 1;
-                } else {
-                    value = grabNextValue(args, name, field);
-                }
-            }
-            setValue(optionSource, field, arg, handler, value);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private static void setValue(Object object, Field field, String arg, Handler handler, String valueText) {
-
-        Object value = handler.translate(valueText);
-        if (value == null) {
-            final String type = field.getType().getSimpleName().toLowerCase();
-            throw new RuntimeException("couldn't convert '" + valueText + "' to a " + type + " for option '" + arg + "'");
-        }
-        try {
-            field.setAccessible(true);
-            if (Collection.class.isAssignableFrom(field.getType())) {
-                Collection collection = (Collection) field.get(object);
-                collection.add(value);
-            } else {
-                field.set(object, value);
-            }
-        } catch (IllegalAccessException ex) {
-            throw new RuntimeException("internal error", ex);
-        }
-    }
-
-    // Returns the next element of 'args' if there is one. Uses 'name' and 'field' to construct a helpful error message.
-    private String grabNextValue(Iterator<String> args, String name, Field field) {
-        if (!args.hasNext()) {
-            final String type = field.getType().getSimpleName().toLowerCase();
-            throw new RuntimeException("option '" + name + "' requires a " + type + " argument");
-        }
-        return args.next();
-    }
-
-    // Cache the available options and report any problems with the options themselves right away.
-    private HashMap<String, Field> makeOptionMap() {
-        final HashMap<String, Field> optionMap = new HashMap<String, Field>();
-        final Class<?> optionClass = optionSource.getClass();
-        for (Field field : optionClass.getDeclaredFields()) {
-            if (field.isAnnotationPresent(Option.class)) {
-                final Option option = field.getAnnotation(Option.class);
-                final String[] names = option.names();
-                if (names.length == 0) {
-                    throw new RuntimeException("found an @Option with no name!");
-                }
-                for (String name : names) {
-                    if (optionMap.put(name, field) != null) {
-                        throw new RuntimeException("found multiple @Options sharing the name '" + name + "'");
-                    }
-                }
-                if (getHandler(field.getGenericType()) == null) {
-                    throw new RuntimeException("unsupported @Option field type '" + field.getType() + "'");
-                }
-            }
-        }
-        return optionMap;
-    }
-
-    static abstract class Handler {
-        // Only BooleanHandler should ever override this.
-        boolean isBoolean() {
-            return false;
-        }
-
-        /**
-         * Returns an object of appropriate type for the given Handle, corresponding to 'valueText'.
-         * Returns null on failure.
-         */
-        abstract Object translate(String valueText);
-    }
-
-    static class BooleanHandler extends Handler {
-        @Override boolean isBoolean() {
-            return true;
-        }
-
-        Object translate(String valueText) {
-            if (valueText.equalsIgnoreCase("true") || valueText.equalsIgnoreCase("yes")) {
-                return Boolean.TRUE;
-            } else if (valueText.equalsIgnoreCase("false") || valueText.equalsIgnoreCase("no")) {
-                return Boolean.FALSE;
-            }
-            return null;
-        }
-    }
-
-    static class ByteHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Byte.parseByte(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class ShortHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Short.parseShort(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class IntegerHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Integer.parseInt(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class LongHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Long.parseLong(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class FloatHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Float.parseFloat(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class DoubleHandler extends Handler {
-        Object translate(String valueText) {
-            try {
-                return Double.parseDouble(valueText);
-            } catch (NumberFormatException ex) {
-                return null;
-            }
-        }
-    }
-
-    static class StringHandler extends Handler {
-        Object translate(String valueText) {
-            return valueText;
-        }
-    }
-
-    static class FileHandler extends Handler {
-        Object translate(String valueText) {
-            return new File(valueText);
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Result.java b/libcore/tools/runner/java/dalvik/runner/Result.java
deleted file mode 100644
index 461f102..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Result.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-/**
- * The result of a test or benchmark execution.
- */
-public enum Result {
-
-    /**
-     * A test that cannot be run by this harness, such as a shell script.
-     */
-    UNSUPPORTED,
-
-    COMPILE_FAILED,
-    EXEC_FAILED,
-    EXEC_TIMEOUT,
-    ERROR,
-    SUCCESS
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Rm.java b/libcore/tools/runner/java/dalvik/runner/Rm.java
deleted file mode 100644
index 1fc11d9..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Rm.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-
-/**
- * A rm command.
- */
-final class Rm {
-
-    public void file(File file) {
-        new Command.Builder()
-                .args("rm")
-                .args("-f")
-                .args(file)
-                .execute();
-    }
-
-    public void directoryTree(File directory) {
-        new Command.Builder()
-                .args("rm")
-                .args("-rf")
-                .args(directory)
-                .execute();
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Runner.java b/libcore/tools/runner/java/dalvik/runner/Runner.java
deleted file mode 100644
index 7d7b0ee..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Runner.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-/**
- * Interface between the generic TestRunner and the more specific
- * backend implementations that know about specific types of tests.
- */
-public interface Runner {
-
-    public void prepareTest(Class<?> testClass);
-
-    public boolean test(Class<?> testClass);
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Strings.java b/libcore/tools/runner/java/dalvik/runner/Strings.java
deleted file mode 100644
index e696841..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Strings.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package dalvik.runner;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * Utility methods for strings.
- */
-public class Strings {
-
-    static String readFile(File f) throws IOException {
-        StringBuilder result = new StringBuilder();
-        BufferedReader in =
-                new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
-        String line;
-        while ((line = in.readLine()) != null) {
-            result.append(line);
-            result.append('\n');
-        }
-        in.close();
-        return result.toString();
-    }
-
-    static String join(Object[] objects, String delimiter) {
-        return join(Arrays.asList(objects), delimiter);
-    }
-
-    static String join(Iterable<?> objects, String delimiter) {
-        Iterator<?> i = objects.iterator();
-        if (!i.hasNext()) {
-            return "";
-        }
-
-        StringBuilder result = new StringBuilder();
-        result.append(i.next());
-        while(i.hasNext()) {
-            result.append(delimiter).append(i.next());
-        }
-        return result.toString();
-    }
-
-    static String[] objectsToStrings(Object[] objects) {
-        String[] result = new String[objects.length];
-        int i = 0;
-        for (Object o : objects) {
-            result[i++] = o.toString();
-        }
-        return result;
-    }
-
-    static String[] objectsToStrings(Collection<?> objects) {
-        return objectsToStrings(objects.toArray());
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/TestProperties.java b/libcore/tools/runner/java/dalvik/runner/TestProperties.java
deleted file mode 100644
index 1e90799..0000000
--- a/libcore/tools/runner/java/dalvik/runner/TestProperties.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-/**
- * TestProperties is a common class of constants shared between the
- * DalvikRunner on the host and TestRunner classes potentially running
- * on other devices.
- */
-final public class TestProperties {
-
-    /**
-     * The name of the test properties file within the {@code .jar} file.
-     */
-    public static final String FILE = "test.properties";
-
-    /**
-     * Name of the property giving the test's main class name. This class should
-     * have a {@code public static void main(String[] args)} method.
-     */
-    public static final String TEST_CLASS = "testClass";
-
-    /**
-     * Name of the property giving the test's name, such as {@code
-     * java.math.BigDecimal.PowTests}.
-     */
-    public static final String QUALIFIED_NAME = "qualifiedName";
-
-    /**
-     * Name of the property used by TestRunner to determine which
-     * class to use as the Runner name. This class should implement
-     * Runner.
-     */
-    public static final String RUNNER_CLASS = "runnerClass";
-
-    /**
-     * Name of the property used by TestActivity to the test directory.
-     */
-    public static final String DEVICE_RUNNER_DIR = "deviceRunnerDir";
-
-
-    /**
-     * The output file written by TestActivity
-     */
-    public static final String RESULT_FILE = "result.txt";
-
-    /**
-     * Result value for successful test
-     */
-    public static final String RESULT_SUCCESS = "SUCCESS";
-
-    /**
-     * Result value for failed test
-     */
-    public static final String RESULT_FAILURE = "FAILURE";
-
-    public static String result(boolean success) {
-        return success ? RESULT_SUCCESS : RESULT_FAILURE;
-    }
-
-    /**
-     * This class should not be instantiated
-     */
-    private TestProperties() {}
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/TestRun.java b/libcore/tools/runner/java/dalvik/runner/TestRun.java
deleted file mode 100644
index c610b25..0000000
--- a/libcore/tools/runner/java/dalvik/runner/TestRun.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A test run and its outcome. This class tracks the complete lifecycle of a
- * single test run:
- * <ol>
- *   <li>the test source code (test directory, java file, test class)
- *   <li>the test identity (suite name, test name, qualified name)
- *   <li>the code to execute (test classes, user dir)
- *   <li>the result of execution (expected result, result, output lines)
- * </ol>
- */
-public final class TestRun {
-
-    private final File testDirectory;
-    private final File testJava;
-    private final String testClass;
-    private final Class<? extends Runner> runnerClass;
-    private final File runnerJava;
-    private final Classpath runnerClasspath;
-
-    private final String suiteName;
-    private final String testName;
-    private final String qualifiedName;
-    private final String description;
-
-    private boolean testCompiled;
-    private File userDir = new File(System.getProperty("user.dir"));
-
-    private ExpectedResult expectedResult = ExpectedResult.SUCCESS;
-    private Result result;
-    private List<String> outputLines;
-
-    public TestRun(File testDirectory, File testJava, String testClass,
-            String suiteName, String testName, String qualifiedName,
-            String description, Class<? extends Runner> runnerClass,
-            File runnerJava, Classpath runnerClasspath) {
-        this.qualifiedName = qualifiedName;
-        this.suiteName = suiteName;
-        this.testName = testName;
-        this.testDirectory = testDirectory;
-        this.testJava = testJava;
-        this.description = description;
-        this.testClass = testClass;
-        this.runnerClass = runnerClass;
-        this.runnerJava = runnerJava;
-        this.runnerClasspath = runnerClasspath;
-    }
-
-    /**
-     * Returns the local directory containing this test's java file.
-     */
-    public File getTestDirectory() {
-        return testDirectory;
-    }
-
-    public File getTestJava() {
-        return testJava;
-    }
-
-    /**
-     * Returns the executable test's classname, such as java.lang.IntegerTest
-     * or BitTwiddle.
-     */
-    public String getTestClass() {
-        return testClass;
-    }
-
-    /**
-     * Returns the test suite name, such as java.lang.Integer or
-     * java.lang.IntegerTest.
-     */
-    public String getSuiteName() {
-        return suiteName;
-    }
-
-    /**
-     * Returns the specific test name, such as BitTwiddle or testBitTwiddle.
-     */
-    public String getTestName() {
-        return testName;
-    }
-
-    /**
-     * Returns a unique identifier for this test.
-     */
-    public String getQualifiedName() {
-        return qualifiedName;
-    }
-
-    /**
-     * Returns an English description of this test, or null if no such
-     * description is known.
-     */
-    public String getDescription() {
-        return description;
-    }
-
-    public void setExpectedResult(ExpectedResult expectedResult) {
-        this.expectedResult = expectedResult;
-    }
-
-    /**
-     * Set when the test is successfully compiled.
-     */
-    public void setTestCompiled(boolean testCompiled) {
-        this.testCompiled = testCompiled;
-    }
-
-    public boolean getTestCompiled() {
-        return testCompiled;
-    }
-
-    /**
-     * Initializes the directory from which local files can be read by the test.
-     */
-    public void setUserDir(File base) {
-        this.userDir = base;
-    }
-
-    public File getUserDir() {
-        return userDir;
-    }
-
-    /**
-     * Returns true if this test is ready for execution. Such tests have their
-     * classpath prepared and have not yet been assigned a result.
-     */
-    public boolean isRunnable() {
-        return testCompiled && result == null;
-    }
-
-    public void setResult(Result result, Throwable e) {
-        setResult(result, throwableToLines(e));
-    }
-
-    public void setResult(Result result, List<String> outputLines) {
-        if (this.result != null) {
-            throw new IllegalStateException("result already set");
-        }
-
-        this.result = result;
-        this.outputLines = outputLines;
-    }
-
-    private static List<String> throwableToLines(Throwable t) {
-        StringWriter writer = new StringWriter();
-        PrintWriter out = new PrintWriter(writer);
-        t.printStackTrace(out);
-        return Arrays.asList(writer.toString().split("\\n"));
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public List<String> getOutputLines() {
-        return outputLines;
-    }
-
-    public Class<? extends Runner> getRunnerClass() {
-        return runnerClass;
-    }
-
-    public File getRunnerJava() {
-        return runnerJava;
-    }
-
-    public Classpath getRunnerClasspath() {
-        return runnerClasspath;
-    }
-
-    /**
-     * Returns true if the outcome of this run matches what was expected.
-     */
-    public boolean isExpectedResult() {
-        return result == expectedResult.getResult() && matchesExpectedPattern();
-    }
-
-    /**
-     * Returns true if the test's output matches the expected output.
-     */
-    private boolean matchesExpectedPattern() {
-        return expectedResult.getPattern()
-                .matcher(Strings.join(outputLines, "\n"))
-                .matches();
-    }
-
-    /**
-     * Returns the failure message for this failed test run. This message is
-     * intended to help to diagnose why the test result didn't match what was
-     * expected.
-     */
-    public String getFailureMessage() {
-        StringBuilder builder = new StringBuilder();
-
-        if (expectedResult.getResult() != Result.SUCCESS
-                && expectedResult.getResult() != result) {
-            builder.append("Expected result: ")
-                    .append(expectedResult.getResult())
-                    .append("\n");
-        }
-
-        if (!matchesExpectedPattern()) {
-            builder.append("Expected output to match \"")
-                    .append(expectedResult.getPattern().pattern())
-                    .append("\"\n");
-        }
-
-        for (String output : outputLines) {
-            builder.append(output).append("\n");
-        }
-
-        return builder.toString();
-    }
-
-    @Override public String toString() {
-        return qualifiedName;
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/TestRunner.java b/libcore/tools/runner/java/dalvik/runner/TestRunner.java
deleted file mode 100644
index a706d40..0000000
--- a/libcore/tools/runner/java/dalvik/runner/TestRunner.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
- * Runs a test.
- */
-public class TestRunner {
-
-    protected final Properties properties;
-
-    protected final String qualifiedName;
-    protected final Class<?> testClass;
-    protected final Class<?> runnerClass;
-
-    protected TestRunner () {
-        properties = loadProperties();
-        qualifiedName = properties.getProperty(TestProperties.QUALIFIED_NAME);
-        testClass = classProperty(TestProperties.TEST_CLASS, Object.class);
-        runnerClass = classProperty(TestProperties.RUNNER_CLASS, Runner.class);
-    }
-
-    protected static Properties loadProperties() {
-        Properties properties = new Properties();
-        try {
-            InputStream propertiesStream = TestRunner.class.getResourceAsStream(
-                    "/" + TestProperties.FILE);
-            if (propertiesStream == null) {
-                throw new RuntimeException(TestProperties.FILE + " missing!");
-            }
-            properties.load(propertiesStream);
-            return properties;
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private Class<?> classProperty(String propertyName, Class<?> superClass) {
-        String className = properties.getProperty(propertyName);
-        if (className == null) {
-            throw new IllegalArgumentException("Could not find property for " +
-                                               propertyName);
-        }
-        try {
-            Class<?> klass = Class.forName(className);
-            if (!superClass.isAssignableFrom(klass)) {
-                throw new IllegalArgumentException(
-                        className + " can not be assigned to " + Runner.class);
-            }
-            return klass;
-        } catch (ClassNotFoundException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean run() {
-        Runner runner;
-        try {
-            runner = (Runner) runnerClass.newInstance();
-        } catch (InstantiationException e) {
-            throw new RuntimeException(e);
-        } catch (IllegalAccessException e) {
-            throw new RuntimeException(e);
-        }
-        runner.prepareTest(testClass);
-        return runner.test(testClass);
-    }
-
-    public static void main(String[] args) {
-        System.out.println(TestProperties.result(new TestRunner().run()));
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Threads.java b/libcore/tools/runner/java/dalvik/runner/Threads.java
deleted file mode 100644
index 58b075b..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Threads.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
-
-/**
- * Utility methods for working with threads.
- */
-class Threads {
-
-    public static ThreadFactory daemonThreadFactory() {
-        return new ThreadFactory() {
-            public Thread newThread(Runnable r) {
-                Thread thread = new Thread(r, r.toString());
-                thread.setDaemon(true);
-                return thread;
-            }
-        };
-    }
-
-    public static ExecutorService threadPerCpuExecutor() {
-        return Executors.newFixedThreadPool(
-                Runtime.getRuntime().availableProcessors(), daemonThreadFactory());
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/Vm.java b/libcore/tools/runner/java/dalvik/runner/Vm.java
deleted file mode 100644
index 8ff5858..0000000
--- a/libcore/tools/runner/java/dalvik/runner/Vm.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Logger;
-
-/**
- * A Java-like virtual machine for compiling and running tests.
- */
-public abstract class Vm extends Mode {
-
-    private static final Logger logger = Logger.getLogger(Vm.class.getName());
-
-    protected final List<String> additionalVmArgs;
-
-    Vm(Environment environment, long timeoutSeconds, File sdkJar,
-           PrintStream tee, List<String> additionalVmArgs) {
-        super(environment, timeoutSeconds, sdkJar, tee);
-        this.additionalVmArgs = additionalVmArgs;
-    }
-
-    /**
-     * Returns a VM for test execution.
-     */
-    @Override protected List<String> runTestCommand(TestRun testRun)
-            throws TimeoutException {
-        Command command = newVmCommandBuilder(testRun.getUserDir())
-                .classpath(getRuntimeSupportClasspath(testRun))
-                .userDir(testRun.getUserDir())
-                .debugPort(environment.debugPort)
-                .vmArgs(additionalVmArgs)
-                .mainClass(TestRunner.class.getName())
-                .output(tee)
-                .build();
-        return command.executeWithTimeout(timeoutSeconds);
-    }
-
-    /**
-     * Returns a VM for test execution.
-     */
-    protected abstract VmCommandBuilder newVmCommandBuilder(File workingDirectory);
-
-    /**
-     * Returns the classpath containing JUnit and the dalvik annotations
-     * required for test execution.
-     */
-    protected abstract Classpath getRuntimeSupportClasspath(TestRun testRun);
-
-    /**
-     * Builds a virtual machine command.
-     */
-    public static class VmCommandBuilder {
-        private File temp;
-        private Classpath classpath = new Classpath();
-        private File workingDir;
-        private File userDir;
-        private Integer debugPort;
-        private String mainClass;
-        private PrintStream output;
-        private List<String> vmCommand = Collections.singletonList("java");
-        private List<String> vmArgs = new ArrayList<String>();
-
-        public VmCommandBuilder vmCommand(String... vmCommand) {
-            this.vmCommand = Arrays.asList(vmCommand.clone());
-            return this;
-        }
-
-        public VmCommandBuilder temp(File temp) {
-            this.temp = temp;
-            return this;
-        }
-
-        public VmCommandBuilder classpath(Classpath classpath) {
-            this.classpath.addAll(classpath);
-            return this;
-        }
-
-        public VmCommandBuilder workingDir(File workingDir) {
-            this.workingDir = workingDir;
-            return this;
-        }
-
-        public VmCommandBuilder userDir(File userDir) {
-            this.userDir = userDir;
-            return this;
-        }
-
-        public VmCommandBuilder debugPort(Integer debugPort) {
-            this.debugPort = debugPort;
-            return this;
-        }
-
-        public VmCommandBuilder mainClass(String mainClass) {
-            this.mainClass = mainClass;
-            return this;
-        }
-
-        public VmCommandBuilder output(PrintStream output) {
-            this.output = output;
-            return this;
-        }
-
-        public VmCommandBuilder vmArgs(String... vmArgs) {
-            return vmArgs(Arrays.asList(vmArgs));
-        }
-
-        public VmCommandBuilder vmArgs(Collection<String> vmArgs) {
-            this.vmArgs.addAll(vmArgs);
-            return this;
-        }
-
-        public Command build() {
-            Command.Builder builder = new Command.Builder();
-            builder.args(vmCommand);
-            builder.args("-classpath", classpath.toString());
-            builder.args("-Duser.dir=" + userDir);
-            if (workingDir != null) {
-                builder.workingDirectory(workingDir);
-            }
-
-            if (temp != null) {
-                builder.args("-Djava.io.tmpdir=" + temp);
-            }
-
-            if (debugPort != null) {
-                builder.args("-Xrunjdwp:transport=dt_socket,address="
-                        + debugPort + ",server=y,suspend=y");
-            }
-
-            builder.args(vmArgs);
-            builder.args(mainClass);
-
-            builder.tee(output);
-
-            return builder.build();
-        }
-    }
-}
diff --git a/libcore/tools/runner/java/dalvik/runner/XmlReportPrinter.java b/libcore/tools/runner/java/dalvik/runner/XmlReportPrinter.java
deleted file mode 100644
index 669a26c..0000000
--- a/libcore/tools/runner/java/dalvik/runner/XmlReportPrinter.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import org.kxml2.io.KXmlSerializer;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
-
-/**
- * Writes JUnit results to a series of XML files in a format consistent with
- * Ant's XMLJUnitResultFormatter.
- *
- * <p>Unlike Ant's formatter, this class does not report the execution time of
- * tests.
- *
- * TODO: unify this and com.google.coretests.XmlReportPrinter
- */
-public class XmlReportPrinter {
-
-    private static final String TESTSUITE = "testsuite";
-    private static final String TESTCASE = "testcase";
-    private static final String ERROR = "error";
-    private static final String FAILURE = "failure";
-    private static final String ATTR_NAME = "name";
-    private static final String ATTR_TIME = "time";
-    private static final String ATTR_ERRORS = "errors";
-    private static final String ATTR_FAILURES = "failures";
-    private static final String ATTR_TESTS = "tests";
-    private static final String ATTR_TYPE = "type";
-    private static final String ATTR_MESSAGE = "message";
-    private static final String PROPERTIES = "properties";
-    private static final String ATTR_CLASSNAME = "classname";
-    private static final String TIMESTAMP = "timestamp";
-    private static final String HOSTNAME = "hostname";
-
-    /** the XML namespace */
-    private static final String ns = null;
-
-    /**
-     * Populates the directory with the report data from the completed tests.
-     */
-    public int generateReports(File directory, Collection<TestRun> results) {
-        Map<String, Suite> suites = testsToSuites(results);
-
-        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-        TimeZone gmt = TimeZone.getTimeZone("GMT");
-        dateFormat.setTimeZone(gmt);
-        dateFormat.setLenient(true);
-        String timestamp = dateFormat.format(new Date());
-
-        for (Suite suite : suites.values()) {
-            FileOutputStream stream = null;
-            try {
-                stream = new FileOutputStream(new File(directory, "TEST-" + suite.name + ".xml"));
-
-                KXmlSerializer serializer = new KXmlSerializer();
-                serializer.setOutput(stream, "UTF-8");
-                serializer.startDocument("UTF-8", null);
-                serializer.setFeature(
-                        "http://xmlpull.org/v1/doc/features.html#indent-output", true);
-                suite.print(serializer, timestamp);
-                serializer.endDocument();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (stream != null) {
-                    try {
-                        stream.close();
-                    } catch (IOException ignored) {
-                    }
-                }
-            }
-        }
-
-        return suites.size();
-    }
-
-    private Map<String, Suite> testsToSuites(Collection<TestRun> testRuns) {
-        Map<String, Suite> result = new LinkedHashMap<String, Suite>();
-        for (TestRun testRun : testRuns) {
-            if (testRun.getResult() == Result.UNSUPPORTED) {
-                continue;
-            }
-
-            String suiteName = testRun.getSuiteName();
-            Suite suite = result.get(suiteName);
-            if (suite == null) {
-                suite = new Suite(suiteName);
-                result.put(suiteName, suite);
-            }
-
-            suite.tests.add(testRun);
-
-            if (!testRun.isExpectedResult()) {
-                if (testRun.getResult() == Result.EXEC_FAILED) {
-                    suite.failuresCount++;
-                } else {
-                    suite.errorsCount++;
-                }
-            }
-        }
-        return result;
-    }
-
-    static class Suite {
-        private final String name;
-        private final List<TestRun> tests = new ArrayList<TestRun>();
-        private int failuresCount;
-        private int errorsCount;
-
-        Suite(String name) {
-            this.name = name;
-        }
-
-        void print(KXmlSerializer serializer, String timestamp) throws IOException {
-            serializer.startTag(ns, TESTSUITE);
-            serializer.attribute(ns, ATTR_NAME, name);
-            serializer.attribute(ns, ATTR_TESTS, Integer.toString(tests.size()));
-            serializer.attribute(ns, ATTR_FAILURES, Integer.toString(failuresCount));
-            serializer.attribute(ns, ATTR_ERRORS, Integer.toString(errorsCount));
-            serializer.attribute(ns, ATTR_TIME, "0");
-            serializer.attribute(ns, TIMESTAMP, timestamp);
-            serializer.attribute(ns, HOSTNAME, "localhost");
-            serializer.startTag(ns, PROPERTIES);
-            serializer.endTag(ns, PROPERTIES);
-
-            for (TestRun testRun : tests) {
-                print(serializer, testRun);
-            }
-
-            serializer.endTag(ns, TESTSUITE);
-        }
-
-        void print(KXmlSerializer serializer, TestRun testRun) throws IOException {
-            serializer.startTag(ns, TESTCASE);
-            serializer.attribute(ns, ATTR_NAME, testRun.getTestName());
-            serializer.attribute(ns, ATTR_CLASSNAME, testRun.getSuiteName());
-            serializer.attribute(ns, ATTR_TIME, "0");
-
-            if (!testRun.isExpectedResult()) {
-                String result = testRun.getResult() == Result.EXEC_FAILED ? FAILURE : ERROR;
-                serializer.startTag(ns, result);
-                String title = testRun.getDescription();
-                if (title != null && title.length() > 0) {
-                    serializer.attribute(ns, ATTR_MESSAGE, title);
-                }
-                serializer.attribute(ns, ATTR_TYPE, testRun.getResult().toString());
-                String text = sanitize(Strings.join(testRun.getOutputLines(), "\n"));
-                serializer.text(text);
-                serializer.endTag(ns, result);
-            }
-
-            serializer.endTag(ns, TESTCASE);
-        }
-
-        /**
-         * Returns the text in a format that is safe for use in an XML document.
-         */
-        private String sanitize(String text) {
-            return text.replace("\0", "<\\0>");
-        }
-    }
-}
\ No newline at end of file
diff --git a/libcore/tools/runner/lib/TestActivity.java b/libcore/tools/runner/lib/TestActivity.java
deleted file mode 100644
index 15206f8..0000000
--- a/libcore/tools/runner/lib/TestActivity.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package dalvik.runner;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-import android.widget.TextView;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-/**
- * Runs a user-supplied {@code main(String[] args)} method
- * in the context of an Android activity. The result of the method
- * (success or exception) is reported to a file where Dalvik
- * Runner can pick it up.
- */
-public class TestActivity extends Activity {
-
-    private final static String TAG = "TestActivity";
-
-    private TextView view;
-
-    @Override public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        this.view = new TextView(this);
-        log("TestActivity starting...");
-        setContentView(view);
-        ActivityRunner activityRunner = new ActivityRunner();
-        activityRunner.run();
-    }
-
-    private void log(String message, Throwable ex) {
-        log(message + "\n" + Log.getStackTraceString(ex));
-    }
-    private void log(String message) {
-        Log.i(TAG, message);
-        view.append(message + "\n");
-    }
-
-    class ActivityRunner extends TestRunner {
-
-        private final File runnerDir;
-        private final Thread shutdownHook = new Thread(new ShutdownHook());
-
-        ActivityRunner() {
-            runnerDir = new File(properties.getProperty(TestProperties.DEVICE_RUNNER_DIR));
-        }
-
-        @Override public boolean run() {
-            log("Using " + runnerClass + " to run " + qualifiedName);
-            Runtime.getRuntime().addShutdownHook(shutdownHook);
-            boolean success = super.run();
-            Runtime.getRuntime().removeShutdownHook(shutdownHook);
-            writeResultFile(success);
-            return success;
-        }
-
-        private void writeResultFile (boolean success) {
-            String result = TestProperties.result(success);
-            File resultDir = new File(runnerDir, qualifiedName);
-            File resultTemp = new File(resultDir, TestProperties.RESULT_FILE + ".temp");
-            File resultFile = new File(resultDir, TestProperties.RESULT_FILE);
-            log("TestActivity " + result + " " + resultFile);
-            try {
-                FileOutputStream resultOut = new FileOutputStream(resultTemp);
-                resultOut.write(result.getBytes("UTF-8"));
-                resultOut.close();
-                // atomically rename since DalvikRunner will be polling for this
-                resultTemp.renameTo(resultFile);
-            } catch (IOException e) {
-                log("TestActivity could not create result file", e);
-            }
-        }
-
-        /**
-         * Used to trap tests that try to exit on the their own. We
-         * treat this as a failure since they usually are calling
-         * System.exit with a non-zero value.
-         */
-        class ShutdownHook implements Runnable {
-            public void run() {
-                writeResultFile(false);
-            }
-        }
-    }
-}
diff --git a/libcore/tools/runner/lib/caliper.jar b/libcore/tools/runner/lib/caliper.jar
deleted file mode 100644
index 63a156a..0000000
--- a/libcore/tools/runner/lib/caliper.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/lib/caliper.jar.txt b/libcore/tools/runner/lib/caliper.jar.txt
deleted file mode 100644
index d645695..0000000
--- a/libcore/tools/runner/lib/caliper.jar.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/libcore/tools/runner/lib/guava.jar b/libcore/tools/runner/lib/guava.jar
deleted file mode 100644
index 39adc7f..0000000
--- a/libcore/tools/runner/lib/guava.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/lib/guava.jar.txt b/libcore/tools/runner/lib/guava.jar.txt
deleted file mode 100644
index d645695..0000000
--- a/libcore/tools/runner/lib/guava.jar.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/libcore/tools/runner/lib/javatest.jar b/libcore/tools/runner/lib/javatest.jar
deleted file mode 100644
index f550f44..0000000
--- a/libcore/tools/runner/lib/javatest.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/lib/jh.jar b/libcore/tools/runner/lib/jh.jar
deleted file mode 100644
index e5748fb..0000000
--- a/libcore/tools/runner/lib/jh.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/lib/jsr305.jar b/libcore/tools/runner/lib/jsr305.jar
deleted file mode 100644
index 57a62c1..0000000
--- a/libcore/tools/runner/lib/jsr305.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/lib/jsr305.jar.txt b/libcore/tools/runner/lib/jsr305.jar.txt
deleted file mode 100644
index 6736681..0000000
--- a/libcore/tools/runner/lib/jsr305.jar.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2007-2009, JSR305 expert group
-All rights reserved.
-
-http://www.opensource.org/licenses/bsd-license.php
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, 
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, 
-      this list of conditions and the following disclaimer in the documentation 
-      and/or other materials provided with the distribution.
-    * Neither the name of the JSR305 expert group nor the names of its 
-      contributors may be used to endorse or promote products derived from 
-      this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/libcore/tools/runner/lib/jtreg.jar b/libcore/tools/runner/lib/jtreg.jar
deleted file mode 100644
index 452453a..0000000
--- a/libcore/tools/runner/lib/jtreg.jar
+++ /dev/null
Binary files differ
diff --git a/libcore/tools/runner/test-dalvik-runner.sh b/libcore/tools/runner/test-dalvik-runner.sh
deleted file mode 100755
index 1b9c35d..0000000
--- a/libcore/tools/runner/test-dalvik-runner.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Test Dalvik Runner by exercising the various modes and various types of tests
-#
-# You can run this as follows
-
-#   $ANDROID_BUILD_TOP/dalvik/libcore/tools/runner/test-dalvik-runner.sh
-
-modes="host device activity"
-
-# TODO: include dummy examples of each kind of 'runnable' we support,
-# for test purposes instead of relying on external paths.
-test_jtreg=/home/dalvik-prebuild/openjdk-6/jdk/test/java/util/HashMap/
-test_junit=dalvik/libcore/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/FilterTest.java
-test_caliper=/home/bdc/benchmarks/caliper/caliper-read-only/src/examples/ArraySortBenchmark.java
-test_main=external/junit/src/junit/textui/TestRunner.java
-tests="$test_jtreg $test_junit $test_caliper $test_main"
-
-cd $ANDROID_BUILD_TOP
-. ./build/envsetup.sh
-m core-tests junit caliper snod && adb reboot bootloader && fastboot flashall && adb wait-for-device
-# when the device first comes up /sdcard is not mounted
-while [ -z "`adb shell ls /sdcard | tr -d '\r\n'`" ] ; do sleep 1; done
-mmm dalvik/libcore/tools/runner
-
-#verbose=--verbose
-#clean=--no-clean-after
-extras="$verbose $clean"
-
-dalvik_runner="java -cp out/host/linux-x86/framework/dalvik_runner.jar dalvik.runner.DalvikRunner"
-
-for mode in $modes; do
-    for test in $tests; do
-        command="$dalvik_runner --mode $mode $extras $test"
-        echo RUNNING $command
-        $command
-    done
-done
diff --git a/libcore/tools/runner/vogar b/libcore/tools/runner/vogar
deleted file mode 100755
index e5a6ad0..0000000
--- a/libcore/tools/runner/vogar
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# m core-tests junit caliper snod && adb reboot bootloader && fastboot flashall && adb wait-for-device
-# mmm dalvik/libcore/tools/runner
-
-classpath=`dirname $0`/../../../../out/host/linux-x86/framework/dalvik_runner.jar
-exec java -cp $classpath dalvik.runner.DalvikRunner "$@"