Remove vts10 tradefed harness and related doc am: 3021c8f484

Original change: https://android-review.googlesource.com/c/platform/test/vts/+/1456143

Change-Id: I6069df9630d845e261f8a375af46cbbe040aa802
diff --git a/README.md b/README.md
deleted file mode 100644
index ebb2009..0000000
--- a/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Android Vendor Test Suite (VTS)
-
-VTS consists of a set of testing frameworks and test cases, designed to help
-enhance the robustness, reliability, and compliance of:
-
-  * the Android system (e.g., Core HALs and libraries) and
-  * low-level system software (e.g., kernel, module, and firmware).
-
-VTS has mainly two types of test suites:
-
-  * automated (e.g., record-and-replay and fuzzing) and
-  * structural (e.g., gTest and host-driven python) testing.
-
-While the VTS framework and test cases are designed for userdebug or eng build
-devices, some test cases can be run on user build devices using its app namely,
-VTS Agent App.
-
-__Table of Contents__
-
-1. [VTS User Manual](doc/user_manual.md)
-2. [Where to find VTS test cases](testcases/README.md)
-3. [VTS Test Developer
-   Manual (Codelab)](https://codelabs.developers.google.com/codelabs/android-vts)
-
diff --git a/doc/developer_testing/kernel/ltp.md b/doc/developer_testing/kernel/ltp.md
deleted file mode 100644
index 8f5fe8f..0000000
--- a/doc/developer_testing/kernel/ltp.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# How to run LTP tests on Android
-
-0. [VTS Setup](../../setup/index.md)
-1. [Run all the VTS LTP test case locally](run_all_ltp_testcases.md)
-2. [Run individual VTS LTP test case locally](run_individual_ltp_testcase.md)
diff --git a/doc/developer_testing/kernel/run_all_ltp_testcases.md b/doc/developer_testing/kernel/run_all_ltp_testcases.md
deleted file mode 100644
index e57943b..0000000
--- a/doc/developer_testing/kernel/run_all_ltp_testcases.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# How to run all the enabled LTP tests
-## 1. Compile VTS and LTP source code
-`$ make vts -j12`
-
-## 2. Start VTS10-TradeFed
-`$ vts10-tradefed`
-
-## 3. Run kernel LTP test from VTS-TradeFed console
-`> run vts-kernel`
-
-This will take from 30 minutes to 2 hours to run.
-The test results can be found under `out/host/linux-x86/vts/android-vts/results/`,
-while the device logcat and host logs can be found under `out/host/linux-x86/vts/android-vts/logs/`.
diff --git a/doc/developer_testing/kernel/run_individual_ltp_testcase.md b/doc/developer_testing/kernel/run_individual_ltp_testcase.md
deleted file mode 100644
index 596d66c..0000000
--- a/doc/developer_testing/kernel/run_individual_ltp_testcase.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# How to run individual LTP test case
-## 1. Compile VTS and LTP source code
-`$ make vts -j12`
-
-## 2. Start VTS10-TradeFed
-`$ vts10-tradefed`
-
-## 3. Run individual LTP test from VTS-TradeFed console
-`> run vts-kernel -m VtsKernelLtp -t <testname1,testname2,...>`
-
-Test names in filter can be any of the following formats:
-`<testsuite.testname>`, `<testsuite.testname_bitness>`
-
-It is recommended to include test suite, i.e., the first two formats above.
-
-Example:
-
-`> run vts-kernel -m VtsKernelLtp -t syscalls.accept01,mm.mmapstress05_64bit`
-
-Test cases specified in this filter will be run regardless of
-whether they are disabled in configuration, unless a specified test case name
-is not listed in the definitions or a required executable was not built.
\ No newline at end of file
diff --git a/doc/setup/index.md b/doc/setup/index.md
deleted file mode 100644
index 4bf945a..0000000
--- a/doc/setup/index.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# VTS Setup Manual
-
-1. [For Python Environment](python_setup_manual.md)
diff --git a/doc/setup/python_setup_manual.md b/doc/setup/python_setup_manual.md
deleted file mode 100644
index b2a5ba9..0000000
--- a/doc/setup/python_setup_manual.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Install Python and Protocol Buffer Packages
-
-`$ . test/vts/script/setup.sh`
-
-`$ . test/vts/script/build-python.sh`
diff --git a/doc/testcase_develop_manual/run_vts_directly.md b/doc/testcase_develop_manual/run_vts_directly.md
deleted file mode 100644
index a4a2082..0000000
--- a/doc/testcase_develop_manual/run_vts_directly.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Run a VTS test directly
-
-First of all, if you have not done [VTS setup](../setup/index.md), that is required here.
-
-## Download required Python packages to local host
-
-`$ . test/vts/script/pypi-packages-local.sh`
-
-## Build Binaries
-
-`$ cd test/vts/script`
-
-`$ ./create-image.sh <build target>-userdebug`
-
-or
-
-`$ ./create-image.sh aosp_salifish-userdebug`
-
-## Copy Binaries
-
-`$ ./setup-local.sh <device name>`
-
-or
-
-`$ ./setup-local.sh sailfish`
-
-## Run a test direclty
-
-`$ PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.<test py package path> $ANDROID_BUILD_TOP/test/vts/testcases/<path to its config file>`
-
-For example, for SampleShellTest, please run:
-
-`PYTHONPATH=$PYTHONPATH:.. python -m vts.testcases.host.shell.SampleShellTest $ANDROID_BUILD_TOP/test/vts/testcases/host/shell/SampleShellTest.config`
-
-More examples are in `test/vts/script/run-local.sh`.
-
-## Additional Step for LTP and Linux-Kselftest
-
-Add `'data_file_path' : '<your android build top>/out/host/linux-x86/vts/android-vts/testcases'`
-to your config file (e.g., `VtsKernelLtpStaging.config`).
-
-## Add a new test
-
-In order to add a new test, the following two files needed to be extended.
-
-`test/vts/create-image.sh`
-
-`test/vts/setup-local.sh`
-
-Optionally, the command used to add a new test can be also added to:
-
-`test/vts/run-local.sh`
diff --git a/doc/user_manual.md b/doc/user_manual.md
deleted file mode 100644
index d42bbe8..0000000
--- a/doc/user_manual.md
+++ /dev/null
@@ -1,142 +0,0 @@
-# VTS User Manual
-
-Linux is officially supported for building and running VTS. Building on Windows is not supported, but it is possible to [run VTS on Windows](#run_vts) with Python, Java, and ADB installed.
-
-The following instructions assume Linux environment.
-
-## 1. Setup
-
-### 1.1. Host setup
-
-Please follow:
-
-* [Setup Manual](setup/index.md)
-
-(Optional)
-During VTS test runs, required Python packages are downloaded from the [Python Package Index](https://pypi.python.org/simple/). There is an option to instead install these packages from a local directory during test runtime by predownloading the packages. First run the lunch command, then set an environment variable VTS_PYPI_PATH as a new local directory to host the Python packages. Then run the download-pypi-packages.sh script:
-
-* `$ cd ${branch}`
-
-* `$ . test/vts/script/download-pypi-packages.sh`
-
-### 1.2. Checkout main git repository
-
-[Download Android Source Code](https://source.android.com/source/downloading.html)
-
-`$ export branch=main`
-
-`$ mkdir ${branch}`
-
-`$ cd ${branch}`
-
-`$ repo init -b ${branch} -u persistent https://android.googlesource.com/platform/manifest`
-
-`$ repo sync -j 8`
-
-### 1.3. Build an Android image
-
-`$ cd ${branch}`
-
-`$ . build/make/envsetup.sh`
-
-`$ lunch aosp_arm64-userdebug  # or <your device>-userdebug`
-
-The below is an optional step:
-
-`$ make -j 8`
-
-If this fails, please do:
-
-`$ repo sync -j 8`
-
-`$ make -j 8`
-
-Such can happen because tip of tree (ToT) may not always be buildable.
-
-### 1.4. Build a VTS package
-
-`$ cd ${branch}`
-
-`$ make vts -j8`
-
-Or use the exact command:
-
-`$ make -j8 vts showcommands dist TARGET_PRODUCT=aosp_arm64 WITH_DEXPREOPT=false TARGET_BUILD_VARIANT=userdebug`
-
-### 1.5. Connect to an Android device
-
-Let's connect an Android device and a host computer using a USB cable.
-
-* On an Android device, Setting -> About Phone -> Click repeatedly 'Build number' until developer mode is enabled.
-* On an Android device, Setting -> Developer options -> Turn on 'USB debugging'
-* On a host, run `adb devices` from a command line shell.
-* On a Android device, confirm that the host is trusted.
-* On a host, type `adb shell` and if that works, we're ready.
-
-## 2. Run VTS Tests
-
-### <a name="run_vts" /> 2.1. Run a VTS test plan
-
-For Linux users,
-
-`$ vts10-tradefed`
-
-`> run vts10`
-
-For Windows users, please build on Linux. Then copy the following zip file to Windows and extract it.
-
-`out/host/linux-x86/vts10/android-vts10.zip`
-
-Launch the batch file in the extracted folder.
-
-`$ android-vts10\tools\vts10-tradefed_win.bat`
-
-`> run vts10`
-
-Example stdout:
-
-```
-…
-…
-08-16 09:36:03 I/ResultReporter: Saved logs for device_logcat in .../out/host/linux-x86/vts10/android-vts10/logs/2016.08.16_09.17.13/device_logcat_7912321856562095748.zip
-08-16 09:36:03 I/ResultReporter: Saved logs for host_log in .../out/host/linux-x86/vts10/android-vts10/logs/2016.08.16_09.17.13/host_log_2775945280523850018.zip
-08-16 09:36:04 I/ResultReporter: Invocation finished in 18m 50s. PASSED: 18, FAILED: 0, NOT EXECUTED: 2, MODULES: 8 of 10
-08-16 09:36:04 I/ResultReporter: Test Result: .../out/host/linux-x86/vts10/android-vts10/results/2016.08.16_09.17.13/test_result.xml
-08-16 09:36:04 I/ResultReporter: Full Result: .../out/host/linux-x86/vts10/android-vts10/results/2016.08.16_09.17.13.zip
-```
-
-### 2.2. Test report for APFE (Android Partner Front-End)
-
-The uploadable report xml file can be found at
-
-`out/host/linux-x86/vts10/android-vts10/results/`
-
-After Android O release, you will be able to upload that xml file to [AFPE](https://partner.android.com)
-and obtain a certificate.
-
-### 2.3. Check the test logs
-
-`$ vi out/host/linux-x86/vts10/android-vts10/logs/`
-
-Then select a directory which captures the time stamp of your test run (e.g., 2016.08.16_09.17.13).
-
-Then select `host_log_<timestamp>.zip` and host_log.txt in that zip file for host log.
-
-Then select `device_logcat_<timestamp>.zip` and device_logcat.txt in that zip file for device log.
-
-## 3. Run Options for Advanced Users
-
-### 3.1. List of VTS10 Plans
-
-Documented at [here](../tools/vts-tradefed/res/config/plans.md).
-
-### 3.2. Run kernel test cases
-
-LTP (Linux Test Project) is part of vts-kernel.
-[This doc](developer_testing/kernel/ltp.md) shows how to run each LTP test case.
-
-## 4. Debugging
-
-### 4.1. Run VTS tests directly for debugging
-
-[Run directly from command line](testcase_develop_manual/run_vts_directly.md)
diff --git a/harnesses/__init__.py b/harnesses/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/harnesses/__init__.py
+++ /dev/null
diff --git a/harnesses/tradefed/.classpath b/harnesses/tradefed/.classpath
deleted file mode 100644
index da843c7..0000000
--- a/harnesses/tradefed/.classpath
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="tests/res"/>
-	<classpathentry kind="src" path="vtsproto"/>
-	<classpathentry kind="src" path="objenesis"/>
-	<classpathentry kind="src" path="mockito"/>
-	<classpathentry kind="src" path="easymock"/>
-	<classpathentry kind="src" path="tests/src"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/ddmlib"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/tradefederation"/>
-	<classpathentry kind="var" path="TRADEFED_ROOT/out/host/common/obj/JAVA_LIBRARIES/host-libprotobuf-java-full_intermediates/classes.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/cts-tradefed"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/cts-common-util"/>
-	<classpathentry kind="var" path="TRADEFED_ROOT/out/host/common/obj/JAVA_LIBRARIES/google-api-java-client-min-repackaged_intermediates/classes.jar"/>
-	<classpathentry kind="var" path="TRADEFED_ROOT/out/soong/.intermediates/external/mockito/mockito-byte-buddy-agent/linux_glibc_common/combined/mockito-byte-buddy-agent.jar"/>
-	<classpathentry kind="var" path="TRADEFED_ROOT/out/soong/.intermediates/external/mockito/mockito-byte-buddy/linux_glibc_common/combined/mockito-byte-buddy.jar"/>
-	<classpathentry kind="var" path="TRADEFED_ROOT/out/soong/.intermediates/tools/tradefederation/core/tradefed-protos/linux_glibc_common/combined/tradefed-protos.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/harnesses/tradefed/.project b/harnesses/tradefed/.project
deleted file mode 100644
index c81a9b3..0000000
--- a/harnesses/tradefed/.project
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>vts-tradefed</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-	<linkedResources>
-		<link>
-			<name>easymock</name>
-			<type>2</type>
-			<locationURI>TRADEFED_ROOT/external/easymock/src</locationURI>
-		</link>
-		<link>
-			<name>mockito</name>
-			<type>2</type>
-			<locationURI>TRADEFED_ROOT/external/mockito/src/main/java</locationURI>
-		</link>
-		<link>
-			<name>objenesis</name>
-			<type>2</type>
-			<locationURI>TRADEFED_ROOT/external/objenesis/main/src/main/java</locationURI>
-		</link>
-		<link>
-			<name>vtsproto</name>
-			<type>2</type>
-			<locationURI>TRADEFED_ROOT/out/host/common/obj/JAVA_LIBRARIES/libvts_protos_host_intermediates/proto/src</locationURI>
-		</link>
-	</linkedResources>
-</projectDescription>
diff --git a/harnesses/tradefed/Android.bp b/harnesses/tradefed/Android.bp
deleted file mode 100644
index 83c42dd..0000000
--- a/harnesses/tradefed/Android.bp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (C) 2016 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.
-
-java_library_host {
-    name: "vts10-tradefed-harness",
-    srcs: ["src/**/*.java"],
-    libs: [
-        "tradefed",
-        "compatibility-tradefed",
-        "compatibility-host-util",
-        "libvts_protos_host",
-    ],
-}
diff --git a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/build/VtsCompatibilityInvocationHelper.java b/harnesses/tradefed/src/com/android/compatibility/common/tradefed/build/VtsCompatibilityInvocationHelper.java
deleted file mode 100644
index cb3cf19..0000000
--- a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/build/VtsCompatibilityInvocationHelper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.compatibility.common.tradefed.build;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.testtype.suite.TestSuiteInfo;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-
-/**
- * A simple helper that stores and retrieves information from a {@link IBuildInfo}.
- */
-public class VtsCompatibilityInvocationHelper {
-    private File mTestCasesDir = null;
-
-    /**
-     * Get test case binaries directory
-     */
-    public File getTestsDir() throws FileNotFoundException {
-        if (mTestCasesDir == null) {
-            String suiteName = TestSuiteInfo.getInstance().getName();
-            String testCasesRootDirPath;
-            testCasesRootDirPath =
-                    System.getenv(String.format("%s_TESTCASES", suiteName.replace('-', '_')));
-            File testCaseDir;
-            if (testCasesRootDirPath != null && !testCasesRootDirPath.trim().equals("")) {
-                testCaseDir = new File(testCasesRootDirPath);
-            } else {
-                String rootDirPath;
-                rootDirPath =
-                        System.getProperty(String.format("%s_ROOT", suiteName.replace('-', '_')));
-                if (rootDirPath == null || rootDirPath.trim().equals("")) {
-                    throw new IllegalArgumentException(String.format(
-                            "Missing install path property %s_ROOT", suiteName.replace('-', '_')));
-                }
-                testCaseDir = new File(rootDirPath,
-                        String.format("android-%s/testcases", suiteName.toLowerCase()));
-            }
-            if (!testCaseDir.exists()) {
-                throw new FileNotFoundException(String.format(
-                        "Root directory doesn't exist %s", testCaseDir.getAbsolutePath()));
-            }
-            mTestCasesDir = testCaseDir.getAbsoluteFile();
-            CLog.d(String.format("%s TEST CASES DIR: %s", suiteName, mTestCasesDir));
-        }
-
-        return mTestCasesDir;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/result/VtsResultReporter.java b/harnesses/tradefed/src/com/android/compatibility/common/tradefed/result/VtsResultReporter.java
deleted file mode 100644
index d9c7ddd..0000000
--- a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/result/VtsResultReporter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.compatibility.common.tradefed.result;
-
-import com.android.tradefed.log.LogUtil.CLog;
-import java.util.Map;
-
-/** Override the result reporter to specify vendor device information in the VTS report. */
-public class VtsResultReporter extends ResultReporter {
-    private static final String BUILD_VENDOR_FINGERPRINT = "build_vendor_fingerprint";
-    private static final String BUILD_VENDOR_MANUFACTURER = "build_vendor_manufacturer";
-    private static final String BUILD_VENDOR_MODEL = "build_vendor_model";
-
-    /** Determine if the property is empty or not. */
-    private static boolean isEmptyProperty(String property) {
-        return (property == null || property.trim().isEmpty() || property.equals("null"));
-    }
-
-    /** Override the vendor fingerprint and manufacturer in the report. */
-    @Override
-    protected void addDeviceBuildInfoToResult() {
-        super.addDeviceBuildInfoToResult();
-        Map<String, String> props = mapBuildInfo();
-        String vendorFingerprint = props.get(BUILD_VENDOR_FINGERPRINT);
-        String vendorManufacturer = props.get(BUILD_VENDOR_MANUFACTURER);
-        String vendorModel = props.get(BUILD_VENDOR_MODEL);
-        if (!isEmptyProperty(vendorFingerprint) && !isEmptyProperty(vendorManufacturer)
-                && !isEmptyProperty(vendorModel)) {
-            addDeviceBuildInfoToResult(vendorFingerprint, vendorManufacturer, vendorModel);
-        } else {
-            CLog.w(String.format(
-                    "Vendor build information missing. Fingerprint: '%s', manufacturer: '%s', model: '%s'",
-                    vendorFingerprint, vendorManufacturer, vendorModel));
-        }
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/targetprep/VtsFilePusher.java b/harnesses/tradefed/src/com/android/compatibility/common/tradefed/targetprep/VtsFilePusher.java
deleted file mode 100644
index 009fe9f..0000000
--- a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/targetprep/VtsFilePusher.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.compatibility.common.tradefed.targetprep;
-
-import com.android.compatibility.common.tradefed.build.VtsCompatibilityInvocationHelper;
-import com.android.ddmlib.Log;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.TestInformation;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.targetprep.BuildError;
-import com.android.tradefed.targetprep.PushFilePreparer;
-import com.android.tradefed.targetprep.TargetSetupError;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.util.Collection;
-import java.util.TreeSet;
-
-/**
- * Pushes specified testing artifacts from Compatibility repository.
- */
-@OptionClass(alias = "vts-file-pusher")
-public class VtsFilePusher extends PushFilePreparer {
-    @Option(name="push-group", description=
-            "A push group name. Must be a .push file under tools/vts-tradefed/res/push_groups/. "
-                    + "May be under a relative path. May be repeated. Duplication of file specs "
-                    + "is ok. Will throw a TargetSetupError if a file push fails.")
-    private Collection<String> mPushSpecGroups = new TreeSet<>();
-
-    @Option(name="push-group-cleanup", description = "Whether files in push group "
-            + "should be cleaned up from device after test. Note that preparer does not verify "
-            + "that files/directories have been deleted. Default value: true.")
-    private boolean mPushGroupCleanup = true;
-
-    @Option(name="push-group-remount-system", description="Whether to remounts system "
-            + "partition to be writable before push or clean up default files. "
-            + "Default value: false")
-    private boolean mPushGroupRemount = false;
-
-    @Option(name = "append-bitness", description = "Append the ABI's bitness to the filename.")
-    private boolean mAppendBitness = false;
-
-    private static final String DIR_PUSH_GROUPS = "vts/tools/vts-tradefed/res/push_groups";
-    static final String PUSH_GROUP_FILE_EXTENSION = ".push";
-
-    private Collection<String> mFilesPushed = new TreeSet<>();
-    private VtsCompatibilityInvocationHelper mInvocationHelper;
-
-    /**
-     * Load file push specs from .push files as a collection of Strings
-     * @param buildInfo
-     * @return a collection of push spec strings
-     * @throws TargetSetupError if load fails
-     */
-    private Collection<String> loadFilePushGroups(IBuildInfo buildInfo) throws TargetSetupError {
-        Collection<String> result = new TreeSet<>();
-        File testDir;
-        try {
-            testDir = mInvocationHelper.getTestsDir();
-        } catch(FileNotFoundException e) {
-            throw new TargetSetupError(e.getMessage());
-        }
-
-        for (String group: mPushSpecGroups) {
-            TreeSet<String> stack = new TreeSet<>();
-            result.addAll(loadFilePushGroup(group, testDir.getAbsolutePath(), stack));
-        }
-        return result;
-    }
-
-    /**
-     * Recursively load file push specs from a push group file into a collection of strings.
-     *
-     * @param specFile, push group file name with .push extension. Can contain relative directory.
-     * @param testsDir, the directory where test data files are stored.
-     */
-    private Collection<String> loadFilePushGroup(String specFileName, String testsDir,
-            Collection<String> stack) throws TargetSetupError {
-        Collection<String> result = new TreeSet<>();
-
-        String relativePath = new File(
-                DIR_PUSH_GROUPS, specFileName).getPath();
-        File specFile = null;
-
-        try {
-            specFile = new File(testsDir, relativePath);
-        } catch(Exception e) {
-            throw new TargetSetupError(e.getMessage());
-        }
-
-        try (BufferedReader br = new BufferedReader(new FileReader(specFile))) {
-            String line;
-            while ((line = br.readLine()) != null) {
-                String spec = line.trim();
-                if (spec.contains("->")) {
-                    result.add(spec);
-                } else if (spec.contains(PUSH_GROUP_FILE_EXTENSION)) {
-                    if (!stack.contains(spec)) {
-                        stack.add(spec);
-                        result.addAll(loadFilePushGroup(spec, testsDir, stack));
-                        stack.remove(spec);
-                    }
-                } else if (spec.length() > 0) {
-                    throw new TargetSetupError("Unknown file push spec: " + spec);
-                }
-            }
-        } catch(Exception e) {
-            throw new TargetSetupError(e.getMessage());
-        }
-
-        return result;
-    }
-
-    /**
-     * Push file groups if configured in .xml file.
-     * @param device
-     * @param buildInfo
-     * @throws TargetSetupError, DeviceNotAvailableException
-     */
-    private void pushFileGroups(ITestDevice device, IBuildInfo buildInfo)
-            throws TargetSetupError, DeviceNotAvailableException {
-        if (mPushGroupRemount) {
-            device.remountSystemWritable();
-        }
-
-        for (String pushspec : loadFilePushGroups(buildInfo)) {
-            String[] pair = pushspec.split("->");
-
-            if (pair.length != 2) {
-                throw new TargetSetupError(
-                        String.format("Failed to parse push spec '%s'", pushspec));
-            }
-
-            File src = new File(pair[0]);
-
-            if (!src.isAbsolute()) {
-                src = resolveRelativeFilePath(buildInfo, pair[0]);
-            }
-
-            Class cls = this.getClass();
-
-            if (!src.exists()) {
-                Log.w(cls.getSimpleName(), String.format(
-                        "Skipping push spec in push group whose source does not exist: %s",
-                        pushspec));
-                continue;
-            }
-
-            Log.d(cls.getSimpleName(),
-                    String.format("Trying to push file from local to remote: %s", pushspec));
-
-            if ((src.isDirectory() && !device.pushDir(src, pair[1])) ||
-                    (!device.pushFile(src, pair[1]))) {
-                mFilesPushed = null;
-                throw new TargetSetupError(String.format("Failed to push local '%s' to remote '%s'",
-                        pair[0], pair[1]));
-            } else {
-                mFilesPushed.add(pair[1]);
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setUp(TestInformation testInfo)
-            throws TargetSetupError, BuildError, DeviceNotAvailableException {
-        ITestDevice device = testInfo.getDevice();
-        IBuildInfo buildInfo = testInfo.getBuildInfo();
-        device.enableAdbRoot();
-        mInvocationHelper = new VtsCompatibilityInvocationHelper();
-        pushFileGroups(device, buildInfo);
-
-        super.setUp(testInfo);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void tearDown(TestInformation testInfo, Throwable e) throws DeviceNotAvailableException {
-        ITestDevice device = testInfo.getDevice();
-        if (!(e instanceof DeviceNotAvailableException) && mPushGroupCleanup && mFilesPushed != null) {
-            device.enableAdbRoot();
-            if (mPushGroupRemount) {
-                device.remountSystemWritable();
-            }
-            for (String devicePath : mFilesPushed) {
-                device.executeShellCommand("rm -r " + devicePath);
-            }
-        }
-
-        super.tearDown(testInfo, e);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public File resolveRelativeFilePath(IBuildInfo buildInfo, String fileName) {
-        File f = null;
-        try {
-            f = new File(mInvocationHelper.getTestsDir(),
-                    String.format("%s%s", fileName, mAppendBitness ? getAbi().getBitness() : ""));
-            CLog.d("Copying from %s", f.getAbsolutePath());
-            return f;
-        } catch (FileNotFoundException e) {
-            CLog.e(e);
-            CLog.e("File not found: %s", f);
-        }
-        return null;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/testtype/retry/VtsRetryFactoryTest.java b/harnesses/tradefed/src/com/android/compatibility/common/tradefed/testtype/retry/VtsRetryFactoryTest.java
deleted file mode 100644
index bffd66f..0000000
--- a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/testtype/retry/VtsRetryFactoryTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.compatibility.common.tradefed.testtype.retry;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite;
-import com.android.compatibility.common.tradefed.util.VtsRetryFilterHelper;
-import com.android.tradefed.config.OptionClass;
-
-/**
- * Runner that creates a {@link CompatibilityTestSuite} to re-run VTS results.
- */
-@OptionClass(alias = "compatibility")
-public class VtsRetryFactoryTest extends RetryFactoryTest {
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected VtsRetryFilterHelper createFilterHelper(CompatibilityBuildHelper buildHelper) {
-        return new VtsRetryFilterHelper(buildHelper, getRetrySessionId(), mSubPlan, mIncludeFilters,
-                mExcludeFilters, mAbiName, mModuleName, mTestName, mRetryType);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelper.java b/harnesses/tradefed/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelper.java
deleted file mode 100644
index ff18af7..0000000
--- a/harnesses/tradefed/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelper.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.compatibility.common.tradefed.util;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.compatibility.common.tradefed.util.RetryFilterHelper;
-import com.android.compatibility.common.tradefed.util.RetryType;
-import com.android.compatibility.common.util.IInvocationResult;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import java.util.Set;
-
-/**
- * Helper for generating --include-filter and --exclude-filter values on compatibility retry.
- */
-public class VtsRetryFilterHelper extends RetryFilterHelper {
-    /* Instance variables for retrieving results to be retried. */
-    private int mSessionId;
-
-    /**
-     * Constructor for a {@link VtsRetryFilterHelper}.
-     *
-     * @param build a {@link CompatibilityBuildHelper} describing the build.
-     * @param sessionId The ID of the session to retry.
-     * @param subPlan The name of a subPlan to be used. Can be null.
-     * @param includeFilters The include module filters to apply
-     * @param excludeFilters The exclude module filters to apply
-     * @param abiName The name of abi to use. Can be null.
-     * @param moduleName The name of the module to run. Can be null.
-     * @param testName The name of the test to run. Can be null.
-     * @param retryType The type of results to retry. Can be null.
-     */
-    public VtsRetryFilterHelper(CompatibilityBuildHelper build, int sessionId, String subPlan,
-            Set<String> includeFilters, Set<String> excludeFilters, String abiName,
-            String moduleName, String testName, RetryType retryType) {
-        super(build, sessionId, subPlan, includeFilters, excludeFilters, abiName, moduleName,
-                testName, retryType);
-        mSessionId = sessionId;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void validateBuildFingerprint(ITestDevice device) throws DeviceNotAvailableException {
-        IInvocationResult result = getResult();
-        String oldVendorFingerprint = result.getBuildFingerprint();
-        String currentVendorFingerprint = device.getProperty("ro.vendor.build.fingerprint");
-        if (!oldVendorFingerprint.equals(currentVendorFingerprint)) {
-            throw new IllegalArgumentException(
-                    String.format("Device vendor fingerprint must match %s to retry session %d. "
-                                    + "Found %s instead on %s",
-                            oldVendorFingerprint, mSessionId, currentVendorFingerprint,
-                            device.getSerialNumber()));
-        }
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsCoverageCollector.java b/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsCoverageCollector.java
deleted file mode 100644
index 3e10e07..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsCoverageCollector.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.device.metric;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.VtsCompatibilityInvocationHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.targetprep.VtsCoveragePreparer;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.RunInterruptedException;
-import com.android.tradefed.util.VtsPythonRunnerHelper;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.Map;
-/**
- * A {@link IMetricCollector} that enables vts coverage measurement during a
- * test and generates the coverage report after the test run.
- */
-@OptionClass(alias = "vts-coverage-collector")
-public class VtsCoverageCollector extends BaseDeviceMetricCollector {
-    static final long BASE_TIMEOUT = 1000 * 60 * 20; // timeout for fetching artifacts
-
-    private VtsPythonRunnerHelper mPythonRunnerHelper = null;
-    @Override
-    public void onTestRunStart(DeviceMetricData testData) {
-        for (ITestDevice device : getDevices()) {
-            try {
-                device.executeShellCommand("rm -rf /data/misc/trace/*");
-            } catch (DeviceNotAvailableException e) {
-                CLog.e("Failed to cleanup existing traces: " + e.toString());
-            }
-        }
-    }
-
-    @Override
-    public void onTestRunEnd(DeviceMetricData testData,
-            final Map<String, Metric> currentTestCaseMetrics) throws RunInterruptedException {
-        String moduleName = getRunName().replace(' ', '_');
-        CLog.i("Test module name: " + moduleName);
-        IBuildInfo buildInfo = getBuildInfos().get(0);
-        if (buildInfo == null) {
-            CLog.e("Could not get build Info.");
-            return;
-        }
-        if (mPythonRunnerHelper == null) {
-            File workingDir = null;
-            VtsCompatibilityInvocationHelper invocationHelper = createInvocationHelper();
-            try {
-                workingDir = invocationHelper.getTestsDir();
-            } catch (FileNotFoundException e) {
-                CLog.e("VtsCompatibilityInvocationHelper cannot find test case directory. "
-                        + "Command working directory not set.");
-            }
-            mPythonRunnerHelper = new VtsPythonRunnerHelper(buildInfo, workingDir);
-        }
-        for (ITestDevice device : getDevices()) {
-            String serial = device.getSerialNumber();
-            String gcovDirPath = getGcoveResrouceDir(buildInfo, device);
-            if (gcovDirPath == null) {
-                CLog.e("Could not get gcov resource dir path.");
-                return;
-            }
-            String coverage_report_dir = buildInfo.getBuildAttributes().get("coverage_report_path");
-            if (coverage_report_dir == null) {
-                CLog.e("Must specify the directory to store the coverage report.");
-                return;
-            }
-            File local_coverage_report_dir = new File(coverage_report_dir, moduleName);
-
-            String cmdString = "python"
-                    + " -m vts.utils.python.coverage.coverage_utils get_coverage --serial " + serial
-                    + " --gcov_rescource_path " + gcovDirPath + " --report_path "
-                    + local_coverage_report_dir.getAbsolutePath() + " --report_prefix "
-                    + moduleName;
-            String[] cmd = cmdString.split("\\s+");
-            CommandResult commandResult = new CommandResult();
-            String interruptMessage =
-                    mPythonRunnerHelper.runPythonRunner(cmd, commandResult, BASE_TIMEOUT);
-            if (commandResult == null || commandResult.getStatus() != CommandStatus.SUCCESS) {
-                CLog.e("Could not get coverage data.");
-            }
-            if (interruptMessage != null) {
-                throw new RunInterruptedException(interruptMessage);
-            }
-        }
-    }
-
-    @VisibleForTesting
-    String getGcoveResrouceDir(IBuildInfo buildInfo, ITestDevice device) {
-        File gcovDir = buildInfo.getFile(VtsCoveragePreparer.getGcovResourceDirKey(device));
-        if (gcovDir != null) {
-            return gcovDir.getAbsolutePath();
-        }
-        return null;
-    }
-
-    @VisibleForTesting
-    void setPythonRunnerHelper(VtsPythonRunnerHelper pythonRunnerHelper) {
-        mPythonRunnerHelper = pythonRunnerHelper;
-    }
-
-    /**
-     * Creates a {@link VtsCompatibilityInvocationHelper} to get the working directory.
-     */
-    @VisibleForTesting
-    protected VtsCompatibilityInvocationHelper createInvocationHelper() {
-        return new VtsCompatibilityInvocationHelper();
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsHalTraceCollector.java b/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsHalTraceCollector.java
deleted file mode 100644
index abc1fb2..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/device/metric/VtsHalTraceCollector.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.device.metric;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.util.FileUtil;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * A {@link IMetricCollector} that enables vts hal profiling during a test and
- * collects the trace file after the test run.
- */
-@OptionClass(alias = "vts-hal-trace-collector")
-public class VtsHalTraceCollector extends BaseDeviceMetricCollector {
-    // Path of 32 bit test libs on target device.
-    static final String VTS_TMP_LIB_DIR_32 = "/data/local/tmp/32/";
-    // Path of 64 bit test libs on target device.
-    static final String VTS_TMP_LIB_DIR_64 = "/data/local/tmp/64/";
-    // Path of vts test directory on target device.
-    static final String VTS_TMP_DIR = "/data/local/tmp/";
-    // VTS profiling configure binary name.
-    static final String PROFILING_CONFIGURE_BINARY = "vts_profiling_configure";
-    // Prefix of temp directory that stores the trace files.
-    static final String TRACE_DIR_PREFIX = System.getProperty("java.io.tmpdir") + "/vts-profiling/";
-    static final String TRACE_PATH = "trace_path";
-
-    @Override
-    public void onTestRunStart(DeviceMetricData testData) {
-        for (ITestDevice device : getDevices()) {
-            try {
-                // adb root.
-                device.enableAdbRoot();
-                // Set selinux permissive mode.
-                device.executeShellCommand("setenforce 0");
-                // Cleanup existing traces.
-                device.executeShellCommand(String.format("rm -rf %s/*.vts.trace", VTS_TMP_DIR));
-                device.executeShellCommand("chmod 777 " + VTS_TMP_DIR);
-                device.executeShellCommand("chmod 777 " + VTS_TMP_LIB_DIR_32);
-                device.executeShellCommand("chmod 777 " + VTS_TMP_LIB_DIR_64);
-                device.executeShellCommand(
-                        String.format("%s enable %s %s", VTS_TMP_DIR + PROFILING_CONFIGURE_BINARY,
-                                VTS_TMP_LIB_DIR_32, VTS_TMP_LIB_DIR_64));
-            } catch (DeviceNotAvailableException e) {
-                CLog.e("Could not enable vts hal profiling: " + e.toString());
-            }
-        }
-    }
-
-    @Override
-    public void onTestRunEnd(
-            DeviceMetricData testData, final Map<String, Metric> currentTestCaseMetrics) {
-        String moduleName = getRunName().replace(' ', '_');
-        CLog.i("Test module name: " + moduleName);
-        for (ITestDevice device : getDevices()) {
-            try {
-                // Pull trace files.
-                pullTraceFiles(device, moduleName);
-                // Disable profiling.
-                device.executeShellCommand(
-                        String.format("%s disable", VTS_TMP_DIR + PROFILING_CONFIGURE_BINARY));
-                // Cleanup the trace files.
-                device.executeShellCommand(String.format("rm -rf %s/*.vts.trace", VTS_TMP_DIR));
-            } catch (DeviceNotAvailableException | IOException e) {
-                CLog.e("Failed to get vts hal profiling trace: " + e.toString());
-            }
-        }
-    }
-
-    private void pullTraceFiles(ITestDevice device, String moduleName)
-            throws DeviceNotAvailableException, IOException {
-        File localTracedDir = null;
-        IBuildInfo buildInfo = getBuildInfos().get(0);
-        String tracePath = buildInfo.getBuildAttributes().get(TRACE_PATH);
-        // Create the local directory to store the trace files.
-        if (tracePath != null) {
-            localTracedDir = new File(String.format("%s/%s", tracePath, moduleName));
-        } else {
-            localTracedDir = new File(
-                    String.format("%s/%s", FileUtil.createTempDir(TRACE_DIR_PREFIX), moduleName));
-        }
-        if (!localTracedDir.exists()) {
-            if (!localTracedDir.mkdirs()) {
-                CLog.e("Failed to create trace dir: " + localTracedDir.getAbsolutePath());
-                return;
-            }
-        }
-        // Pull the trace files.
-        CLog.i("Storing trace files to: " + localTracedDir.getAbsolutePath());
-        String out = device.executeShellCommand(String.format("ls %s/*.vts.trace", VTS_TMP_DIR));
-        for (String line : out.split("\n")) {
-            line = line.trim();
-            File trace_file = new File(
-                    localTracedDir.getAbsolutePath(), line.substring(VTS_TMP_DIR.length()));
-            device.pullFile(line, trace_file);
-        }
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/module/VtsHalAdapterModuleController.java b/harnesses/tradefed/src/com/android/tradefed/module/VtsHalAdapterModuleController.java
deleted file mode 100644
index 8b9dd3d..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/module/VtsHalAdapterModuleController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.module;
-
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.testtype.suite.module.IModuleController;
-import com.android.tradefed.testtype.suite.module.BaseModuleController;
-
-/**
- * Controller to skip the HAL adapter test if the targeting HAL is not available.
- * Only used for single-device testing or the primary device in multi-device
- * testing.
- */
-public class VtsHalAdapterModuleController extends BaseModuleController {
-    // Command to list the registered instance for the given hal@version.
-    static final String LIST_HAL_CMD =
-            "lshal -ti --neat 2>/dev/null | grep -e '^hwbinder' | awk '{print $2}' | grep %s";
-
-    @Option(name = "hal-package-name",
-            description =
-                    "The package name of a target HAL required, e.g., android.hardware.foo@1.0")
-    private String mPackageName = null;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public RunStrategy shouldRun(IInvocationContext context) {
-        ITestDevice device = context.getDevices().get(0);
-        try {
-            String out = device.executeShellCommand(String.format(LIST_HAL_CMD, mPackageName));
-            if (out.isEmpty()) {
-                CLog.w("The specific HAL service is not running. Skip test module.");
-                return RunStrategy.SKIP_MODULE_TESTCASES;
-            }
-            return RunStrategy.RUN;
-        } catch (DeviceNotAvailableException e) {
-            CLog.e("Failed to list HAL service.");
-            return RunStrategy.RUN;
-        }
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsCoveragePreparer.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsCoveragePreparer.java
deleted file mode 100644
index ad088d5..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsCoveragePreparer.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.targetprep;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.targetprep.TargetSetupError;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.IRunUtil;
-import com.android.tradefed.util.RunUtil;
-import com.android.tradefed.util.VtsVendorConfigFileUtil;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-/**
- * Preparer class for sanitizer and gcov coverage.
- *
- * <p>For devices instrumented with sanitizer coverage, this preparer fetches the unstripped
- * binaries and copies them to a temporary directory whose path is passed down with the test
- * IBuildInfo object. For gcov-instrumented devices, the zip containing gcno files is retrieved
- * along with the build info artifact.
- */
-@OptionClass(alias = "vts-coverage-preparer")
-public class VtsCoveragePreparer implements ITargetPreparer, ITargetCleaner {
-    static final long BASE_TIMEOUT = 1000 * 60 * 20; // timeout for fetching artifacts
-    static final String BUILD_INFO_ARTIFACT = "BUILD_INFO"; // name of build info artifact
-    static final String GCOV_PROPERTY = "ro.vts.coverage"; // indicates gcov when val is 1
-    static final String GCOV_ARTIFACT = "%s-coverage-%s.zip"; // gcov coverage artifact
-    static final String GCOV_FILE_NAME = "gcov.zip"; // gcov zip file to pass to VTS
-
-    static final String SELINUX_DISABLED = "Disabled"; // selinux disabled
-    static final String SELINUX_ENFORCING = "Enforcing"; // selinux enforcing mode
-    static final String SELINUX_PERMISSIVE = "Permissive"; // selinux permissive mode
-
-    static final String SYMBOLS_ARTIFACT = "%s-symbols-%s.zip"; // symbolized binary zip
-    static final String SYMBOLS_FILE_NAME = "symbols.zip"; // sancov zip to pass to VTS
-    static final String SANCOV_FLAVOR = "_asan_coverage"; // sancov device build flavor
-
-    // Path to store coverage data on the target.
-    static final String COVERAGE_DATA_PATH = "/data/misc/trace/";
-    // Path to store coverage report.
-    static final String COVERAGE_REPORT_PATH = "coverage_report_path";
-
-    // Build key for gcov resources
-    static final String GCOV_RESOURCES_KEY = "gcov-resources-path-%s";
-
-    // Buid key for sancov resources
-    static final String SANCOV_RESOURCES_KEY = "sancov-resources-path-%s";
-
-    // Relative path to coverage configure binary in VTS package
-    static final String COVERAGE_CONFIGURE_SRC = "DATA/bin/vts_coverage_configure";
-
-    // Target path for coverage configure binary, will be removed in teardown
-    static final String COVERAGE_CONFIGURE_DST = "/data/local/tmp/vts_coverage_configure";
-
-    // Default path to store coverage reports.
-    static final String DEFAULT_COVRAGE_REPORT_PATH = "/tmp/vts-coverage-report/";
-
-    // Default path to store coverage resource files locally.
-    static final String DEFAULT_LOCAL_COVERAGE_RESOURCE_PATH = "/tmp/coverage/";
-
-    private File mDeviceInfoPath = null; // host path where coverage device artifacts are stored
-    private String mEnforcingState = null; // start state for selinux enforcement
-    private IRunUtil mRunUtil = null;
-
-    @Option(name = "use-local-artifects", description = "Whether to use local artifacts.")
-    private boolean mUseLocalArtifects = false;
-
-    @Option(name = "local-coverage-resource-path",
-            description = "Path to look for local artifacts.")
-    private String mLocalCoverageResourcePath = DEFAULT_LOCAL_COVERAGE_RESOURCE_PATH;
-
-    @Option(name = "coverage-report-dir", description = "Local directory to store coverage report.")
-    private String mCoverageReportDir = null;
-
-    /** {@inheritDoc} */
-    @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo)
-            throws DeviceNotAvailableException, TargetSetupError {
-        String flavor = device.getBuildFlavor();
-        String buildId = device.getBuildId();
-
-        if (buildId == null) {
-            CLog.w("Missing build ID. Coverage disabled.");
-            return;
-        }
-
-        boolean sancovEnabled = (flavor != null) && flavor.contains(SANCOV_FLAVOR);
-
-        String coverageProperty = device.getProperty(GCOV_PROPERTY);
-        boolean gcovEnabled = (coverageProperty != null) && coverageProperty.equals("1");
-
-        if (!sancovEnabled && !gcovEnabled) {
-            CLog.d("Coverage disabled.");
-            return;
-        }
-        if (sancovEnabled) {
-            CLog.d("Sanitizer coverage processing enabled.");
-        }
-        if (gcovEnabled) {
-            CLog.d("Gcov coverage processing enabled.");
-        }
-
-        if (mRunUtil == null) {
-            mRunUtil = new RunUtil();
-        }
-
-        CompatibilityBuildHelper buildHelper = createBuildHelper(buildInfo);
-        if (!mUseLocalArtifects) {
-            // Load the vendor configuration
-            String artifactFetcher = getArtifactFetcher(buildInfo);
-            if (artifactFetcher == null) {
-                throw new TargetSetupError(
-                        "Vendor configuration with build_artifact_fetcher required.");
-            }
-
-            try {
-                // Create a temporary coverage directory
-                mDeviceInfoPath = createTempDir(device);
-            } catch (IOException e) {
-                cleanupCoverageData(device);
-                throw new TargetSetupError(
-                        "Failed to create temp dir to store coverage resource files.");
-            }
-
-            if (sancovEnabled) {
-                // Fetch the symbolized binaries
-                String artifactName = String.format(
-                        SYMBOLS_ARTIFACT, flavor.substring(0, flavor.lastIndexOf("-")), buildId);
-                File artifactFile = new File(mDeviceInfoPath, SYMBOLS_FILE_NAME);
-
-                String cmdString = String.format(artifactFetcher, buildId, flavor, artifactName,
-                        artifactFile.getAbsolutePath().toString());
-                String[] cmd = cmdString.split("\\s+");
-                CommandResult commandResult = mRunUtil.runTimedCmd(BASE_TIMEOUT, cmd);
-                if (commandResult == null || commandResult.getStatus() != CommandStatus.SUCCESS
-                        || !artifactFile.exists()) {
-                    cleanupCoverageData(device);
-                    throw new TargetSetupError("Could not fetch unstripped binaries.");
-                }
-            }
-
-            if (gcovEnabled) {
-                // Fetch the symbolized binaries
-                String artifactName = String.format(
-                        GCOV_ARTIFACT, flavor.substring(0, flavor.lastIndexOf("-")), buildId);
-                File artifactFile = new File(mDeviceInfoPath, GCOV_FILE_NAME);
-
-                String cmdString = String.format(artifactFetcher, buildId, flavor, artifactName,
-                        artifactFile.getAbsolutePath().toString());
-                String[] cmd = cmdString.split("\\s+");
-                CommandResult commandResult = mRunUtil.runTimedCmd(BASE_TIMEOUT, cmd);
-                if (commandResult == null || commandResult.getStatus() != CommandStatus.SUCCESS
-                        || !artifactFile.exists()) {
-                    cleanupCoverageData(device);
-                    throw new TargetSetupError("Could not fetch gcov build artifacts.");
-                }
-            }
-
-            // Fetch the device build information file
-            String cmdString = String.format(artifactFetcher, buildId, flavor, BUILD_INFO_ARTIFACT,
-                    mDeviceInfoPath.getAbsolutePath().toString());
-            String[] cmd = cmdString.split("\\s+");
-            CommandResult commandResult = mRunUtil.runTimedCmd(BASE_TIMEOUT, cmd);
-            File artifactFile = new File(mDeviceInfoPath, BUILD_INFO_ARTIFACT);
-            if (commandResult == null || commandResult.getStatus() != CommandStatus.SUCCESS
-                    || !artifactFile.exists()) {
-                cleanupCoverageData(device);
-                throw new TargetSetupError("Could not fetch build info.");
-            }
-        } else {
-            mDeviceInfoPath = new File(mLocalCoverageResourcePath);
-            String fileName = sancovEnabled ? SYMBOLS_FILE_NAME : GCOV_FILE_NAME;
-            File artifactFile = new File(mDeviceInfoPath, fileName);
-            if (!artifactFile.exists()) {
-                cleanupCoverageData(device);
-                throw new TargetSetupError(String.format("Could not find %s under %s.",
-                        GCOV_FILE_NAME, mDeviceInfoPath.getAbsolutePath()));
-            }
-            File buildInfoArtifact = new File(mDeviceInfoPath, BUILD_INFO_ARTIFACT);
-            if (!buildInfoArtifact.exists()) {
-                cleanupCoverageData(device);
-                throw new TargetSetupError(String.format("Could not find %s under %s.",
-                        BUILD_INFO_ARTIFACT, mDeviceInfoPath.getAbsolutePath()));
-            }
-        }
-
-        try {
-            // Push the coverage configure tool
-            File configureSrc = new File(buildHelper.getTestsDir(), COVERAGE_CONFIGURE_SRC);
-            device.pushFile(configureSrc, COVERAGE_CONFIGURE_DST);
-        } catch (FileNotFoundException e) {
-            cleanupCoverageData(device);
-            throw new TargetSetupError("Failed to push the vts coverage configure tool.");
-        }
-
-        if (mCoverageReportDir != null) {
-            try {
-                File resultDir = buildHelper.getResultDir();
-                File coverageDir = new File(resultDir, mCoverageReportDir);
-                buildInfo.addBuildAttribute(COVERAGE_REPORT_PATH, coverageDir.getAbsolutePath());
-            } catch (FileNotFoundException e) {
-                cleanupCoverageData(device);
-                throw new TargetSetupError("Failed to get coverageDir.");
-            }
-        }
-
-        device.executeShellCommand(String.format("rm -rf %s/*", COVERAGE_DATA_PATH));
-        mEnforcingState = device.executeShellCommand("getenforce");
-        if (!mEnforcingState.equals(SELINUX_DISABLED)
-                && !mEnforcingState.equals(SELINUX_PERMISSIVE)) {
-            device.executeShellCommand("setenforce " + SELINUX_PERMISSIVE);
-        }
-
-        if (sancovEnabled) {
-            buildInfo.setFile(
-                    getSancovResourceDirKey(device), mDeviceInfoPath, buildInfo.getBuildId());
-        }
-
-        if (gcovEnabled) {
-            buildInfo.setFile(
-                    getGcovResourceDirKey(device), mDeviceInfoPath, buildInfo.getBuildId());
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
-            throws DeviceNotAvailableException {
-        if (mEnforcingState != null && !mEnforcingState.equals(SELINUX_DISABLED)) {
-            device.executeShellCommand("setenforce " + mEnforcingState);
-        }
-        cleanupCoverageData(device);
-    }
-
-    /**
-     * Get the key of the symbolized binary directory for the specified device.
-     *
-     * @param device the target device whose sancov resources directory to get.
-     * @return the (String) key name of the device's sancov resources directory.
-     */
-    public static String getSancovResourceDirKey(ITestDevice device) {
-        return String.format(SANCOV_RESOURCES_KEY, device.getSerialNumber());
-    }
-
-    /**
-     * Get the key of the gcov resources for the specified device.
-     *
-     * @param device the target device whose sancov resources directory to get.
-     * @return the (String) key name of the device's gcov resources directory.
-     */
-    public static String getGcovResourceDirKey(ITestDevice device) {
-        return String.format(GCOV_RESOURCES_KEY, device.getSerialNumber());
-    }
-
-    /**
-     * Cleanup the coverage data on target and host.
-     *
-     * @param device the target device.
-     */
-    private void cleanupCoverageData(ITestDevice device) throws DeviceNotAvailableException {
-        if (mDeviceInfoPath != null) {
-            FileUtil.recursiveDelete(mDeviceInfoPath);
-        }
-        device.executeShellCommand("rm -rf " + COVERAGE_CONFIGURE_DST);
-        device.executeShellCommand(String.format("rm -rf %s/*", COVERAGE_DATA_PATH));
-    }
-
-    @VisibleForTesting
-    File createTempDir(ITestDevice device) throws IOException {
-        return FileUtil.createTempDir(device.getSerialNumber());
-    }
-
-    @VisibleForTesting
-    String getArtifactFetcher(IBuildInfo buildInfo) {
-        VtsVendorConfigFileUtil configFileUtil = new VtsVendorConfigFileUtil();
-        if (configFileUtil.LoadVendorConfig(buildInfo)) {
-            return configFileUtil.GetVendorConfigVariable("build_artifact_fetcher");
-        }
-        return null;
-    }
-
-    /**
-     * Create and return a {@link CompatibilityBuildHelper} to use during the preparer.
-     */
-    @VisibleForTesting
-    CompatibilityBuildHelper createBuildHelper(IBuildInfo buildInfo) {
-        return new CompatibilityBuildHelper(buildInfo);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsDevicePreparer.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsDevicePreparer.java
deleted file mode 100644
index 30b061b..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsDevicePreparer.java
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-
-/**
- * Perform basic device preparation tasks such as check (and turn on/off) device framework.
- *
- * Options with prefix "enable" or "disable" enables or disables a feature,
- * and setting them to false means no operation.
- *
- * For a same feature, if "enable" and "disable" options are both set to true will result in no-op.
- *
- * Any of the "restore" option will restore the feature to the state before test. This means actions
- * may be taken even if the feature is not enabled. For example, if device framework is on,
- * "enable-framework" is "false", "restore-all" is set to "true", and during a test the framework
- * is turned on/off, this class will start the framework in the end.
- */
-public class VtsDevicePreparer implements ITargetPreparer, ITargetCleaner {
-    @Option(name = "start-framework",
-            description = "Whether to start android framework on device. "
-                    + "Setting this option to false does not stop framework. "
-                    + "If both start-framework and stop-framework is set to true, "
-                    + "no action will be taken.")
-    boolean mStartFramework = false;
-
-    @Option(name = "stop-framework",
-            description = "Whether to stop android framework on device. "
-                    + "Setting this option to false does not start framework. "
-                    + "If both start-framework and disable-framework is set to true, "
-                    + "no action will be taken.")
-    boolean mStopFramework = false;
-
-    @Option(name = "restore-framework",
-            description = "Whether to restore the initial framework "
-                    + "start/stop status after tests. "
-                    + "This option will be overriden by restore-all if that is set to true.")
-    boolean mRestoreFramework = false;
-
-    @Option(name = "enable-adb-root",
-            description = "Whether to enable adb root on device. "
-                    + "If set to true, `adb root` will be called. "
-                    + "Setting this option to false does not disable adb root. "
-                    + "This option requires enable-root setting be true in test plan setting. "
-                    + "If both enable-adb-root and disable-adb-root is set to true, no action "
-                    + "will be taken.")
-    boolean mEnableAdbRoot = false;
-
-    @Option(name = "disable-adb-root",
-            description = "Whether to disable adb root on device. "
-                    + "If set to true, `adb root` will be called. "
-                    + "Setting this option to false does not enable adb root. "
-                    + "If both enable-adb-root and disable-adb-root is set to true, "
-                    + "no action will be taken.")
-    boolean mDisableAdbRoot = false;
-
-    @Option(name = "restore-adb-root",
-            description = "Whether to restore the initial adb root "
-                    + "status after tests. "
-                    + "This option will be overriden by restore-all if that is set to true.")
-    boolean mRestoreAdbRoot = false;
-
-    @Option(name = "restore-all",
-            description = "Whether to restore device status after tests. "
-                    + "This option overrides individual restore options such as restore-framework.")
-    boolean mRestoreAll = false;
-
-    @Option(name = "enable-radio-log",
-            description = "Whether to enable radio modem logcat. Device will reboot if enabled. "
-                    + "This option requires adb root but will not automatically root adb. "
-                    + "Setting this option false does not disable already enabled radio log.")
-    boolean mEnableRadioLog = false;
-
-    @Option(name = "restore-radio-log",
-            description = "Whether to restore radio modem logcat status after test. "
-                    + "This option requires adb root but will not automatically root adb. "
-                    + "If both enable-radio-log and this option is set to true, "
-                    + "device will reboot again at the end of test.")
-    boolean mRestoreRadioLog = false;
-
-    public static long DEVICE_BOOT_TIMEOUT = 3 * 60 * 1000;
-    static final String SYSPROP_DEV_BOOTCOMPLETE = "dev.bootcomplete";
-    static final String SYSPROP_SYS_BOOT_COMPLETED = "sys.boot_completed";
-    public static String SYSPROP_RADIO_LOG = "persist.vendor.radio.adb_log_on";
-    public static String SYSPROP_RADIO_LOG_OLD = "persist.radio.adb_log_on";
-    public String mSyspropRadioLog = SYSPROP_RADIO_LOG;
-
-    // The name of a system property which tells whether to stop properly configured
-    // native servers where properly configured means a server's init.rc is
-    // configured to stop when that property's value is 1.
-    static final String SYSPROP_VTS_NATIVE_SERVER = "vts.native_server.on";
-
-    boolean mInitialFrameworkStarted = true;
-    boolean mInitialAdbRoot = false;
-    DeviceOptionState mInitialRadioLog = DeviceOptionState.UNKNOWN;
-    ITestDevice mDevice = null;
-
-    // Whether to reboot device during setUp
-    boolean mRebootSetup = false;
-    // Whether to reboot device during tearDown
-    boolean mRebootTearDown = false;
-
-    public enum DeviceOptionState {
-        UNKNOWN,
-        ENABLED,
-        DISABLED,
-        NOT_AVAILABLE;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo)
-            throws TargetSetupError, BuildError, DeviceNotAvailableException {
-        mDevice = device;
-
-        // The order of the following steps matters.
-
-        adbRootPreRebootSetUp();
-        radioLogPreRebootSetup();
-        frameworkPreRebootSetUp();
-
-        if (mRebootSetup) {
-            device.reboot();
-            device.waitForBootComplete(DEVICE_BOOT_TIMEOUT);
-        }
-
-        frameworkPostRebootSetUp();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
-            throws DeviceNotAvailableException {
-        if (e instanceof DeviceNotAvailableException) {
-            CLog.i("Skip tear down due to DeviceNotAvailableException");
-            return;
-        }
-        // The order of the following steps matters.
-
-        radioLogPreTearDown();
-
-        if (mRebootTearDown) {
-            device.reboot();
-            device.waitForBootComplete(DEVICE_BOOT_TIMEOUT);
-        }
-
-        adbRootPostTearDown();
-        frameworkPostTearDown();
-    }
-
-    /**
-     * Prepares adb root status.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    private void adbRootPreRebootSetUp() throws DeviceNotAvailableException {
-        if (mRestoreAll || mRestoreAdbRoot) {
-            // mInitialAdbRoot is only needed at tearDown because AndroidDeviceController
-            // already checks initial adb root status
-            mInitialAdbRoot = mDevice.isAdbRoot();
-        }
-
-        if (mEnableAdbRoot && !mDisableAdbRoot) {
-            adbRoot();
-        } else if (mDisableAdbRoot && !mEnableAdbRoot) {
-            adbUnroot();
-        }
-    }
-
-    /**
-     * Restores adb root status
-     *
-     * @throws DeviceNotAvailableException
-     *
-     */
-    private void adbRootPostTearDown() throws DeviceNotAvailableException {
-        if (!mRestoreAll && !mRestoreAdbRoot) {
-            return;
-        }
-
-        if (mInitialAdbRoot) {
-            adbRoot();
-        } else {
-            adbUnroot();
-        }
-    }
-
-    /**
-     * Collect framework on/off status if restore option is enabled.
-     * @throws DeviceNotAvailableException
-     */
-    private void frameworkPreRebootSetUp() throws DeviceNotAvailableException {
-        if (mRestoreAll || mRestoreFramework) {
-            // mInitialFrameworkStarted is only needed at tearDown because AndroidDeviceController
-            // already checks initial framework status
-            mInitialFrameworkStarted = isFrameworkRunning();
-        }
-    }
-
-    /**
-     * Prepares device framework start/stop status
-     *
-     * @throws DeviceNotAvailableException
-     */
-    private void frameworkPostRebootSetUp() throws DeviceNotAvailableException {
-        if (mStartFramework && !mStopFramework) {
-            startFramework();
-        } else if (mStopFramework && !mStartFramework) {
-            stopFramework();
-        }
-    }
-
-    /**
-     * Restores the framework start/stop status
-     *
-     * @throws DeviceNotAvailableException
-     */
-    private void frameworkPostTearDown() throws DeviceNotAvailableException {
-        if (!mRestoreAll && !mRestoreFramework) {
-            return;
-        }
-
-        boolean current = isFrameworkRunning();
-
-        if (mInitialFrameworkStarted && !current) {
-            startFramework();
-        } else if (!mInitialFrameworkStarted && current) {
-            stopFramework();
-        }
-    }
-
-    /**
-     * @throws DeviceNotAvailableException
-     *
-     */
-    private void radioLogPreRebootSetup() throws DeviceNotAvailableException {
-        if (mEnableRadioLog || mRestoreAll || mRestoreRadioLog) {
-            mInitialRadioLog = radioLogGetState();
-
-            if (mInitialRadioLog == DeviceOptionState.NOT_AVAILABLE) {
-                CLog.d("Radio modem log configured but the setting is not available "
-                        + " on device. Skipping.");
-                return;
-            }
-        }
-
-        if (mEnableRadioLog && mInitialRadioLog == DeviceOptionState.DISABLED) {
-            this.setProperty(SYSPROP_RADIO_LOG, "1");
-            CLog.d("Turing on radio modem log.");
-            mRebootSetup = true;
-        }
-    }
-
-    /**
-     * @throws DeviceNotAvailableException
-     *
-     */
-    private void radioLogPreTearDown() throws DeviceNotAvailableException {
-        if (mInitialRadioLog == DeviceOptionState.NOT_AVAILABLE) {
-            return;
-        }
-
-        if (!mRestoreAll && !mRestoreRadioLog) {
-            return;
-        }
-
-        DeviceOptionState current = radioLogGetState();
-
-        if (mInitialRadioLog == DeviceOptionState.DISABLED
-                && current == DeviceOptionState.ENABLED) {
-            CLog.d("Turing off radio modem log.");
-            this.setProperty(SYSPROP_RADIO_LOG, "0");
-        } else if (mInitialRadioLog == DeviceOptionState.ENABLED
-                && current == DeviceOptionState.DISABLED) {
-            CLog.d("Turing on radio modem log.");
-            this.setProperty(SYSPROP_RADIO_LOG, "1");
-        } else {
-            return;
-        }
-
-        mRebootTearDown = true;
-    }
-
-    /**
-     * Returns the state of radio modem log on/off state.
-     * @return DeviceOptionState specifying the state.
-     * @throws DeviceNotAvailableException
-     */
-    private DeviceOptionState radioLogGetState() throws DeviceNotAvailableException {
-        String radioProp = mDevice.getProperty(mSyspropRadioLog);
-
-        if (radioProp == null && mSyspropRadioLog != SYSPROP_RADIO_LOG_OLD) {
-            mSyspropRadioLog = SYSPROP_RADIO_LOG_OLD;
-            radioProp = mDevice.getProperty(mSyspropRadioLog);
-        }
-
-        if (radioProp == null) {
-            return DeviceOptionState.NOT_AVAILABLE;
-        }
-
-        switch (radioProp) {
-            case "1":
-                return DeviceOptionState.ENABLED;
-            case "0":
-                return DeviceOptionState.DISABLED;
-            default:
-                return DeviceOptionState.NOT_AVAILABLE;
-        }
-    }
-
-    // ----------------------- Below are device util methods -----------------------
-
-    /**
-     * Executes command "adb root" if adb is not running as root.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void adbRoot() throws DeviceNotAvailableException {
-        if (!mDevice.isAdbRoot()) {
-            mDevice.executeAdbCommand("root");
-        }
-    }
-
-    /**
-     * Executes command "adb unroot" if adb is running as root.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void adbUnroot() throws DeviceNotAvailableException {
-        if (mDevice.isAdbRoot()) {
-            mDevice.executeAdbCommand("unroot");
-        }
-    }
-
-    /**
-     * Start Android framework on a device.
-     *
-     * This method also starts VTS native servers which is required to start the framework
-     * This method will block until boot complete or timeout.
-     * A default timeout value will be used
-     *
-     * @throws DeviceNotAvailableException if timeout waiting for boot complete
-     */
-    void startFramework() throws DeviceNotAvailableException {
-        startFramework(DEVICE_BOOT_TIMEOUT);
-    }
-
-    /**
-     * Starts Android framework on a device.
-     *
-     * This method also starts VTS native servers which is required to start the framework
-     * This method will block until boot complete or timeout.
-     *
-     * @param timeout timeout in milliseconds.
-     * @throws DeviceNotAvailableException if timeout waiting for boot complete
-     */
-    void startFramework(long timeout) throws DeviceNotAvailableException {
-        startNativeServers();
-        mDevice.executeShellCommand("start");
-
-        waitForFrameworkStartComplete();
-    }
-
-    /**
-     * Wait for Android framework to complete starting.
-     *
-     * @throws DeviceNotAvailableException timed out
-     */
-    void waitForFrameworkStartComplete() throws DeviceNotAvailableException {
-        waitForFrameworkStartComplete(DEVICE_BOOT_TIMEOUT);
-    }
-
-    /**
-     * Wait for Android framework to complete starting.
-     *
-     * @param timeout
-     * @throws DeviceNotAvailableException
-     */
-    void waitForFrameworkStartComplete(long timeout) throws DeviceNotAvailableException {
-        long start = System.currentTimeMillis();
-
-        // First, wait for boot completion
-        mDevice.waitForBootComplete(timeout);
-
-        while (!isFrameworkRunning()) {
-            if (System.currentTimeMillis() - start >= timeout) {
-                throw new DeviceNotAvailableException(
-                        "Timed out waiting for framework start complete.",
-                        mDevice.getSerialNumber());
-            }
-
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-                throw new DeviceNotAvailableException(
-                        "Intrupted while waiting for framework start complete.",
-                        mDevice.getSerialNumber());
-            }
-        }
-    }
-
-    /**
-     * Stops Android framework on a device.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void stopFramework() throws DeviceNotAvailableException {
-        mDevice.executeShellCommand("stop");
-        this.setProperty(SYSPROP_SYS_BOOT_COMPLETED, "0");
-    }
-
-    /**
-     * Restarts Android framework on a device.
-     *
-     * This method will block until start finish or timeout.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void restartFramework() throws DeviceNotAvailableException {
-        stopFramework();
-        startFramework();
-    }
-
-    /**
-     * Starts all native servers.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void startNativeServers() throws DeviceNotAvailableException {
-        this.setProperty(SYSPROP_VTS_NATIVE_SERVER, "0");
-    }
-
-    /**
-     * Stops all native servers.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    void stopNativeServers() throws DeviceNotAvailableException {
-        this.setProperty(SYSPROP_VTS_NATIVE_SERVER, "1");
-    }
-
-    /**
-     * Sets a sysprop on the device.
-     *
-     * TODO: to be removed once the API is added to TF
-     *
-     * @param key the key of a sysprop.
-     * @param value the value of a sysprop.
-     * @throws DeviceNotAvailableException
-     */
-    void setProperty(String key, String value) throws DeviceNotAvailableException {
-        // TODO: check success
-        mDevice.executeShellCommand(String.format("setprop %s %s", key, value));
-    }
-
-    boolean isBootCompleted() throws DeviceNotAvailableException {
-        String sysBootCompleted = mDevice.getProperty(SYSPROP_SYS_BOOT_COMPLETED);
-        String devBootCompleted = mDevice.getProperty(SYSPROP_DEV_BOOTCOMPLETE);
-        return sysBootCompleted != null && sysBootCompleted.equals("1") && devBootCompleted != null
-                && devBootCompleted.equals("1");
-    }
-
-    /**
-     * Checks whether Android framework is started.
-     *
-     * @return True if started, False otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    boolean isFrameworkRunning() throws DeviceNotAvailableException {
-        // First, check whether boot has completed.
-        if (!isBootCompleted()) {
-            return false;
-        }
-
-        String cmd = "ps -g system | grep system_server";
-        return mDevice.executeShellCommand(cmd).contains("system_server");
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsHalAdapterPreparer.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsHalAdapterPreparer.java
deleted file mode 100644
index 2b90e99..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsHalAdapterPreparer.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.VtsCompatibilityInvocationHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.testtype.IAbi;
-import com.android.tradefed.testtype.IAbiReceiver;
-import com.android.tradefed.util.CmdUtil;
-import com.android.tradefed.util.FileUtil;
-import java.io.File;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-import java.util.Vector;
-import java.util.function.Predicate;
-
-/**
- * Starts and stops a HAL (Hardware Abstraction Layer) adapter.
- * Only used for single-device testing or the primary device in multi-device
- * testing.
- */
-@OptionClass(alias = "vts-hal-adapter-preparer")
-public class VtsHalAdapterPreparer implements ITargetCleaner, IAbiReceiver {
-    static final int THREAD_COUNT_DEFAULT = 1;
-
-    static final String HAL_INTERFACE_SEP = "::";
-    static final String HAL_INSTANCE_SEP = "/";
-    // Relative path to vts native tests directory.
-    static final String VTS_NATIVE_TEST_DIR = "DATA/nativetest%s/";
-    // Path of native tests directory on target device.
-    static final String TARGET_NATIVE_TEST_DIR = "/data/nativetest%s/";
-    // Sysprop to stop HIDL adapaters. Currently, there's one global flag for all adapters.
-    static final String ADAPTER_SYSPROP = "test.hidl.adapters.deactivated";
-    // The wrapper script to start an adapter binary in the background.
-    static final String SCRIPT_PATH = "/data/local/tmp/vts_adapter.sh";
-    // Command to list the registered instance for the given hal@version.
-    static final String LIST_HAL_CMD =
-            "lshal -ti --neat 2>/dev/null | grep -e '^hwbinder' | awk '{print $2}' | grep %s";
-
-    @Option(name = "adapter-binary-name",
-            description = "Adapter binary file name (typically under /data/nativetest*/)")
-    private String mAdapterBinaryName = null;
-
-    @Option(name = "hal-package-name", description = "Target hal to adapter")
-    private String mPackageName = null;
-
-    @Option(name = "thread-count", description = "HAL adapter's thread count")
-    private int mThreadCount = THREAD_COUNT_DEFAULT;
-
-    // Application Binary Interface (ABI) info of the current test run.
-    private IAbi mAbi = null;
-
-    // CmdUtil help to verify the cmd results.
-    private CmdUtil mCmdUtil = null;
-    // Predicates to stop retrying cmd.
-    private Predicate<String> mCheckEmpty = (String str) -> {
-        return str.isEmpty();
-    };
-    private Predicate<String> mCheckNonEmpty = (String str) -> {
-        return !str.isEmpty();
-    };
-    private Vector<String> mCommands = new Vector<String>();
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo)
-            throws TargetSetupError, BuildError, DeviceNotAvailableException {
-        // adb root.
-        device.enableAdbRoot();
-        String bitness =
-                (mAbi != null) ? ((mAbi.getBitness() == "32") ? "" : mAbi.getBitness()) : "";
-        try {
-            pushAdapter(device, bitness);
-        } catch (IOException | NoSuchElementException e) {
-            CLog.e("Could not push adapter: " + e.toString());
-            throw new TargetSetupError("Could not push adapter.");
-        }
-
-        mCmdUtil = mCmdUtil != null ? mCmdUtil : new CmdUtil();
-        mCmdUtil.setSystemProperty(device, ADAPTER_SYSPROP, "false");
-
-        String out = device.executeShellCommand(String.format(LIST_HAL_CMD, mPackageName));
-        for (String line : out.split("\n")) {
-            if (!line.isEmpty()) {
-                if (!line.contains(HAL_INTERFACE_SEP)) {
-                    throw new TargetSetupError("HAL instance with wrong format.");
-                }
-                String interfaceInstance = line.split(HAL_INTERFACE_SEP, 2)[1];
-                if (!interfaceInstance.contains(HAL_INSTANCE_SEP)) {
-                    throw new TargetSetupError("HAL instance with wrong format.");
-                }
-                String interfaceName = interfaceInstance.split(HAL_INSTANCE_SEP, 2)[0];
-                String instanceName = interfaceInstance.split(HAL_INSTANCE_SEP, 2)[1];
-                // starts adapter
-                String command = String.format("chmod a+x %s", SCRIPT_PATH);
-                mCommands.add(command);
-                command = String.format("%s /data/nativetest%s/%s %s %s %d", SCRIPT_PATH, bitness,
-                        mAdapterBinaryName, interfaceName, instanceName, mThreadCount);
-                CLog.d("Trying to adapter for %s",
-                        mPackageName + "::" + interfaceName + "/" + instanceName);
-                mCommands.add(command);
-            }
-        }
-        if (mCommands.isEmpty()) {
-            CLog.w("The specific HAL service is not running.");
-            return;
-        }
-        if (!mCmdUtil.retry(
-                    device, mCommands, String.format(LIST_HAL_CMD, mPackageName), mCheckEmpty)) {
-            throw new TargetSetupError("HAL adapter setup failed.");
-        }
-
-        mCmdUtil.restartFramework(device);
-        if (!mCmdUtil.waitCmdResultWithDelay(
-                    device, "service list | grep IPackageManager", mCheckNonEmpty)) {
-            throw new TargetSetupError("Failed to start package service");
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
-            throws DeviceNotAvailableException {
-        if (!mCommands.isEmpty()) {
-            // stops adapter(s)
-            String command = String.format("setprop %s %s", ADAPTER_SYSPROP, "true");
-            mCmdUtil = mCmdUtil != null ? mCmdUtil : new CmdUtil();
-            if (!mCmdUtil.retry(device, command, String.format(LIST_HAL_CMD, mPackageName),
-                        mCheckNonEmpty, mCommands.size() + mCmdUtil.MAX_RETRY_COUNT)) {
-                CLog.e("HAL restore failed.");
-            }
-            // TODO: cleanup the pushed adapter files.
-            mCmdUtil.restartFramework(device);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setAbi(IAbi abi) {
-        mAbi = abi;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public IAbi getAbi() {
-        return mAbi;
-    }
-
-    /**
-     * Push the required adapter binary to device.
-     *
-     * @param device device object.
-     * @param bitness ABI bitness.
-     * @throws DeviceNotAvailableException.
-     * @throws IOException.
-     * @throws NoSuchElementException.
-     */
-    private void pushAdapter(ITestDevice device, String bitness)
-            throws DeviceNotAvailableException, IOException, NoSuchElementException {
-        VtsCompatibilityInvocationHelper invocationHelper = createVtsHelper();
-        File adapterDir = new File(
-                invocationHelper.getTestsDir(), String.format(VTS_NATIVE_TEST_DIR, bitness));
-        File adapter = FileUtil.findFile(adapterDir, mAdapterBinaryName);
-        if (adapter != null) {
-            CLog.d("Pushing %s", mAdapterBinaryName);
-            device.pushFile(
-                    adapter, String.format(TARGET_NATIVE_TEST_DIR, bitness) + mAdapterBinaryName);
-        } else {
-            throw new NoSuchElementException("Could not find adapter: " + mAdapterBinaryName);
-        }
-    }
-
-    /**
-     * Create and return a {@link VtsCompatibilityInvocationHelper} to use during the preparer.
-     */
-    @VisibleForTesting
-    VtsCompatibilityInvocationHelper createVtsHelper() {
-        return new VtsCompatibilityInvocationHelper();
-    }
-
-    @VisibleForTesting
-    void setCmdUtil(CmdUtil cmdUtil) {
-        mCmdUtil = cmdUtil;
-    }
-
-    @VisibleForTesting
-    void addCommand(String command) {
-        mCommands.add(command);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparer.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparer.java
deleted file mode 100644
index 973e144..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparer.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.targetprep;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.command.remote.DeviceDescriptor;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.targetprep.multi.IMultiTargetPreparer;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.EnvUtil;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.IRunUtil;
-import com.android.tradefed.util.RunUtil;
-import com.android.tradefed.util.VtsPythonRunnerHelper;
-import com.android.tradefed.util.VtsVendorConfigFileUtil;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-/**
- * Sets up a Python virtualenv on the host and installs packages. To activate it, the working
- * directory is changed to the root of the virtualenv.
- *
- * This's a fork of PythonVirtualenvPreparer and is forked in order to simplify the change
- * deployment process and reduce the deployment time, which are critical for VTS services.
- * That means changes here will be upstreamed gradually.
- */
-@OptionClass(alias = "python-venv")
-public class VtsPythonVirtualenvPreparer implements IMultiTargetPreparer {
-    private static final String LOCAL_PYPI_PATH_ENV_VAR_NAME = "VTS_PYPI_PATH";
-    private static final String LOCAL_PYPI_PATH_KEY = "pypi_packages_path";
-    private static final int SECOND_IN_MSECS = 1000;
-    private static final int MINUTE_IN_MSECS = 60 * SECOND_IN_MSECS;
-    protected static final int PIP_RETRY = 3;
-    private static final int PIP_RETRY_WAIT = 3 * SECOND_IN_MSECS;
-    protected static final int PIP_INSTALL_DELAY = SECOND_IN_MSECS;
-    public static final String VIRTUAL_ENV_V3 = "VIRTUAL_ENV_V3";
-    public static final String VIRTUAL_ENV = "VIRTUAL_ENV";
-
-    @Option(name = "venv-dir", description = "path of an existing virtualenv to use")
-    protected File mVenvDir = null;
-
-    @Option(name = "requirements-file", description = "pip-formatted requirements file")
-    private File mRequirementsFile = null;
-
-    @Option(name = "script-file", description = "scripts which need to be executed in advance")
-    private Collection<String> mScriptFiles = new TreeSet<>();
-
-    @Option(name = "dep-module", description = "modules which need to be installed by pip")
-    protected Collection<String> mDepModules = new LinkedHashSet<>();
-
-    @Option(name = "no-dep-module", description = "modules which should not be installed by pip")
-    private Collection<String> mNoDepModules = new TreeSet<>();
-
-    @Option(name = "reuse",
-            description = "Reuse an exising virtualenv path if exists in "
-                    + "temp directory. When this option is enabled, virtualenv directory used or "
-                    + "created by this preparer will not be deleted after tests complete.")
-    protected boolean mReuse = true;
-
-    @Option(name = "python-version",
-            description = "The version of a Python interpreter to use."
-                    + "Currently, only major version number is fully supported."
-                    + "Example: \"2\", or \"3\".")
-    private String mPythonVersion = "2";
-
-    @Option(name = "virtual-env-intallation-wait-time",
-            isTimeVal = true,
-            description = "The maximum wait time for virtual env installation.")
-    private long mVirtualEnvInstallationWaitTime = 600000L;
-
-    private IBuildInfo mBuildInfo = null;
-    private DeviceDescriptor mDescriptor = null;
-    private IRunUtil mRunUtil = new RunUtil();
-
-    String mLocalPypiPath = null;
-    String mPipPath = null;
-
-    // A map of initially installed pip modules and versions. Newly installed modules are not
-    // currently added automatically.
-    private Map<String, String> mPipInstallList = null;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setUp(IInvocationContext context)
-            throws TargetSetupError, BuildError, DeviceNotAvailableException {
-        mBuildInfo = context.getBuildInfos().get(0);
-        ITestDevice device = context.getDevices().get(0);
-        mDescriptor = device.getDeviceDescriptor();
-        // Ensure the method is locked even across instances
-        synchronized (VtsPythonVirtualenvPreparer.class) {
-            // Get virtual-env if existing
-            if (mVenvDir == null) {
-                mVenvDir = checkTestPlanLevelVirtualenv(mBuildInfo);
-                if (mVenvDir == null) {
-                    mVenvDir = createVirtualEnvCache(mBuildInfo);
-                }
-            }
-            if (new File(mVenvDir, "complete").exists()) {
-                VtsPythonRunnerHelper.activateVirtualenv(getRunUtil(), mVenvDir.getAbsolutePath());
-            } else {
-                // If cache is not good.
-                CLog.d("Preparing python dependencies...");
-
-                if (!createVirtualenv(mVenvDir)) {
-                    throw new TargetSetupError("Failed to create the virtual-env", mDescriptor);
-                }
-                CLog.d("Python virtualenv path is: " + mVenvDir);
-                VtsPythonRunnerHelper.activateVirtualenv(getRunUtil(), mVenvDir.getAbsolutePath());
-                try {
-                    new File(mVenvDir, "complete").createNewFile();
-                } catch (IOException e) {
-                    throw new TargetSetupError(
-                            "Failed to mark virtualenv complete.", e, mDescriptor);
-                }
-            }
-            // Setup the dependencies no matter what.
-            setLocalPypiPath();
-            installDeps();
-            // Set the built virtual-env in the build info.
-            CLog.d("Python virtualenv path is: " + mVenvDir);
-            addPathToBuild(mBuildInfo, mVenvDir);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void tearDown(IInvocationContext context, Throwable e)
-            throws DeviceNotAvailableException {
-        mVenvDir = null;
-    }
-
-    /**
-     * This method sets mLocalPypiPath, the local PyPI package directory to
-     * install python packages from in the installDeps method.
-     */
-    protected void setLocalPypiPath() {
-        VtsVendorConfigFileUtil configReader = new VtsVendorConfigFileUtil();
-        if (configReader.LoadVendorConfig(mBuildInfo)) {
-            // First try to load local PyPI directory path from vendor config file
-            try {
-                String pypiPath = configReader.GetVendorConfigVariable(LOCAL_PYPI_PATH_KEY);
-                if (pypiPath.length() > 0 && dirExistsAndHaveReadAccess(pypiPath)) {
-                    mLocalPypiPath = pypiPath;
-                    CLog.d(String.format("Loaded %s: %s", LOCAL_PYPI_PATH_KEY, mLocalPypiPath));
-                }
-            } catch (NoSuchElementException e) {
-                /* continue */
-            }
-        }
-
-        // If loading path from vendor config file is unsuccessful,
-        // check local pypi path defined by LOCAL_PYPI_PATH_ENV_VAR_NAME
-        if (mLocalPypiPath == null) {
-            CLog.d("Checking whether local pypi packages directory exists");
-            String pypiPath = System.getenv(LOCAL_PYPI_PATH_ENV_VAR_NAME);
-            if (pypiPath == null) {
-                CLog.d("Local pypi packages directory not specified by env var %s",
-                        LOCAL_PYPI_PATH_ENV_VAR_NAME);
-            } else if (dirExistsAndHaveReadAccess(pypiPath)) {
-                mLocalPypiPath = pypiPath;
-                CLog.d("Set local pypi packages directory to %s", pypiPath);
-            }
-        }
-
-        if (mLocalPypiPath == null) {
-            CLog.d("Failed to set local pypi packages path. Therefore internet connection to "
-                    + "https://pypi.python.org/simple/ must be available to run VTS tests.");
-        }
-    }
-
-    /**
-     * This method returns whether the given path is a dir that exists and the user has read access.
-     */
-    private boolean dirExistsAndHaveReadAccess(String path) {
-        File pathDir = new File(path);
-        if (!pathDir.exists() || !pathDir.isDirectory()) {
-            CLog.d("Directory %s does not exist.", pathDir);
-            return false;
-        }
-
-        if (!EnvUtil.isOnWindows()) {
-            CommandResult c = getRunUtil().runTimedCmd(MINUTE_IN_MSECS, "ls", path);
-            if (c.getStatus() != CommandStatus.SUCCESS) {
-                CLog.d(String.format("Failed to read dir: %s. Result %s. stdout: %s, stderr: %s",
-                        path, c.getStatus(), c.getStdout(), c.getStderr()));
-                return false;
-            }
-            return true;
-        } else {
-            try {
-                String[] pathDirList = pathDir.list();
-                if (pathDirList == null) {
-                    CLog.d("Failed to read dir: %s. Please check access permission.", pathDir);
-                    return false;
-                }
-            } catch (SecurityException e) {
-                CLog.d(String.format(
-                        "Failed to read dir %s with SecurityException %s", pathDir, e));
-                return false;
-            }
-            return true;
-        }
-    }
-
-    /**
-     * Installs all python pip module dependencies specified in options.
-     * @throws TargetSetupError if failed
-     */
-    protected void installDeps() throws TargetSetupError {
-        boolean hasDependencies = false;
-        if (!mScriptFiles.isEmpty()) {
-            for (String scriptFile : mScriptFiles) {
-                CLog.d("Attempting to execute a script, %s", scriptFile);
-                CommandResult c = getRunUtil().runTimedCmd(5 * MINUTE_IN_MSECS, scriptFile);
-                if (c.getStatus() != CommandStatus.SUCCESS) {
-                    CLog.e("Executing script %s failed", scriptFile);
-                    throw new TargetSetupError("Failed to source a script", mDescriptor);
-                }
-            }
-        }
-
-        if (mRequirementsFile != null) {
-            hasDependencies = true;
-            boolean success = false;
-
-            long retry_interval = PIP_RETRY_WAIT;
-            for (int try_count = 0; try_count < PIP_RETRY + 1; try_count++) {
-                if (try_count > 0) {
-                    getRunUtil().sleep(retry_interval);
-                    retry_interval *= 3;
-                }
-
-                if (installPipRequirementFile(mRequirementsFile)) {
-                    success = true;
-                    break;
-                }
-            }
-
-            if (!success) {
-                throw new TargetSetupError(
-                        "Failed to install pip requirement file " + mRequirementsFile, mDescriptor);
-            }
-        }
-
-        if (!mDepModules.isEmpty()) {
-            for (String dep : mDepModules) {
-                hasDependencies = true;
-
-                if (mNoDepModules.contains(dep) || isPipModuleInstalled(dep)) {
-                    continue;
-                }
-
-                boolean success = installPipModuleLocally(dep);
-
-                long retry_interval = PIP_RETRY_WAIT;
-                for (int retry_count = 0; retry_count < PIP_RETRY + 1; retry_count++) {
-                    if (retry_count > 0) {
-                        getRunUtil().sleep(retry_interval);
-                        retry_interval *= 3;
-                    }
-
-                    if (success || (!success && installPipModule(dep))) {
-                        success = true;
-                        getRunUtil().sleep(PIP_INSTALL_DELAY);
-                        break;
-                    }
-                }
-
-                if (!success) {
-                    throw new TargetSetupError("Failed to install pip module " + dep, mDescriptor);
-                }
-            }
-        }
-        if (!hasDependencies) {
-            CLog.d("No dependencies to install");
-        }
-    }
-
-    /**
-     * Installs a pip requirement file from Internet.
-     * @param req pip module requirement file object
-     * @return true if success. False otherwise
-     */
-    private boolean installPipRequirementFile(File req) {
-        CommandResult result = getRunUtil().runTimedCmd(10 * MINUTE_IN_MSECS, getPipPath(),
-                "install", "-r", mRequirementsFile.getAbsolutePath());
-        CLog.d(String.format("Result %s. stdout: %s, stderr: %s", result.getStatus(),
-                result.getStdout(), result.getStderr()));
-
-        return result.getStatus() == CommandStatus.SUCCESS;
-    }
-
-    /**
-     * Installs a pip module from local directory.
-     * @param name of the module
-     * @return true if the module is successfully installed; false otherwise.
-     */
-    private boolean installPipModuleLocally(String name) {
-        if (mLocalPypiPath == null) {
-            return false;
-        }
-        CLog.d("Attempting installation of %s from local directory", name);
-        CommandResult result = getRunUtil().runTimedCmd(5 * MINUTE_IN_MSECS, getPipPath(),
-                "install", name, "--no-index", "--find-links=" + mLocalPypiPath);
-        CLog.d(String.format("Result %s. stdout: %s, stderr: %s", result.getStatus(),
-                result.getStdout(), result.getStderr()));
-
-        return result.getStatus() == CommandStatus.SUCCESS;
-    }
-
-    /**
-     * Install a pip module from Internet
-     * @param name of the module
-     * @return true if success. False otherwise
-     */
-    private boolean installPipModule(String name) {
-        CLog.d("Attempting installation of %s from PyPI", name);
-        CommandResult result =
-                getRunUtil().runTimedCmd(5 * MINUTE_IN_MSECS, getPipPath(), "install", name);
-        CLog.d("Result %s. stdout: %s, stderr: %s", result.getStatus(), result.getStdout(),
-                result.getStderr());
-        if (result.getStatus() != CommandStatus.SUCCESS) {
-            CLog.e("Installing %s from PyPI failed.", name);
-            CLog.d("Attempting to upgrade %s", name);
-            result = getRunUtil().runTimedCmd(
-                    5 * MINUTE_IN_MSECS, getPipPath(), "install", "--upgrade", name);
-
-            CLog.d(String.format("Result %s. stdout: %s, stderr: %s", result.getStatus(),
-                    result.getStdout(), result.getStderr()));
-        }
-
-        return result.getStatus() == CommandStatus.SUCCESS;
-    }
-
-    /**
-     * This method returns absolute pip path in virtualenv.
-     *
-     * This method is needed because although PATH is set in IRunUtil, IRunUtil will still
-     * use pip from system path.
-     *
-     * @return absolute pip path in virtualenv. null if virtualenv not available.
-     */
-    public String getPipPath() {
-        if (mPipPath != null) {
-            return mPipPath;
-        }
-
-        String virtualenvPath = mVenvDir.getAbsolutePath();
-        if (virtualenvPath == null) {
-            return null;
-        }
-        mPipPath = new File(VtsPythonRunnerHelper.getPythonBinDir(virtualenvPath), "pip")
-                           .getAbsolutePath();
-        return mPipPath;
-    }
-
-    /**
-     * Get the major python version from option.
-     *
-     * Currently, only 2 and 3 are supported.
-     *
-     * @return major version number
-     * @throws TargetSetupError
-     */
-    protected int getConfiguredPythonVersionMajor() throws TargetSetupError {
-        if (mPythonVersion.startsWith("3.") || mPythonVersion.equals("3")) {
-            return 3;
-        } else if (mPythonVersion.startsWith("2.") || mPythonVersion.equals("2")) {
-            return 2;
-        } else {
-            throw new TargetSetupError("Unsupported python version " + mPythonVersion, mDescriptor);
-        }
-    }
-
-    /**
-     * Add PYTHONPATH and VIRTUAL_ENV_PATH to BuildInfo.
-     * @param buildInfo
-     * @throws TargetSetupError
-     */
-    private void addPathToBuild(IBuildInfo buildInfo, File virtualEnvDir) throws TargetSetupError {
-        String target = null;
-        switch (getConfiguredPythonVersionMajor()) {
-            case 2:
-                target = VtsPythonVirtualenvPreparer.VIRTUAL_ENV;
-                break;
-            case 3:
-                target = VtsPythonVirtualenvPreparer.VIRTUAL_ENV_V3;
-                break;
-        }
-
-        if (!buildInfo.getBuildAttributes().containsKey(target)) {
-            buildInfo.addBuildAttribute(target, virtualEnvDir.getAbsolutePath());
-        }
-    }
-
-    /**
-     * Completes the creation of virtualenv.
-     * @return true if the directory is successfully prepared as virtualenv; false otherwise
-     */
-    protected boolean createVirtualenv(File virtualEnvDir) {
-        CLog.d("Creating virtualenv at " + virtualEnvDir);
-
-        String[] cmd = new String[] {
-                "virtualenv", "-p", "python" + mPythonVersion, virtualEnvDir.getAbsolutePath()};
-
-        long waitRetryCreate = 5 * SECOND_IN_MSECS;
-
-        for (int try_count = 0; try_count < PIP_RETRY + 1; try_count++) {
-            if (try_count > 0) {
-                getRunUtil().sleep(waitRetryCreate);
-            }
-            CommandResult c = getRunUtil().runTimedCmd(mVirtualEnvInstallationWaitTime, cmd);
-
-            if (!CommandStatus.SUCCESS.equals(c.getStatus())) {
-                String message_lower = (c.getStdout() + c.getStderr()).toLowerCase();
-                if (message_lower.contains("errno 17") // File exists
-                        || message_lower.contains("errno 26")
-                        || message_lower.contains("text file busy")) {
-                    // Race condition, retry.
-                    CLog.e("detected the virtualenv path is being created by other process.");
-                } else {
-                    // Other error, abort.
-                    CLog.e("Exit code: %s, stdout: %s, stderr: %s", c.getStatus(), c.getStdout(),
-                            c.getStderr());
-                    break;
-                }
-            } else {
-                CLog.d("Successfully created virtualenv at " + virtualEnvDir);
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private File createVirtualEnvCache(IBuildInfo buildInfo) throws TargetSetupError {
-        File workingDir = null;
-        File virtualEnvDir = null;
-        if (mReuse) {
-            try {
-                workingDir = new CompatibilityBuildHelper(buildInfo).getDir();
-            } catch (FileNotFoundException e) {
-                workingDir = new File(System.getProperty("java.io.tmpdir"));
-            }
-            virtualEnvDir = new File(workingDir, "vts-virtualenv-" + mPythonVersion);
-            if (virtualEnvDir.exists()) {
-                // Use the cache
-                return virtualEnvDir;
-            }
-            // Create it first
-            virtualEnvDir.mkdirs();
-        } else {
-            try {
-                virtualEnvDir = FileUtil.createTempDir("vts-virtualenv-" + mPythonVersion + "-"
-                        + normalizeName(buildInfo.getTestTag()) + "_");
-            } catch (IOException e) {
-                throw new TargetSetupError(
-                        "Failed to create a directory for the virtual env.", e, mDescriptor);
-            }
-        }
-        return virtualEnvDir;
-    }
-
-    /**
-     * Checks whether a test plan-wise common virtualenv directory can be used.
-     * @param buildInfo
-     * @return true if a test plan-wise virtuanenv directory exists; false otherwise
-     * @throws TargetSetupError
-     */
-    protected File checkTestPlanLevelVirtualenv(IBuildInfo buildInfo) throws TargetSetupError {
-        String venvDir = null;
-        switch (getConfiguredPythonVersionMajor()) {
-            case 2:
-                venvDir =
-                        buildInfo.getBuildAttributes().get(VtsPythonVirtualenvPreparer.VIRTUAL_ENV);
-                break;
-            case 3:
-                venvDir = buildInfo.getBuildAttributes().get(
-                        VtsPythonVirtualenvPreparer.VIRTUAL_ENV_V3);
-                break;
-        }
-
-        if (venvDir != null && new File(venvDir).exists()) {
-            return new File(venvDir);
-        }
-        return null;
-    }
-
-    protected void addDepModule(String module) {
-        mDepModules.add(module);
-    }
-
-    protected void setRequirementsFile(File f) {
-        mRequirementsFile = f;
-    }
-
-    /**
-     * Get an instance of {@link IRunUtil}.
-     */
-    @VisibleForTesting
-    protected IRunUtil getRunUtil() {
-        if (mRunUtil == null) {
-            mRunUtil = new RunUtil();
-        }
-        return mRunUtil;
-    }
-
-    /**
-     * Locally checks whether a pip module is installed.
-     *
-     * This read the installed module list from command "pip list" and check whether the
-     * module in requirement string is installed and its version satisfied.
-     *
-     * Note: This method is only a help method for speed optimization purpose.
-     *       It does not check dependencies of the module.
-     *       It replace dots "." in module name with dash "-".
-     *       If the "pip list" command failed, it will return false and will not throw exception
-     *       It can also only accept one ">=" version requirement string.
-     *       If this method returns false, the requirement should still be checked using pip itself.
-     *
-     * @param requirement such as "numpy", "pip>=9"
-     * @return True if module is installed locally with correct version. False otherwise
-     */
-    private boolean isPipModuleInstalled(String requirement) {
-        if (mPipInstallList == null) {
-            mPipInstallList = getInstalledPipModules();
-            if (mPipInstallList == null) {
-                CLog.e("Failed to read local pip install list.");
-                return false;
-            }
-        }
-
-        String name;
-        String version = null;
-        if (requirement.contains(">=")) {
-            String[] tokens = requirement.split(">=");
-            if (tokens.length != 2) {
-                return false;
-            }
-            name = tokens[0];
-            version = tokens[1];
-        } else if (requirement.contains("=") || requirement.contains("<")
-                || requirement.contains(">")) {
-            return false;
-        } else {
-            name = requirement;
-        }
-
-        name = name.replaceAll("\\.", "-");
-
-        if (!mPipInstallList.containsKey(name)) {
-            return false;
-        }
-
-        // TODO: support other comparison and multiple condition if there's a use case.
-        if (version != null && !isVersionGreaterEqual(mPipInstallList.get(name), version)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Compares whether version string 1 is greater or equal to version string 2
-     * @param version1
-     * @param version2
-     * @return True if the value of version1 >= version2
-     */
-    private static boolean isVersionGreaterEqual(String version1, String version2) {
-        version1 = version1.replaceAll("[^0-9.]+", "");
-        version2 = version2.replaceAll("[^0-9.]+", "");
-
-        String[] tokens1 = version1.split("\\.");
-        String[] tokens2 = version2.split("\\.");
-
-        int length = Math.max(tokens1.length, tokens2.length);
-        for (int i = 0; i < length; i++) {
-            try {
-                int token1 = i < tokens1.length ? Integer.parseInt(tokens1[i]) : 0;
-                int token2 = i < tokens2.length ? Integer.parseInt(tokens2[i]) : 0;
-                if (token1 < token2) {
-                    return false;
-                }
-            } catch (NumberFormatException e) {
-                CLog.e("failed to compare pip module version: %s and %s", version1, version2);
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Gets map of installed pip packages and their versions.
-     * @return installed pip packages
-     */
-    private Map<String, String> getInstalledPipModules() {
-        CommandResult res = getRunUtil().runTimedCmd(30 * SECOND_IN_MSECS, getPipPath(), "list");
-        if (res.getStatus() != CommandStatus.SUCCESS) {
-            CLog.e(String.format("Failed to read pip installed list: "
-                            + "Result %s. stdout: %s, stderr: %s",
-                    res.getStatus(), res.getStdout(), res.getStderr()));
-            return null;
-        }
-        String raw = res.getStdout();
-        String[] lines = raw.split("\\r?\\n");
-
-        TreeMap<String, String> pipInstallList = new TreeMap<>();
-
-        for (String line : lines) {
-            line = line.trim();
-            if (line.length() == 0 || line.startsWith("Package ") || line.startsWith("-")) {
-                continue;
-            }
-            String[] tokens = line.split("\\s+");
-            if (tokens.length != 2) {
-                CLog.e("Error parsing pip installed package list. Line text: " + line);
-                continue;
-            }
-            pipInstallList.put(tokens[0], tokens[1]);
-        }
-
-        return pipInstallList;
-    }
-
-    /**
-     * Replacing characters in a string to make it a valid file name.
-     *
-     * The current method is to replace any non-word character with '_' except '.' and '-'.
-     *
-     * @param name the potential name of a file to normalize.
-     *                 Do not use path here as path delimitor will be replaced
-     * @return normalized file name
-     */
-    private String normalizeName(String name) {
-        return name.replaceAll("[^\\w.-]", "_");
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTestPlanResultReporter.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTestPlanResultReporter.java
deleted file mode 100644
index 6a03411..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTestPlanResultReporter.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.targetprep;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.IRunUtil;
-import com.android.tradefed.util.RunUtil;
-import com.android.tradefed.util.StreamUtil;
-import com.android.tradefed.util.VtsDashboardUtil;
-import com.android.tradefed.util.VtsVendorConfigFileUtil;
-import com.android.vts.proto.VtsComponentSpecificationMessage.ComponentSpecificationMessage;
-import com.android.vts.proto.VtsComponentSpecificationMessage.FunctionSpecificationMessage;
-import com.android.vts.proto.VtsReportMessage.ApiCoverageReportMessage;
-import com.android.vts.proto.VtsReportMessage.DashboardPostMessage;
-import com.android.vts.proto.VtsReportMessage.HalInterfaceMessage;
-import com.android.vts.proto.VtsReportMessage.TestPlanReportMessage;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.TextFormat;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.nio.file.Files;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-/**
- * Uploads the VTS test plan execution result to the web DB using a RESTful API and
- * an OAuth2 credential kept in a json file.
- */
-@OptionClass(alias = "vts-plan-result")
-public class VtsTestPlanResultReporter implements ITargetPreparer, ITargetCleaner {
-    private static final String PLUS_ME = "https://www.googleapis.com/auth/plus.me";
-    private static final String TEST_PLAN_EXECUTION_RESULT = "vts-test-plan-execution-result";
-    private static final String TEST_PLAN_REPORT_FILE = "TEST_PLAN_REPORT_FILE";
-    private static final String TEST_PLAN_REPORT_FILE_NAME = "status.json";
-    private static VtsVendorConfigFileUtil configReader = null;
-    private static VtsDashboardUtil dashboardUtil = null;
-    private static final int BASE_TIMEOUT_MSECS = 1000 * 60;
-    IRunUtil mRunUtil = new RunUtil();
-
-    @Option(name = "plan-name", description = "The plan name") private String mPlanName = null;
-
-    @Option(name = "file-path",
-            description = "The path of a VTS vendor config file (format: json).")
-    private String mVendorConfigFilePath = null;
-
-    @Option(name = "default-type",
-            description = "The default config file type, e.g., `prod` or `staging`.")
-    private String mDefaultType = VtsVendorConfigFileUtil.VENDOR_TEST_CONFIG_DEFAULT_TYPE;
-
-    private File mStatusDir;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo) {
-        try {
-            mStatusDir = FileUtil.createTempDir(TEST_PLAN_EXECUTION_RESULT);
-            if (mStatusDir != null) {
-                File statusFile = new File(mStatusDir, TEST_PLAN_REPORT_FILE_NAME);
-                buildInfo.setFile(TEST_PLAN_REPORT_FILE, statusFile, buildInfo.getBuildId());
-            }
-        } catch (IOException ex) {
-            CLog.e("Can't create a temp dir to store test execution results.");
-            return;
-        }
-
-        // Use IBuildInfo to pass the uesd vendor config information to the rest of workflow.
-        buildInfo.addBuildAttribute(
-                VtsVendorConfigFileUtil.KEY_VENDOR_TEST_CONFIG_DEFAULT_TYPE, mDefaultType);
-        if (mVendorConfigFilePath != null) {
-            buildInfo.addBuildAttribute(VtsVendorConfigFileUtil.KEY_VENDOR_TEST_CONFIG_FILE_PATH,
-                    mVendorConfigFilePath);
-        }
-        configReader = new VtsVendorConfigFileUtil();
-        configReader.LoadVendorConfig(buildInfo);
-        dashboardUtil = new VtsDashboardUtil(configReader);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e) {
-        File reportFile = buildInfo.getFile(TEST_PLAN_REPORT_FILE);
-        if (reportFile == null) {
-            CLog.e("Couldn't find %s to post results. Skipping tearDown.",
-                    TEST_PLAN_REPORT_FILE_NAME);
-            // Just in case clean up the directory.
-            FileUtil.recursiveDelete(mStatusDir);
-            return;
-        }
-        String repotFilePath = reportFile.getAbsolutePath();
-        DashboardPostMessage.Builder postMessage = DashboardPostMessage.newBuilder();
-        TestPlanReportMessage.Builder testPlanMessage = TestPlanReportMessage.newBuilder();
-        testPlanMessage.setTestPlanName(mPlanName);
-        boolean found = false;
-        try (BufferedReader br = new BufferedReader(new FileReader(repotFilePath))) {
-            String currentLine;
-            while ((currentLine = br.readLine()) != null) {
-                String[] lineWords = currentLine.split("\\s+");
-                if (lineWords.length != 2) {
-                    CLog.e(String.format("Invalid keys %s", currentLine));
-                    continue;
-                }
-                testPlanMessage.addTestModuleName(lineWords[0]);
-                testPlanMessage.addTestModuleStartTimestamp(Long.parseLong(lineWords[1]));
-                found = true;
-            }
-        } catch (IOException ex) {
-            CLog.d("Can't read the test plan result file %s", repotFilePath);
-            return;
-        }
-        // For profiling test plan, add the baseline API report.
-        if (mPlanName.endsWith("profiling")) {
-            addApiReportToTestPlanMessage(device, buildInfo, testPlanMessage);
-        }
-        CLog.d("Delete report dir %s", mStatusDir.getAbsolutePath());
-        FileUtil.recursiveDelete(mStatusDir);
-        postMessage.addTestPlanReport(testPlanMessage.build());
-        if (found) {
-            dashboardUtil.Upload(postMessage);
-        }
-    }
-
-    /**
-     * Method to parse all packaged .vts specs and get the list of all defined APIs
-     *
-     * @param device the target device.
-     * @param buildInfo the build info of the target device.
-     * @param testPlanMessage testPlanMessage builder for updating the report message.
-     */
-    private void addApiReportToTestPlanMessage(ITestDevice device, IBuildInfo buildInfo,
-            TestPlanReportMessage.Builder testPlanMessage) {
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(buildInfo);
-        Map<String, String> hal_release_map = new HashMap<String, String>();
-        File test_dir;
-        try {
-            test_dir = buildHelper.getTestsDir();
-        } catch (FileNotFoundException e) {
-            CLog.e("Failed to get test dir, error: " + e.getMessage());
-            return;
-        }
-        // Get the interface --> release_version mapping.
-        File hal_release_path = new File(test_dir, "DATA/etc/hidl_hals_for_release.json");
-        hal_release_map = creatHalRelaseMap(hal_release_path.getAbsolutePath());
-        if (hal_release_map == null) {
-            CLog.e("Failed to create hal releas map");
-            return;
-        }
-
-        List<File> specFiles = new ArrayList<File>();
-        try {
-            File specDir = new File(test_dir, "spec/hardware/interfaces");
-            Files.walk(specDir.toPath())
-                    .filter(p
-                            -> (p.toString().endsWith(".vts")
-                                    && !p.toString().endsWith("types.vts")))
-                    .forEach(p -> specFiles.add(p.toFile()));
-        } catch (IOException e) {
-            CLog.e("Failed to get spec files, error: " + e.getMessage());
-            return;
-        }
-
-        for (File specFile : specFiles) {
-            try {
-                InputStreamReader reader =
-                        new InputStreamReader(new FileInputStream(specFile), "ASCII");
-                ComponentSpecificationMessage.Builder spec_builder =
-                        ComponentSpecificationMessage.newBuilder();
-                TextFormat.merge(reader, spec_builder);
-                ComponentSpecificationMessage spec = spec_builder.build();
-                String full_api_name = spec.getPackage().toString("ASCII") + '@'
-                        + Integer.toString(spec.getComponentTypeVersionMajor()) + '.'
-                        + Integer.toString(spec.getComponentTypeVersionMinor())
-                        + "::" + spec.getComponentName().toString("ASCII");
-
-                HalInterfaceMessage.Builder halInterfaceMsg = HalInterfaceMessage.newBuilder();
-                halInterfaceMsg.setHalPackageName(spec.getPackage());
-                halInterfaceMsg.setHalVersionMajor(spec.getComponentTypeVersionMajor());
-                halInterfaceMsg.setHalVersionMinor(spec.getComponentTypeVersionMinor());
-                halInterfaceMsg.setHalInterfaceName(spec.getComponentName());
-                String release_level = hal_release_map.get(full_api_name);
-                if (release_level == null) {
-                    CLog.w("could not get the release level for %s", full_api_name);
-                    continue;
-                }
-                halInterfaceMsg.setHalReleaseLevel(ByteString.copyFrom(release_level.getBytes()));
-                ApiCoverageReportMessage.Builder apiReport = ApiCoverageReportMessage.newBuilder();
-                apiReport.setHalInterface(halInterfaceMsg.build());
-                for (FunctionSpecificationMessage api : spec.getInterface().getApiList()) {
-                    if (!api.getIsInherited())
-                        apiReport.addHalApi(api.getName());
-                }
-                testPlanMessage.addHalApiReport(apiReport.build());
-            } catch (Exception e) {
-                CLog.i("Failed to parse spec file: " + specFile.getAbsolutePath()
-                        + " error: " + e.getMessage());
-                continue;
-            }
-        }
-    }
-
-    /**
-     * Method to parse the hal release file and create a mapping between HAL interfaces and their
-     * corresponding release version.
-     *
-     * @param hal_release_file_path path to the hal release file.
-     * @return a map for HAL interfaces and their corresponding release version.
-     */
-    private Map<String, String> creatHalRelaseMap(String hal_release_file_path) {
-        Map<String, String> hal_release_map = new HashMap<String, String>();
-        try {
-            InputStream hal_release = new FileInputStream(hal_release_file_path);
-            if (hal_release == null) {
-                CLog.e("hal_release file %s does not exist", hal_release_file_path);
-                return hal_release_map;
-            }
-            String content = StreamUtil.getStringFromStream(hal_release);
-            JSONObject hal_release_json = new JSONObject(content);
-            Iterator<String> keys = hal_release_json.keys();
-            while (keys.hasNext()) {
-                String key = keys.next();
-                JSONArray value = (JSONArray) hal_release_json.get(key);
-                for (int i = 0; i < value.length(); i++) {
-                    String type = (String) value.get(i);
-                    hal_release_map.put(type, key);
-                }
-            }
-        } catch (IOException | JSONException e) {
-            CLog.e("Failed to parse hal release file, error: " + e.getMessage());
-            return null;
-        }
-        return hal_release_map;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTraceCollectPreparer.java b/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTraceCollectPreparer.java
deleted file mode 100644
index eceae7f..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsTraceCollectPreparer.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.targetprep.TargetSetupError;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-
-/**
- * Preparer class for collect HAL traces during the test run.
- *
- * Currently used for collecting HAL traces for CTS tests. In test setup, pushes
- * the profiler libs to device, sets up the permissions, and calls
- * vts_profiling_configure to enable profiling for HAL services. In test
- * tear down, pulls the traces to the host, resets permissions and cleans up the
- * trace files and profiler libs on the device.
- */
-@OptionClass(alias = "vts-trace-collect-preparer")
-public class VtsTraceCollectPreparer implements ITargetPreparer, ITargetCleaner {
-    static final String SELINUX_DISABLED = "Disabled"; // selinux disabled
-    static final String SELINUX_PERMISSIVE = "Permissive"; // selinux permissive mode
-
-    // Relative path to vts 32 bit lib directory.
-    static final String VTS_LIB_DIR_32 = "DATA/lib/";
-    // Relative path to vts 64 bit lib directory.
-    static final String VTS_LIB_DIR_64 = "DATA/lib64/";
-    // Relative path to vts binary directory.
-    static final String VTS_BINARY_DIR = "DATA/bin/";
-    // Path of 32 bit test libs on target device.
-    static final String VTS_TMP_LIB_DIR_32 = "/data/local/tmp/32/";
-    // Path of 64 bit test libs on target device.
-    static final String VTS_TMP_LIB_DIR_64 = "/data/local/tmp/64/";
-    // Path of vts test directory on target device.
-    static final String VTS_TMP_DIR = "/data/local/tmp/";
-    // Default path to store trace files locally.
-    static final String LOCAL_TRACE_DIR = "vts-profiling";
-
-    static final String VTS_PROFILER_SUFFIX = "vts.profiler.so";
-    static final String VTS_LIB_PREFIX = "libvts";
-    static final String PROFILING_CONFIGURE_BINARY = "vts_profiling_configure";
-    static final String TRACE_PATH = "trace_path";
-
-    private String mEnforcingState = null; // start state for selinux enforcement
-
-    @Option(name = "local-trace-dir", description = "Local directory to store trace.")
-    private String mLocalTraceDir = LOCAL_TRACE_DIR;
-
-    /** {@inheritDoc} */
-    @Override
-    public void setUp(ITestDevice device, IBuildInfo buildInfo)
-            throws DeviceNotAvailableException, TargetSetupError {
-        CompatibilityBuildHelper buildHelper = createBuildHelper(buildInfo);
-        try {
-            // adb root.
-            device.enableAdbRoot();
-            // Push 32 bit profiler libs.
-            pushProfilerLib(device, new File(buildHelper.getTestsDir(), VTS_LIB_DIR_32),
-                    VTS_TMP_LIB_DIR_32);
-            // Push 64 bit profiler libs.
-            pushProfilerLib(device, new File(buildHelper.getTestsDir(), VTS_LIB_DIR_64),
-                    VTS_TMP_LIB_DIR_64);
-            // Push vts_profiling_configure
-            device.pushFile(new File(buildHelper.getTestsDir(),
-                                    VTS_BINARY_DIR + PROFILING_CONFIGURE_BINARY),
-                    VTS_TMP_DIR + PROFILING_CONFIGURE_BINARY);
-        } catch (IOException | NoSuchElementException e) {
-            // Cleanup profiler libs.
-            removeProfilerLib(device);
-            throw new TargetSetupError("Could not push profiler.");
-        }
-        // Create directory to store the trace files.
-        try {
-            File resultDir = buildHelper.getResultDir();
-            File traceDir = new File(resultDir, mLocalTraceDir);
-            buildInfo.addBuildAttribute(TRACE_PATH, traceDir.getAbsolutePath());
-        } catch (FileNotFoundException e) {
-            CLog.e("Failed to get traceDir: " + e.getMessage());
-            // Cleanup profiler libs.
-            removeProfilerLib(device);
-            throw new TargetSetupError("Failed to get traceDir.");
-        }
-        // Set selinux permissive mode.
-        mEnforcingState = device.executeShellCommand("getenforce");
-        if (mEnforcingState == null
-                || (!mEnforcingState.equals(SELINUX_DISABLED)
-                           && !mEnforcingState.equals(SELINUX_PERMISSIVE))) {
-            device.executeShellCommand("setenforce " + SELINUX_PERMISSIVE);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
-            throws DeviceNotAvailableException {
-        // Reset selinux permission mode.
-        if (mEnforcingState != null && !mEnforcingState.equals(SELINUX_DISABLED)) {
-            device.executeShellCommand("setenforce " + mEnforcingState);
-        }
-        // Cleanup profiler libs.
-        removeProfilerLib(device);
-    }
-
-    /**
-     * Create and return a {@link CompatibilityBuildHelper} to use during the preparer.
-     */
-    @VisibleForTesting
-    CompatibilityBuildHelper createBuildHelper(IBuildInfo buildInfo) {
-        return new CompatibilityBuildHelper(buildInfo);
-    }
-
-    /**
-     * Push all the profiler libraries (with pattern *.vts-profiler.so) and VTS
-     * profiling related libraries (with pattern libvts*.so) to device.
-     *
-     * @param device device object
-     * @param profilerLibDir directory to lookup for profiler libraries.
-     * @param destDirName target directory on device to push to.
-     * @throws DeviceNotAvailableException
-     */
-    private void pushProfilerLib(ITestDevice device, File profilerLibDir, String destDirName)
-            throws DeviceNotAvailableException {
-        File[] files = profilerLibDir.listFiles();
-        if (files == null) {
-            CLog.d("No files found in %s", profilerLibDir.getAbsolutePath());
-            return;
-        }
-        for (File f : files) {
-            String fileName = f.getName();
-            if (f.isFile()
-                    && (fileName.endsWith(VTS_PROFILER_SUFFIX)
-                               || fileName.startsWith(VTS_LIB_PREFIX))) {
-                CLog.d("Pushing %s", fileName);
-                device.pushFile(f, destDirName + fileName);
-            }
-        }
-    }
-
-    /**
-     * Remove all profiler and VTS profiling libraries from device.
-     *
-     * @param device device object
-     * @throws DeviceNotAvailableException
-     */
-    private void removeProfilerLib(ITestDevice device) throws DeviceNotAvailableException {
-        device.executeShellCommand(String.format("rm -rf %s/*vts.profiler.so", VTS_TMP_LIB_DIR_32));
-        device.executeShellCommand(String.format("rm -rf %s/*vts.profiler.so", VTS_TMP_LIB_DIR_64));
-        device.executeShellCommand(String.format("rm -rf %s/libvts_*.so", VTS_TMP_LIB_DIR_32));
-        device.executeShellCommand(String.format("rm -rf %s/libvts_*.so", VTS_TMP_LIB_DIR_64));
-        device.executeShellCommand(String.format("rm %s/vts_profiling_configure", VTS_TMP_DIR));
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTest.java b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTest.java
deleted file mode 100644
index b69ed85..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTest.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.ddmlib.IShellOutputReceiver;
-import com.android.ddmlib.Log;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * A Test that runs a system fuzz test package (part of Vendor Test Suite, VTS) on given device.
- */
-@OptionClass(alias = "vtsfuzztest")
-public class VtsFuzzTest implements IDeviceTest, IRemoteTest {
-
-    private static final String LOG_TAG = "VtsFuzzTest";
-    static final String DEFAULT_FUZZER_BINARY_PATH = "/system/bin/fuzzer";
-
-    static final float DEFAULT_TARGET_VERSION = -1;
-    static final int DEFAULT_TARGET_VERSION_MAJOR = -1;
-    static final int DEFAULT_TARGET_VERSION_MINOR = -1;
-    static final int DEFAULT_EPOCH_COUNT = 10;
-
-    // fuzzer flags
-    private static final String VTS_FUZZ_TEST_FLAG_CLASS = "--class";
-    private static final String VTS_FUZZ_TEST_FLAG_TYPE = "--type";
-    private static final String VTS_FUZZ_TEST_FLAG_VERSION = "--version";
-    private static final String VTS_FUZZ_TEST_FLAG_EPOCH_COUNT = "--epoch_count";
-
-    private ITestDevice mDevice = null;
-
-    @Option(name = "fuzzer-binary-path",
-            description="The path on the device where fuzzer is located.")
-    private String mFuzzerBinaryPath = DEFAULT_FUZZER_BINARY_PATH;
-
-    @Option(name = "target-component-path",
-            description="The path of a target component (e.g., .so file path).")
-    private String mTargetComponentPath = null;
-
-    @Option(name = "target-class",
-            description="The target component class.")
-    private String mTargetClass = null;
-
-    @Option(name = "target-type",
-            description="The target component type.")
-    private String mTargetType = null;
-
-    @Deprecated
-    @Option(name = "target-version", description = "The target component version.")
-    private float mTargetVersion = DEFAULT_TARGET_VERSION;
-
-    @Option(name = "target-version-major", description = "The target major component version.")
-    private int mTargetVersionMajor = DEFAULT_TARGET_VERSION_MAJOR;
-
-    @Option(name = "target-version-minor", description = "The target minor component version.")
-    private int mTargetVersionMinor = DEFAULT_TARGET_VERSION_MINOR;
-
-    @Option(name = "epoch-count",
-            description="The epoch count.")
-    private int mEpochCount = DEFAULT_EPOCH_COUNT;
-
-    @Option(name = "test-timeout", description =
-            "The max time in ms for a VTS test to run. " +
-            "Test run will be aborted if any test takes longer.")
-    private int mMaxTestTimeMs = 15 * 60 * 1000;  // 15 minutes
-
-    @Option(name = "runtime-hint",
-            isTimeVal=true,
-            description="The hint about the test's runtime.")
-    private long mRuntimeHint = 5 * 60 * 1000;  // 5 minutes
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setDevice(ITestDevice device) {
-        mDevice = device;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ITestDevice getDevice() {
-        return mDevice;
-    }
-
-    /**
-     * Set the target component path variable.
-     *
-     * @param path The path to set.
-     */
-    public void setTargetComponentPath(String path) {
-        mTargetComponentPath = path;
-    }
-
-    /**
-     * Get the target component path variable.
-     *
-     * @return The target component path.
-     */
-    public String getTargetComponentPath() {
-        return mTargetComponentPath;
-    }
-
-    /**
-     * Set the target class variable.
-     *
-     * @param class_name The class name to set.
-     */
-    public void setTargetClass(String class_name) {
-        mTargetClass = class_name;
-    }
-
-    /**
-     * Get the target class name variable.
-     *
-     * @return The target class name.
-     */
-    public String getTargetClass() {
-        return mTargetClass;
-    }
-
-    /**
-     * Set the target type variable.
-     *
-     * @param type_name The type name to set.
-     */
-    public void setTargetType(String type_name) {
-        mTargetType = type_name;
-    }
-
-    /**
-     * Get the target type name variable.
-     *
-     * @return The target type name.
-     */
-    public String getTargetType() {
-        return mTargetType;
-    }
-
-    /**
-     * Set the target version variable.
-     *
-     * @param version The version to set.
-     */
-    @Deprecated
-    public void setTargetVersion(float version) {
-        mTargetVersion = version;
-    }
-
-    /**
-     * Get the target version variable.
-     *
-     * @return The version.
-     */
-    @Deprecated
-    public float getTargetVersion() {
-        return mTargetVersion;
-    }
-
-    /**
-     * Set the target major version variable.
-     *
-     * @param version_major The major version to set.
-     */
-    public void setTargetVersionMajor(int version_major) {
-        mTargetVersionMajor = version_major;
-    }
-
-    /**
-     * Get the target major version variable.
-     *
-     * @return The major version.
-     */
-    public int getTargetVersionMajor() {
-        return mTargetVersionMajor;
-    }
-
-    /**
-     * Set the target minor version variable.
-     *
-     * @param version_minor The minor version to set.
-     */
-    public void setTargetVersionMinor(int version_minor) {
-        mTargetVersionMinor = version_minor;
-    }
-
-    /**
-     * Get the target minor version variable.
-     *
-     * @return The minor version.
-     */
-    public int getTargetVersionMinor() {
-        return mTargetVersionMinor;
-    }
-
-    /**
-     * Set the epoch count variable.
-     *
-     * @param count The epoch count to set.
-     */
-    public void setEpochCount(int count) {
-        mEpochCount = count;
-    }
-
-    /**
-     * Get the epoch count variable.
-     *
-     * @return The epoch count.
-     */
-    public float getEpochCount() {
-        return mEpochCount;
-    }
-
-    /**
-     * Helper to get all the VtsFuzzTest flags to pass into the adb shell command.
-     *
-     * @return the {@link String} of all the VtsFuzzTest flags that should be passed to the VtsFuzzTest
-     * @throws IllegalArgumentException
-     */
-    private String getAllVtsFuzzTestFlags() {
-        String flags;
-
-        if (mTargetClass == null) {
-            throw new IllegalArgumentException(VTS_FUZZ_TEST_FLAG_CLASS + " must be set.");
-        }
-        flags = String.format("%s=%s", VTS_FUZZ_TEST_FLAG_CLASS, mTargetClass);
-
-        if (mTargetType == null) {
-            throw new IllegalArgumentException(VTS_FUZZ_TEST_FLAG_TYPE + " must be set.");
-        }
-        flags = String.format("%s %s=%s", flags, VTS_FUZZ_TEST_FLAG_TYPE, mTargetType);
-
-        if (mTargetVersionMajor == DEFAULT_TARGET_VERSION_MAJOR
-                || mTargetVersionMinor == DEFAULT_TARGET_VERSION_MINOR) {
-            throw new IllegalArgumentException(VTS_FUZZ_TEST_FLAG_VERSION + " must be set.");
-        }
-        flags = String.format("%s %s=%d.%d", flags, VTS_FUZZ_TEST_FLAG_VERSION, mTargetVersionMajor,
-                mTargetVersionMinor);
-
-        flags = String.format("%s %s=%s", flags, VTS_FUZZ_TEST_FLAG_EPOCH_COUNT, mEpochCount);
-
-        flags = String.format("%s %s", flags, mTargetComponentPath);
-        return flags;
-    }
-
-    /**
-     * Run the given fuzzer binary using the given flags
-     *
-     * @param testDevice the {@link ITestDevice}
-     * @param resultParser the test run output parser
-     * @param fullPath absolute file system path to gtest binary on device
-     * @param flags fuzzer execution flags
-     * @throws DeviceNotAvailableException
-     */
-    private void runTest(final ITestDevice testDevice, final IShellOutputReceiver resultParser,
-            final String fullPath, final String flags) throws DeviceNotAvailableException {
-        // TODO: add individual test timeout support, and rerun support
-        try {
-            String cmd = getVtsFuzzTestCmdLine(fullPath, flags);
-            testDevice.executeShellCommand(cmd, resultParser,
-                    mMaxTestTimeMs,
-                    TimeUnit.MILLISECONDS,
-                    0 /* retryAttempts */);
-        } catch (DeviceNotAvailableException e) {
-            // TODO: consider moving the flush of parser data on exceptions to TestDevice or
-            // AdbHelper
-            resultParser.flush();
-            throw e;
-        } catch (RuntimeException e) {
-            resultParser.flush();
-            throw e;
-        }
-    }
-
-    /**
-     * Helper method to build the fuzzer command to run.
-     *
-     * @param fullPath absolute file system path to fuzzer binary on device
-     * @param flags fuzzer execution flags
-     * @return the shell command line to run for the fuzzer
-     */
-    protected String getVtsFuzzTestCmdLine(String fullPath, String flags) {
-        StringBuilder cmdLine = new StringBuilder();
-        cmdLine.append(String.format("%s %s", fullPath, flags));
-        return cmdLine.toString();
-    }
-
-    /**
-     * Factory method for creating a {@link IShellOutputReceiver} that parses test output and
-     * forwards results to the result listener.
-     * <p/>
-     * Exposed so unit tests can mock
-     *
-     * @param listener
-     * @param runName
-     * @return a {@link IShellOutputReceiver}
-     */
-    IShellOutputReceiver createResultParser(String runName, ITestLifeCycleReceiver listener) {
-        VtsFuzzTestResultParser resultParser = new VtsFuzzTestResultParser(runName, listener);
-        return resultParser;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
-        if (mDevice == null) {
-            throw new IllegalArgumentException("Device has not been set");
-        }
-
-        if (!mDevice.doesFileExist(mFuzzerBinaryPath)) {
-            Log.w(LOG_TAG, String.format("Could not find fuzzer binary file %s in %s!",
-                    mFuzzerBinaryPath, mDevice.getSerialNumber()));
-            return;
-        }
-
-        IShellOutputReceiver resultParser = createResultParser(mTargetComponentPath, listener);
-        String flags = getAllVtsFuzzTestFlags();
-        Log.i(LOG_TAG, String.format("Running fuzzer '%s %s' on %s",
-                mFuzzerBinaryPath, flags, mDevice.getSerialNumber()));
-        runTest(mDevice, resultParser, mFuzzerBinaryPath, flags);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTestResultParser.java b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTestResultParser.java
deleted file mode 100644
index edb0b6c..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsFuzzTestResultParser.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.ddmlib.IShellOutputReceiver;
-import com.android.ddmlib.Log;
-import com.android.ddmlib.MultiLineReceiver;
-import com.android.ddmlib.testrunner.ITestRunListener;
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-import com.android.tradefed.result.TestDescription;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * Parses the 'raw output mode' results of VTS fuzz tests that run from shell, and informs
- * a ITestRunListener of the results.
- * <p>Sample format of output expected:
- *
- * <pre>
- * ...
- * [  PASSED  ]
- * </pre>
- *
- * If a fuzz test run finds a problem, the process crashes or hangs and thus [  PASSED  ] is not
- * printed. All other lines are ignored.
- */
-public class VtsFuzzTestResultParser extends MultiLineReceiver {
-    private static final String LOG_TAG = "GTestResultParser";
-
-    // Variables to keep track of state
-    private int mNumTestsRun = 0;
-    private int mNumTestsExpected = 1;
-    private int mTotalNumberOfTestFailed = 0;
-    private final String mTestRunName;
-    private final Collection<ITestLifeCycleReceiver> mTestListeners;
-    private TestDescription mTestId;
-
-    /** True if start of test has already been reported to listener. */
-    private boolean mTestRunStartReported = false;
-
-    /** Stack data structure to keep the logs. */
-    private StringBuilder mStackTrace = null;
-
-    /** True if current test run has been canceled by user. */
-    private boolean mIsCancelled = false;
-
-    /** Prefixes used to demarcate and identify output. */
-    private static class Prefixes {
-        @SuppressWarnings("unused")
-        private static final String PASSED_MARKER = "[  PASSED  ]";
-        private static final String FAILED_MARKER = "[  FAILED  ]";
-        private static final String TIMEOUT_MARKER = "[ TIMEOUT  ]";
-    }
-
-    /**
-     * Creates the GTestResultParser.
-     *
-     * @param testRunName the test run name to provide to
-     *            {@link ITestRunListener#testRunStarted(String, int)}
-     * @param listeners informed of test results as the tests are executing
-     */
-    public VtsFuzzTestResultParser(
-            String testRunName, Collection<ITestLifeCycleReceiver> listeners) {
-        mTestRunName = testRunName;
-        mTestListeners = new ArrayList<>(listeners);
-        mStackTrace = new StringBuilder();
-    }
-
-    /**
-     * Creates the GTestResultParser for a single listener.
-     *
-     * @param testRunName the test run name to provide to
-     *            {@link ITestRunListener#testRunStarted(String, int)}
-     * @param listener informed of test results as the tests are executing
-     */
-    public VtsFuzzTestResultParser(String testRunName, ITestLifeCycleReceiver listener) {
-        mTestRunName = testRunName;
-        mTestListeners = new ArrayList<>(1);
-        mTestListeners.add(listener);
-        mStackTrace = new StringBuilder();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void processNewLines(String[] lines) {
-        if (!mTestRunStartReported) {
-            // current test results are cleared out after every complete test run,
-            // if it's not null, assume the last test caused this and report as a test failure
-            mTestId = new TestDescription("fuzzer", mTestRunName);
-            for (ITestLifeCycleReceiver listener : mTestListeners) {
-                listener.testRunStarted(mTestRunName, mNumTestsExpected);
-            }
-            mTestRunStartReported = true;
-        }
-
-        for (String line : lines) {
-            if (line.contains(Prefixes.PASSED_MARKER)) {
-                doTestEnded(true);
-            } else if (line.contains(Prefixes.FAILED_MARKER)
-                    || line.contains(Prefixes.TIMEOUT_MARKER)) {
-                doTestEnded(false);
-            } else {
-                mStackTrace.append(line + "\r\n");
-            }
-            Log.v(LOG_TAG, line);
-        }
-    }
-
-    /**
-     * Helper method to do the work necessary when a test has ended.
-     *
-     * @param testPassed Indicates whether the test passed or failed (set to true if passed, false
-     *          if failed)
-     */
-    private void doTestEnded(boolean testPassed) {
-        if (!testPassed) {  // test failed
-            for (ITestLifeCycleReceiver listener : mTestListeners) {
-                listener.testFailed(mTestId, mStackTrace.toString());
-            }
-            ++mTotalNumberOfTestFailed;
-        }
-
-        // For all cases (pass or fail), we ultimately need to report test has ended
-        for (ITestLifeCycleReceiver listener : mTestListeners) {
-            Map <String, String> emptyMap = Collections.emptyMap();
-            listener.testEnded(mTestId, emptyMap);
-        }
-
-        ++mNumTestsRun;
-    }
-
-    /**
-     * Process an instrumentation run failure
-     *
-     * @param errorMsg The message to output about the nature of the error
-     */
-    private void handleTestRunFailed(String errorMsg) {
-        errorMsg = (errorMsg == null ? "Unknown error" : errorMsg);
-        Log.i(LOG_TAG, String.format("Test run failed: %s", errorMsg));
-
-        // If there was any stack trace during the test run, append it to the "test failed"
-        // error message so we have an idea of what caused the crash/failure.
-        Map<String, String> emptyMap = Collections.emptyMap();
-        for (ITestLifeCycleReceiver listener : mTestListeners) {
-            listener.testFailed(mTestId, mStackTrace.toString());
-            listener.testEnded(mTestId, emptyMap);
-        }
-
-        // Report the test run failed
-        for (ITestLifeCycleReceiver listener : mTestListeners) {
-            listener.testRunFailed(errorMsg);
-        }
-    }
-
-    /**
-     * Called by parent when adb session is complete.
-     */
-    @Override
-    public void done() {
-        super.done();
-        if (mNumTestsRun < mNumTestsExpected) {
-            handleTestRunFailed(String.format("Test run failed. Expected %d tests, received %d",
-                    mNumTestsExpected, mNumTestsRun));
-        }
-    }
-
-    /**
-     * Returns true if test run canceled.
-     *
-     * @see IShellOutputReceiver#isCancelled()
-     */
-    @Override
-    public boolean isCancelled() {
-        return mIsCancelled;
-    }
-
-    /**
-     * Requests cancellation of test run.
-     */
-    public void cancel() {
-        mIsCancelled = true;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java
deleted file mode 100644
index f7a579c..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTest.java
+++ /dev/null
@@ -1,1524 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.testtype;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.result.FileInputStreamSource;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.result.LogDataType;
-import com.android.tradefed.result.TestDescription;
-import com.android.tradefed.targetprep.VtsCoveragePreparer;
-import com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.JsonUtil;
-import com.android.tradefed.util.OutputUtil;
-import com.android.tradefed.util.StreamUtil;
-import com.android.tradefed.util.VtsDashboardUtil;
-import com.android.tradefed.util.VtsPythonRunnerHelper;
-import com.android.tradefed.util.VtsVendorConfigFileUtil;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * A Test that runs a vts multi device test package (part of Vendor Test Suite, VTS10) on given
- * device.<p>
- * TODO: Complete unit tests
- */
-@OptionClass(alias = "vtsmultidevicetest")
-public class VtsMultiDeviceTest
-        implements IDeviceTest, IRemoteTest, ITestFilterReceiver, IRuntimeHintProvider,
-                   ITestCollector, IBuildReceiver, IAbiReceiver, IInvocationContextReceiver {
-    static final String ACTS_TEST_MODULE = "ACTS_TEST_MODULE";
-    static final String ADAPTER_ACTS_PATH = "vts/runners/adapters/acts/acts_adapter";
-    static final String ANDROIDDEVICE = "AndroidDevice";
-    static final String BUILD = "build";
-    static final String BUILD_ID = "build_id";
-    static final String BUILD_TARGET = "build_target";
-    static final String COVERAGE_PROPERTY = "ro.vts.coverage";
-    static final String DATA_FILE_PATH = "data_file_path";
-    static final String LOG_PATH = "log_path";
-    static final String LOG_SEVERITY = "log_severity";
-    static final String NAME = "name";
-    static final String SERIAL = "serial";
-    static final String TESTMODULE = "TestModule";
-    static final String TEST_BED = "test_bed";
-    static final String TEST_PLAN_REPORT_FILE = "TEST_PLAN_REPORT_FILE";
-    static final String TEST_SUITE = "test_suite";
-    static final String TEST_TIMEOUT = "test_timeout";
-    static final String ABI_NAME = "abi_name";
-    static final String ABI_BITNESS = "abi_bitness";
-    static final String SKIP_ON_32BIT_ABI = "skip_on_32bit_abi";
-    static final String SKIP_ON_64BIT_ABI = "skip_on_64bit_abi";
-    static final String SHELL_DEFAULT_NOHUP = "shell_default_nohup";
-    static final String SKIP_IF_THERMAL_THROTTLING = "skip_if_thermal_throttling";
-    static final String DISABLE_CPU_FREQUENCY_SCALING = "disable_cpu_frequency_scaling";
-    static final String DISABLE_FRAMEWORK = "DISABLE_FRAMEWORK";
-    static final String STOP_NATIVE_SERVERS = "STOP_NATIVE_SERVERS";
-    static final String RUN_32BIT_ON_64BIT_ABI = "run_32bit_on_64bit_abi";
-    static final String CONFIG_FILE_EXTENSION = ".config";
-    static final String INCLUDE_FILTER = "include_filter";
-    static final String EXCLUDE_FILTER = "exclude_filter";
-    static final String EXCLUDE_OVER_INCLUDE = "exclude_over_include";
-    static final String BINARY_TEST_SOURCE = "binary_test_source";
-    static final String BINARY_TEST_WORKING_DIRECTORY = "binary_test_working_directory";
-    static final String BINARY_TEST_ENVP = "binary_test_envp";
-    static final String BINARY_TEST_ARGS = "binary_test_args";
-    static final String BINARY_TEST_LD_LIBRARY_PATH = "binary_test_ld_library_path";
-    static final String BINARY_TEST_PROFILING_LIBRARY_PATH = "binary_test_profiling_library_path";
-    @Deprecated static final String BINARY_TEST_DISABLE_FRAMEWORK = "binary_test_disable_framework";
-    @Deprecated
-    static final String BINARY_TEST_STOP_NATIVE_SERVERS = "binary_test_stop_native_servers";
-    static final String BINARY_TEST_TYPE_GTEST = "gtest";
-    static final String BINARY_TEST_TYPE_LLVMFUZZER = "llvmfuzzer";
-    static final String BINARY_TEST_TYPE_HAL_HIDL_GTEST = "hal_hidl_gtest";
-    static final String BINARY_TEST_TYPE_HAL_HIDL_REPLAY_TEST = "hal_hidl_replay_test";
-    static final String BINARY_TEST_TYPE_HOST_BINARY_TEST = "host_binary_test";
-    static final String BUG_REPORT_ON_FAILURE = "BUG_REPORT_ON_FAILURE";
-    static final String COLLECT_TESTS_ONLY = "collect_tests_only";
-    static final String CONFIG_STR = "CONFIG_STR";
-    static final String CONFIG_INT = "CONFIG_INT";
-    static final String CONFIG_BOOL = "CONFIG_BOOL";
-    static final String LOGCAT_ON_FAILURE = "LOGCAT_ON_FAILURE";
-    static final String ENABLE_COVERAGE = "enable_coverage";
-    static final String EXCLUDE_COVERAGE_PATH = "exclude_coverage_path";
-    static final String ENABLE_LOG_UPLOADING = "enable_log_uploading";
-    static final String ENABLE_PROFILING = "enable_profiling";
-    static final String PROFILING_ARG_VALUE = "profiling_arg_value";
-    static final String ENABLE_SANCOV = "enable_sancov";
-    static final String GTEST_BATCH_MODE = "gtest_batch_mode";
-    static final String SAVE_TRACE_FIEL_REMOTE = "save_trace_file_remote";
-    static final String OUTPUT_COVERAGE_REPORT = "output_coverage_report";
-    static final String COVERAGE_REPORT_PATH = "coverage_report_path";
-    static final String GLOBAL_COVERAGE = "global_coverage";
-    static final String LTP_NUMBER_OF_THREADS = "ltp_number_of_threads";
-    static final String MAX_RETRY_COUNT = "max_retry_count";
-    static final String MOBLY_TEST_MODULE = "MOBLY_TEST_MODULE";
-    static final String NATIVE_SERVER_PROCESS_NAME = "native_server_process_name";
-    static final String PASSTHROUGH_MODE = "passthrough_mode";
-    static final String PRECONDITION_HWBINDER_SERVICE = "precondition_hwbinder_service";
-    static final String PRECONDITION_FEATURE = "precondition_feature";
-    static final String PRECONDITION_FILE_PATH_PREFIX = "precondition_file_path_prefix";
-    static final String PRECONDITION_FIRST_API_LEVEL = "precondition_first_api_level";
-    static final String PRECONDITION_LSHAL = "precondition_lshal";
-    static final String PRECONDITION_SYSPROP = "precondition_sysprop";
-    static final String PRECONDITION_VINTF = "precondition_vintf";
-    static final String ENABLE_SYSTRACE = "enable_systrace";
-    static final String HAL_HIDL_REPLAY_TEST_TRACE_PATHS = "hal_hidl_replay_test_trace_paths";
-    static final String HAL_HIDL_PACKAGE_NAME = "hal_hidl_package_name";
-    static final String REPORT_MESSAGE_FILE_NAME = "report_proto.msg";
-    static final String RUN_AS_VTS_SELF_TEST = "run_as_vts_self_test";
-    static final String RUN_AS_COMPLIANCE_TEST = "run_as_compliance_test";
-    static final String SYSTRACE_PROCESS_NAME = "systrace_process_name";
-    static final String TEMPLATE_BINARY_TEST_PATH = "vts/testcases/template/binary_test/binary_test";
-    static final String TEMPLATE_GTEST_BINARY_TEST_PATH = "vts/testcases/template/gtest_binary_test/gtest_binary_test";
-    static final String TEMPLATE_LLVMFUZZER_TEST_PATH = "vts/testcases/template/llvmfuzzer_test/llvmfuzzer_test";
-    static final String TEMPLATE_MOBLY_TEST_PATH = "vts/testcases/template/mobly/mobly_test";
-    static final String TEMPLATE_HAL_HIDL_GTEST_PATH = "vts/testcases/template/hal_hidl_gtest/hal_hidl_gtest";
-    static final String TEMPLATE_HAL_HIDL_REPLAY_TEST_PATH = "vts/testcases/template/hal_hidl_replay_test/hal_hidl_replay_test";
-    static final String TEMPLATE_HOST_BINARY_TEST_PATH = "vts/testcases/template/host_binary_test/host_binary_test";
-    static final String TEST_RUN_SUMMARY_FILE_NAME = "test_run_summary.json";
-    static final float DEFAULT_TARGET_VERSION = -1;
-    static final String DEFAULT_TESTCASE_CONFIG_PATH =
-            "vts/tools/vts-tradefed/res/default/DefaultTestCase.runner_conf";
-
-    private ITestDevice mDevice = null;
-    private IAbi mAbi = null;
-
-    @Option(name = "test-timeout",
-            description = "The amount of time (in milliseconds) for a test invocation. "
-                    + "If the test cannot finish before timeout, it is interrupted. As some "
-                    + "classes generate test cases during setup, they can use the given timeout "
-                    + "value for each generated test set.",
-            isTimeVal = true)
-    private long mTestTimeout = 1000 * 60 * 3;
-
-    @Option(name = "max-test-timeout",
-            description = "The maximum amount of time (in milliseconds) for a test invocation. "
-                    + "This timeout value doesn't change with number of generated test sets.",
-            isTimeVal = true)
-    private long mMaxTestTimeout = 1000 * 60 * 60 * 3;
-
-    @Option(name = "test-module-name",
-        description = "The name for a test module.")
-    private String mTestModuleName = null;
-
-    @Option(name = "test-case-path",
-            description = "The path for test case.")
-    private String mTestCasePath = null;
-
-    @Option(name = "test-case-path-type",
-            description = "The type of test case path ('module' by default or 'file').")
-    private String mTestCasePathType = null;
-
-    @Option(name = "test-config-path",
-            description = "The path for test case config file.")
-    private String mTestConfigPath = null;
-
-    @Option(name = "precondition-hwbinder-service",
-            description = "The name of a HW binder service needed to run the test.")
-    private String mPreconditionHwBinderServiceName = null;
-
-    @Option(name = "precondition-feature",
-        description = "The name of a `pm`-listable feature needed to run the test.")
-    private String mPreconditionFeature = null;
-
-    @Option(name = "precondition-file-path-prefix",
-            description = "The path prefix of a target-side file needed to run the test."
-                    + "Format of tags:"
-                    + "    <source>: source without tag."
-                    + "    <tag>::<source>: <tag> specifies bitness of testcase: _32bit or _64bit"
-                    + "    Note: multiple sources are ANDed"
-                    + "Format of each source string:"
-                    + "    <source>: absolute path of file prefix on device")
-    private Collection<String> mPreconditionFilePathPrefix = new ArrayList<>();
-
-    @Option(name = "precondition-first-api-level",
-            description = "The lowest first API level required to run the test.")
-    private int mPreconditionFirstApiLevel = 0;
-
-    @Option(name = "precondition-lshal",
-        description = "The name of a `lshal`-listable feature needed to run the test.")
-    private String mPreconditionLshal = null;
-
-    @Option(name = "precondition-sysprop",
-            description = "The name=value for a system property configuration that needs "
-                    + "to be met to run the test.")
-    private String mPreconditionSysProp = null;
-
-    @Option(name = "precondition-vintf",
-            description = "The full name of a HAL specified in vendor/manifest.xml and "
-                    + "needed to run the test (e.g., android.hardware.graphics.mapper@2.0). "
-                    + "this can override precondition-lshal option.")
-    private String mPreconditionVintf = null;
-
-    @Option(name = "enable-dashboard-uploading",
-            description = "Enables the runner's dashboard result uploading feature.")
-    private boolean mEnableDashboardUploading = true;
-
-    @Option(name = "enable-log-uploading",
-            description = "Enables the runner's log uploading feature.")
-    private boolean mEnableLogUploading = false;
-
-    @Option(name = "include-filter",
-            description = "The positive filter of the test names to run.")
-    private Set<String> mIncludeFilters = new TreeSet<>();
-
-    @Option(name = "exclude-filter",
-            description = "The negative filter of the test names to run.")
-    private Set<String> mExcludeFilters = new TreeSet<>();
-
-    @Option(name = "exclude-over-include",
-            description = "The negative filter of the test names to run.")
-    private boolean mExcludeOverInclude = false;
-
-    @Option(name = "runtime-hint", description = "The hint about the test's runtime.",
-            isTimeVal = true)
-    private long mRuntimeHint = 60000;  // 1 minute
-
-    @Option(name = "enable-profiling", description = "Enable profiling for the tests.")
-    private boolean mEnableProfiling = false;
-
-    @Option(name = "profiling-arg-value", description = "Whether to profile for arg value.")
-    private boolean mProfilingArgValue = false;
-
-    @Option(name = "save-trace-file-remote",
-            description = "Whether to save the trace file in remote storage.")
-    private boolean mSaveTraceFileRemote = false;
-
-    @Option(name = "enable-systrace", description = "Enable systrace for the tests.")
-    private boolean mEnableSystrace = false;
-
-    @Option(name = "enable-coverage",
-            description = "Enable coverage for the tests. In order for coverage to be measured, " +
-                          "ro.vts.coverage system must have value \"1\" to indicate the target " +
-                          "build is coverage instrumented.")
-    private boolean mEnableCoverage = true;
-
-    @Option(name = "global-coverage", description = "True to measure coverage for entire test, "
-                    + "measure coverage for each test case otherwise. Currently, only global "
-                    + "coverage is supported for binary tests")
-    private boolean mGlobalCoverage = true;
-
-    @Option(name = "enable-sancov",
-            description = "Enable sanitizer coverage for the tests. In order for coverage to be "
-                    + "measured, the device must be a sancov build with its build info and "
-                    + "unstripped binaries available to the sancov preparer class.")
-    private boolean mEnableSancov = true;
-
-    @Option(name = "output-coverage-report", description = "Whether to store raw coverage report.")
-    private boolean mOutputCoverageReport = false;
-
-    // Another design option is to parse a string or use enum for host preference on BINDER,
-    // PASSTHROUGH and DEFAULT(which is BINDER). Also in the future, we might want to deal with
-    // the case of target preference on PASSTHROUGH (if host does not specify to use BINDER mode).
-    @Option(name = "passthrough-mode", description = "Set getStub to use passthrough mode. "
-        + "Value true means use passthrough mode if available; false for binderized mode if "
-        + "available. Default is false")
-    private boolean mPassthroughMode = false;
-
-    @Option(name = "ltp-number-of-threads",
-            description = "Number of threads to run the LTP test cases. "
-                    + "0 means using number of avaiable CPU threads.")
-    private int mLtpNumberOfThreads = -1;
-
-    @Option(name = "shell-default-nohup",
-            description = "Whether to by default use nohup for shell commands.")
-    private boolean mShellDefaultNohup = false;
-
-    @Option(name = "skip-on-32bit-abi", description = "Whether to skip tests on 32bit ABI.")
-    private boolean mSkipOn32BitAbi = false;
-
-    @Option(name = "skip-on-64bit-abi", description = "Whether to skip tests on 64bit ABI.")
-    private boolean mSkipOn64BitAbi = false;
-
-    @Option(name = "skip-if-thermal-throttling",
-            description = "Whether to skip tests if target device suffers from thermal throttling.")
-    private boolean mSkipIfThermalThrottling = false;
-
-    @Option(name = "disable-cpu-frequency-scaling",
-            description = "Whether to disable cpu frequency scaling for test.")
-    private boolean mDisableCpuFrequencyScaling = true;
-
-    @Option(name = "run-32bit-on-64bit-abi",
-            description = "Whether to run 32bit tests on 64bit ABI.")
-    private boolean mRun32bBitOn64BitAbi = false;
-
-    @Option(name = "binary-test-source",
-            description = "Binary test source paths relative to vts testcase directory on host."
-                    + "Format of tags:"
-                    + "    <source>: source without tag."
-                    + "    <tag>::<source>: source with tag. Can be used to separate 32bit and 64"
-                    + "            bit tests with same file name."
-                    + "    <tag1>::<source1>, <tag1>::<source2>, <tag2>::<source3>: multiple"
-                    + "            sources connected by comma. White spaces in-between"
-                    + "            will be ignored."
-                    + "Format of each source string:"
-                    + "    <source file>: push file and create test case."
-                    + "            Source is relative path of source file under vts's testcases"
-                    + "            folder. Source file will be pushed to working directory"
-                    + "            discarding original directory structure, and test cases will"
-                    + "            be created using the pushed file."
-                    + "    <source file>-><destination file>: push file and create test case."
-                    + "            Destination path is absolute path on device. Test cases will"
-                    + "            be created using the pushed file."
-                    + "    <source file>->: push file only."
-                    + "            Push the source file to its' tag's corresponding"
-                    + "            working directory. Test case will not be created on"
-                    + "            this file. This is equivalent to but simpler than specifying a"
-                    + "            working directory for the tag and use VtsFilePusher to push the"
-                    + "            file to the directory."
-                    + "    -><destination file>: create test case only."
-                    + "            Destination is absolute device side path."
-                    + "    Note: each path in source string can be a directory. However, the"
-                    + "          default binary test runner and gtest binary test runner does not"
-                    + "          support creating test cases from a directory. You will need to"
-                    + "          override the binary test runner's CreateTestCase method in python."
-                    + "    If you wish to push a source file to a specific destination and not"
-                    + "    create a test case from it, please use VtsFilePusher.")
-    private Collection<String> mBinaryTestSource = new ArrayList<>();
-
-    @Option(name = "binary-test-working-directory", description = "Working directories for binary "
-                    + "tests. Tags can be added to the front of each directory using '::' as delimiter. "
-                    + "However, each tag should only has one working directory. This option is optional for "
-                    + "binary tests. If not specified, different directories will be used for files with "
-                    + "different tags.")
-    private Collection<String> mBinaryTestWorkingDirectory = new ArrayList<>();
-
-    @Option(name = "binary-test-envp", description = "Additional environment path for binary "
-        + "tests. Tags can be added to the front of each directory using '::' as delimiter. "
-        + "There can be multiple instances of binary-test-envp for a same tag, which will "
-        + "later automatically be combined.")
-    private Collection<String> mBinaryTestEnvp = new ArrayList<>();
-
-    @Option(name = "binary-test-args", description = "Additional args or flags for binary "
-        + "tests. Tags can be added to the front of each directory using '::' as delimiter. "
-        + "There can be multiple instances of binary-test-args for a same tag, which will "
-        + "later automatically be combined.")
-    private Collection<String> mBinaryTestArgs = new ArrayList<>();
-
-    @Option(name = "binary-test-ld-library-path", description = "LD_LIBRARY_PATH for binary "
-                    + "tests. Tags can be added to the front of each instance using '::' as delimiter. "
-                    + "Multiple directories can be added under a same tag using ':' as delimiter. "
-                    + "There can be multiple instances of ld-library-path for a same tag, which will "
-                    + "later automatically be combined using ':' as delimiter. Paths without a tag "
-                    + "will only used for binaries without tag. This option is optional for binary tests.")
-    private Collection<String> mBinaryTestLdLibraryPath = new ArrayList<>();
-
-    @Option(name = "binary-test-profiling-library-path", description = "Path to lookup and load "
-            + "profiling libraries for tests with profiling enabled. Tags can be added to the "
-            + "front of each directory using '::' as delimiter. Only one directory could be "
-            + "specified for the same tag. This option is optional for binary tests. If not "
-            + "specified, default directories will be used for files with different tags.")
-    private Collection<String> mBinaryTestProfilingLibraryPath = new ArrayList<>();
-
-    @Deprecated
-    @Option(name = "binary-test-disable-framework",
-            description = "Adb stop/start before/after test.")
-    private boolean mBinaryTestDisableFramework = false;
-
-    @Deprecated
-    @Option(name = "binary-test-stop-native-servers",
-            description = "Set to stop all properly configured native servers during the testing.")
-    private boolean mBinaryTestStopNativeServers = false;
-
-    @Option(name = "disable-framework", description = "Adb stop/start before/after test.")
-    private boolean mDisableFramework = false;
-
-    @Option(name = "stop-native-servers",
-            description = "Set to stop all properly configured native servers during the testing.")
-    private boolean mStopNativeServers = false;
-
-    @Option(name = "bug-report-on-failure",
-            description = "To catch bugreport zip file at the end of failed test cases. "
-                    + "If set to true, a report will be caught through adh shell command at the "
-                    + "end of each failed test cases.")
-    private boolean mBugReportOnFailure = false;
-
-    @Option(name = "logcat-on-failure",
-            description = "To catch logcat from each buffers at the end of failed test cases. "
-                    + "If set to true, a report will be caught through adh shell command at the "
-                    + "end of each failed test cases.")
-    private boolean mLogcatOnFailure = true;
-
-    @Option(name = "native-server-process-name",
-            description = "Name of a native server process. The runner checks to make sure "
-                    + "each specified native server process is not running after the framework stop.")
-    private Collection<String> mNativeServerProcessName = new ArrayList<>();
-
-    @Option(name = "binary-test-type", description = "Binary test type. Only specify this when "
-            + "running an extended binary test without a python test file. Available options: gtest")
-    private String mBinaryTestType = "";
-
-    @Option(name = "hal-hidl-replay-test-trace-path", description = "The path of a trace file to replay.")
-    private Collection<String> mHalHidlReplayTestTracePaths = new ArrayList<>();
-
-    @Option(name = "hal-hidl-package-name", description = "The name of a target HIDL HAL package "
-            + "e.g., 'android.hardware.light@2.0'.")
-    private String mHalHidlPackageName = null;
-
-    @Option(name = "systrace-process-name", description = "Process name for systrace.")
-    private String mSystraceProcessName = null;
-
-    @Option(name = "collect-tests-only",
-            description = "Only invoke setUpClass, generate*, and tearDownClass to collect list "
-                    + "of applicable test cases. All collected tests pass without being executed.")
-    private boolean mCollectTestsOnly = false;
-
-    @Option(name = "gtest-batch-mode", description = "Run Gtest binaries in batch mode.")
-    private boolean mGtestBatchMode = false;
-
-    @Option(name = "log-severity",
-            description = "Set the log severity level."
-                    + "Note, this is a legacy option and does not affect how log files are saved."
-                    + "By setting it to INFO, it will only make python DEBUG log not showing on "
-                    + "console even if TradeFed log display level is set to DEBUG."
-                    + "Therefore, it is not recommemded to set or modify this value in the current"
-                    + "implementation.")
-    private String mLogSeverity = "DEBUG";
-
-    @Option(name = "run-as-vts-self-test",
-            description = "Run the module as vts-selftest. "
-                    + "When the value is set to true, only setUpClass and tearDownClass function "
-                    + "of the module will be called to ensure the framework is free of bug. "
-                    + "Note that exception in tearDownClass will not be reported as failure.")
-    private boolean mRunAsVtsSelfTest = false;
-
-    @Option(name = "exclude-coverage-path",
-            description = "The coverage path that should be excluded in results. "
-                    + "Used only when enable-coverage is true.")
-    private Collection<String> mExcludeCoveragePath = new ArrayList<>();
-
-    @Option(name = "mobly-test-module",
-            description = "Mobly test module name. "
-                    + "If this value is specified, VTS will use mobly test template "
-                    + "with the configurations."
-                    + "Multiple values can be added by repeatly using this option.")
-    private Collection<String> mMoblyTestModule = new ArrayList<>();
-
-    @Option(name = "acts-test-module",
-            description = "Acts test module name. "
-                    + "If this value is specified, VTS will use acts test adapter "
-                    + "with the configurations."
-                    + "Multiple values can be added by repeatly using this option.")
-    private String mActsTestModule = null;
-
-    @Option(name = "config-str",
-            description = "Key-value map of custom config string. "
-                    + "The map will be passed directly to python runner and test module. "
-                    + "Only one value per key is stored."
-                    + "If the value for the same key is set multiple times, only the last value is "
-                    + "used.")
-    private TreeMap<String, String> mConfigStr = new TreeMap<>();
-
-    @Option(name = "config-int",
-            description = "Key-value map of custom config integer. "
-                    + "The map will be passed directly to python runner and test module. "
-                    + "Only one value per key is stored."
-                    + "If the value for the same key is set multiple times, only the last value is "
-                    + "used.")
-    private TreeMap<String, Integer> mConfigInt = new TreeMap<>();
-
-    @Option(name = "config-bool",
-            description = "Key-value map of custom config boolean. "
-                    + "The map will be passed directly to python runner and test module. "
-                    + "Only one value per key is stored."
-                    + "If the value for the same key is set multiple times, only the last value is "
-                    + "used.")
-    private TreeMap<String, Boolean> mConfigBool = new TreeMap<>();
-
-    @Option(name = "max-retry-count",
-            description = "The max number of retries. Currerntly done by VTS Python runner in "
-                    + "a test case granularity.")
-    private int mMaxRetryCount = 0;
-
-    private IBuildInfo mBuildInfo = null;
-    private String mRunName = null;
-    // the path to android-vts10/testcases
-    private String mTestCaseDir = "./";
-
-    private VtsVendorConfigFileUtil configReader = null;
-    private IInvocationContext mInvocationContext = null;
-    private OutputUtil mOutputUtil = null;
-    protected CompatibilityBuildHelper mBuildHelper = null;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setInvocationContext(IInvocationContext context) {
-        mInvocationContext = context;
-        setDevice(context.getDevices().get(0));
-        setBuild(context.getBuildInfos().get(0));
-    }
-
-    /**
-     * @return the mInvocationContext
-     */
-    public IInvocationContext getInvocationContext() {
-        return mInvocationContext;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setDevice(ITestDevice device) {
-        mDevice = device;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public ITestDevice getDevice() {
-        return mDevice;
-    }
-
-    public void setTestCasePath(String path){
-        mTestCasePath = path;
-    }
-
-    public void setTestConfigPath(String path){
-        mTestConfigPath = path;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addIncludeFilter(String filter) {
-        mIncludeFilters.add(cleanFilter(filter));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addAllIncludeFilters(Set<String> filters) {
-        for (String filter : filters) {
-            mIncludeFilters.add(cleanFilter(filter));
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void clearIncludeFilters() {
-        mIncludeFilters.clear();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Set<String> getIncludeFilters() {
-        return mIncludeFilters;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addExcludeFilter(String filter) {
-        mExcludeFilters.add(cleanFilter(filter));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addAllExcludeFilters(Set<String> filters) {
-        for (String filter : filters) {
-            mExcludeFilters.add(cleanFilter(filter));
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void clearExcludeFilters() {
-        mExcludeFilters.clear();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Set<String> getExcludeFilters() {
-        return mExcludeFilters;
-    }
-
-    /**
-     * Conforms filters using a {@link TestDescription} format
-     * to be recognized by the GTest executable.
-     */
-    private String cleanFilter(String filter) {
-        return filter.replace('#', '.');
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public long getRuntimeHint() {
-        return mRuntimeHint;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setCollectTestsOnly(boolean shouldCollectTest) {
-        mCollectTestsOnly = shouldCollectTest;
-    }
-
-    /**
-     * Generate a device json object from ITestDevice object.
-     *
-     * @param device device object
-     * @throws RuntimeException
-     * @throws JSONException
-     */
-    private JSONObject generateJsonDeviceItem(ITestDevice device) throws JSONException {
-        JSONObject deviceItemObject = new JSONObject();
-        deviceItemObject.put(SERIAL, device.getSerialNumber());
-        try {
-            deviceItemObject.put("product_type", device.getProductType());
-            deviceItemObject.put("product_variant", device.getProductVariant());
-            deviceItemObject.put("build_alias", device.getBuildAlias());
-            deviceItemObject.put("build_id", device.getBuildId());
-            deviceItemObject.put("build_flavor", device.getBuildFlavor());
-        } catch (DeviceNotAvailableException e) {
-            CLog.e("Device %s not available.", device.getSerialNumber());
-            throw new RuntimeException("Failed to get device information");
-        }
-        return deviceItemObject;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @SuppressWarnings("deprecation")
-    @Override
-    public void run(ITestInvocationListener listener)
-            throws IllegalArgumentException, DeviceNotAvailableException {
-        mOutputUtil = new OutputUtil(listener);
-        mOutputUtil.setTestModuleName(mTestModuleName);
-        if (mAbi != null) {
-            mOutputUtil.setAbiName(mAbi.getName());
-        }
-
-        if (mTestCasePath == null) {
-            if (!mBinaryTestSource.isEmpty()) {
-                String template;
-                switch (mBinaryTestType) {
-                    case BINARY_TEST_TYPE_GTEST:
-                        template = TEMPLATE_GTEST_BINARY_TEST_PATH;
-                        break;
-                    case BINARY_TEST_TYPE_HAL_HIDL_GTEST:
-                        template = TEMPLATE_HAL_HIDL_GTEST_PATH;
-                        break;
-                    case BINARY_TEST_TYPE_HOST_BINARY_TEST:
-                        template = TEMPLATE_HOST_BINARY_TEST_PATH;
-                        break;
-                    default:
-                        template = TEMPLATE_BINARY_TEST_PATH;
-                }
-                CLog.d("Using default test case template at %s.", template);
-                setTestCasePath(template);
-                if (mEnableCoverage && !mGlobalCoverage) {
-                    CLog.e("Only global coverage is supported for test type %s.", mBinaryTestType);
-                    throw new RuntimeException("Failed to produce VTS runner test config");
-                }
-            } else if (mBinaryTestType.equals(BINARY_TEST_TYPE_HAL_HIDL_REPLAY_TEST)) {
-                setTestCasePath(TEMPLATE_HAL_HIDL_REPLAY_TEST_PATH);
-            } else if (mBinaryTestType.equals(BINARY_TEST_TYPE_LLVMFUZZER)) {
-                // Fuzz test don't need test-case-path.
-                setTestCasePath(TEMPLATE_LLVMFUZZER_TEST_PATH);
-            } else if (!mMoblyTestModule.isEmpty()) {
-                setTestCasePath(TEMPLATE_MOBLY_TEST_PATH);
-            } else if (mActsTestModule != null) {
-                setTestCasePath(ADAPTER_ACTS_PATH);
-            } else {
-                throw new IllegalArgumentException("test-case-path is not set.");
-            }
-        }
-
-        doRunTest(listener);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildInfo = buildInfo;
-        mBuildHelper = new CompatibilityBuildHelper(mBuildInfo);
-    }
-
-    /**
-     * Populate a jsonObject with default fields.
-     * This method uses deepMergeJsonObjects method from JsonUtil to merge the default config file with the target
-     * config file. Field already defined in target config file will not be overwritten. Also, JSONArray will not be
-     * deep merged.
-     *
-     * @param jsonObject the target json object to populate
-     * @param testCaseDataDir data file path
-     * @throws IOException
-     * @throws JSONException
-     */
-    private void populateDefaultJsonFields(JSONObject jsonObject, String testCaseDataDir)
-            throws IOException, JSONException {
-        CLog.d("Populating default fields to json object from %s", DEFAULT_TESTCASE_CONFIG_PATH);
-        String content =
-                FileUtil.readStringFromFile(new File(mTestCaseDir, DEFAULT_TESTCASE_CONFIG_PATH));
-        JSONObject defaultJsonObject = new JSONObject(content);
-
-        JsonUtil.deepMergeJsonObjects(jsonObject, defaultJsonObject);
-    }
-
-    /**
-     * Derive mRunName from module name or test paths.
-     *
-     * @return the derived mRunName.
-     * @throws RuntimeException if mTestModuleName, mTestConfigPath, and mTestCasePath are null.
-     */
-    private String deriveRunName() throws RuntimeException {
-        if (mRunName != null) {
-            return mRunName;
-        }
-
-        if (mTestModuleName != null) {
-            mRunName = mTestModuleName;
-        } else {
-            CLog.w("--test-module-name not set (not recommended); deriving automatically");
-            if (mTestConfigPath != null) {
-                mRunName = new File(mTestConfigPath).getName();
-                mRunName = mRunName.replace(CONFIG_FILE_EXTENSION, "");
-            } else if (mTestCasePath != null) {
-                mRunName = new File(mTestCasePath).getName();
-            } else {
-                throw new RuntimeException(
-                        "Failed to derive test module name; use --test-module-name option");
-            }
-        }
-        return mRunName;
-    }
-
-    /**
-     * This method reads the provided VTS runner test json config, adds or updates some of its
-     * fields (e.g., to add build info and device serial IDs), and returns the updated json object.
-     * This method calls populateDefaultJsonFields to populate the config JSONObject if the config file is missing
-     * or some required fields is missing from the JSONObject. If test name is not specified, this method
-     * will use the config file's file name file without extension as test name. If config file is missing, this method
-     * will use the test case's class name as test name.
-     *
-     * @param log_path the path of a directory to store the VTS runner logs.
-     * @return the updated JSONObject as the new test config.
-     */
-    protected void updateVtsRunnerTestConfig(JSONObject jsonObject)
-            throws IOException, JSONException {
-        configReader = new VtsVendorConfigFileUtil();
-        if (configReader.LoadVendorConfig(mBuildInfo)) {
-            JSONObject vendorConfigJson = configReader.GetVendorConfigJson();
-            if (vendorConfigJson != null) {
-                JsonUtil.deepMergeJsonObjects(jsonObject, vendorConfigJson);
-            }
-        }
-
-        CLog.d("Load original test config %s %s", mTestCaseDir, mTestConfigPath);
-        String content = null;
-
-        if (mTestConfigPath != null) {
-            content = FileUtil.readStringFromFile(
-                    new File(Paths.get(mTestCaseDir, mTestConfigPath).toString()));
-            CLog.d("Loaded original test config %s", content);
-            if (content != null) {
-                JsonUtil.deepMergeJsonObjects(jsonObject, new JSONObject(content));
-            }
-        }
-
-        populateDefaultJsonFields(jsonObject, mTestCaseDir);
-        CLog.d("Built a Json object using the loaded original test config");
-
-        JSONArray deviceArray = new JSONArray();
-
-        boolean coverageBuild = false;
-        boolean sancovBuild = false;
-
-        boolean first_device = true;
-        for (ITestDevice device : mInvocationContext.getDevices()) {
-            JSONObject deviceJson = generateJsonDeviceItem(device);
-            try {
-                String coverageProperty = device.getProperty(COVERAGE_PROPERTY);
-                boolean enable_coverage_for_device =
-                        coverageProperty != null && coverageProperty.equals("1");
-                if (first_device) {
-                    coverageBuild = enable_coverage_for_device;
-                    first_device = false;
-                } else {
-                    if (coverageBuild && (!enable_coverage_for_device)) {
-                        CLog.e("Device %s is not coverage build while others are.",
-                                device.getSerialNumber());
-                        throw new RuntimeException("Device build not the same.");
-                    }
-                }
-            } catch (DeviceNotAvailableException e) {
-                CLog.e("Device %s not available.", device.getSerialNumber());
-                throw new RuntimeException("Failed to get device information");
-            }
-
-            File sancovDir =
-                    mBuildInfo.getFile(VtsCoveragePreparer.getSancovResourceDirKey(device));
-            if (sancovDir != null) {
-                deviceJson.put("sancov_resources_path", sancovDir.getAbsolutePath());
-                sancovBuild = true;
-            }
-            File gcovDir = mBuildInfo.getFile(VtsCoveragePreparer.getGcovResourceDirKey(device));
-            if (gcovDir != null) {
-                deviceJson.put("gcov_resources_path", gcovDir.getAbsolutePath());
-                coverageBuild = true;
-            }
-            deviceArray.put(deviceJson);
-        }
-
-        JSONArray testBedArray = (JSONArray) jsonObject.get(TEST_BED);
-        if (testBedArray.length() == 0) {
-            JSONObject testBedItemObject = new JSONObject();
-            String testName = deriveRunName();
-            CLog.d("Setting test module name as %s", testName);
-            testBedItemObject.put(NAME, testName);
-            testBedItemObject.put(ANDROIDDEVICE, deviceArray);
-            testBedArray.put(testBedItemObject);
-        } else if (testBedArray.length() == 1) {
-            JSONObject testBedItemObject = (JSONObject) testBedArray.get(0);
-            JSONArray androidDeviceArray = (JSONArray) testBedItemObject.get(ANDROIDDEVICE);
-            int length;
-            length = (androidDeviceArray.length() > deviceArray.length())
-                    ? androidDeviceArray.length()
-                    : deviceArray.length();
-            for (int index = 0; index < length; index++) {
-                if (index < androidDeviceArray.length()) {
-                    if (index < deviceArray.length()) {
-                        JsonUtil.deepMergeJsonObjects((JSONObject) androidDeviceArray.get(index),
-                                (JSONObject) deviceArray.get(index));
-                    }
-                } else if (index < deviceArray.length()) {
-                    androidDeviceArray.put(index, deviceArray.get(index));
-                }
-            }
-        } else {
-            CLog.e("Multi-device not yet supported: %d devices requested",
-                    testBedArray.length());
-            throw new RuntimeException("Failed to produce VTS runner test config");
-        }
-        jsonObject.put(DATA_FILE_PATH, mTestCaseDir);
-        CLog.d("Added %s = %s to the Json object", DATA_FILE_PATH, mTestCaseDir);
-
-        JSONObject build = new JSONObject();
-        build.put(BUILD_ID, mBuildInfo.getBuildId());
-        build.put(BUILD_TARGET, mBuildInfo.getBuildTargetName());
-        jsonObject.put(BUILD, build);
-        CLog.d("Added %s to the Json object", BUILD);
-
-        JSONObject suite = new JSONObject();
-        suite.put(NAME, mBuildInfo.getTestTag());
-        suite.put(INCLUDE_FILTER, new JSONArray(mIncludeFilters));
-        CLog.d("Added include filter to test suite: %s", mIncludeFilters);
-        suite.put(EXCLUDE_FILTER, new JSONArray(mExcludeFilters));
-        CLog.d("Added exclude filter to test suite: %s", mExcludeFilters);
-
-        String coverageReportPath = mBuildInfo.getBuildAttributes().get("coverage_report_path");
-        if (coverageReportPath != null) {
-            jsonObject.put(OUTPUT_COVERAGE_REPORT, true);
-            CLog.d("Added %s to the Json object", OUTPUT_COVERAGE_REPORT);
-            jsonObject.put(COVERAGE_REPORT_PATH, coverageReportPath);
-            CLog.d("Added %s to the Json object", COVERAGE_REPORT_PATH);
-        }
-
-        if (mExcludeOverInclude) {
-            jsonObject.put(EXCLUDE_OVER_INCLUDE, mExcludeOverInclude);
-            CLog.d("Added %s to the Json object", EXCLUDE_OVER_INCLUDE);
-        }
-
-        jsonObject.put(TEST_SUITE, suite);
-        CLog.d("Added %s to the Json object", TEST_SUITE);
-
-        jsonObject.put(TEST_TIMEOUT, mTestTimeout);
-        CLog.i("Added %s to the Json object: %d", TEST_TIMEOUT, mTestTimeout);
-
-        if (!mLogSeverity.isEmpty()) {
-            String logSeverity = mLogSeverity.toUpperCase();
-            ArrayList<String> severityList =
-                    new ArrayList<String>(Arrays.asList("ERROR", "WARNING", "INFO", "DEBUG"));
-            if (!severityList.contains(logSeverity)) {
-                CLog.w("Unsupported log severity %s, use default log_severity:INFO instead.",
-                        logSeverity);
-                logSeverity = "INFO";
-            }
-            jsonObject.put(LOG_SEVERITY, logSeverity);
-            CLog.d("Added %s to the Json object: %s", LOG_SEVERITY, logSeverity);
-        }
-
-        if (mShellDefaultNohup) {
-            jsonObject.put(SHELL_DEFAULT_NOHUP, mShellDefaultNohup);
-            CLog.d("Added %s to the Json object", SHELL_DEFAULT_NOHUP);
-        }
-
-        if (mAbi != null) {
-            jsonObject.put(ABI_NAME, mAbi.getName());
-            CLog.d("Added %s to the Json object", ABI_NAME);
-            jsonObject.put(ABI_BITNESS, mAbi.getBitness());
-            CLog.d("Added %s to the Json object", ABI_BITNESS);
-        }
-
-        if (mSkipOn32BitAbi) {
-            jsonObject.put(SKIP_ON_32BIT_ABI, mSkipOn32BitAbi);
-            CLog.d("Added %s to the Json object", SKIP_ON_32BIT_ABI);
-        }
-
-        if (mSkipOn64BitAbi) {
-            jsonObject.put(SKIP_ON_64BIT_ABI, mSkipOn64BitAbi);
-            CLog.d("Added %s to the Json object", SKIP_ON_64BIT_ABI);
-        } else if (mRun32bBitOn64BitAbi) {
-            jsonObject.put(RUN_32BIT_ON_64BIT_ABI, mRun32bBitOn64BitAbi);
-            CLog.d("Added %s to the Json object", RUN_32BIT_ON_64BIT_ABI);
-        }
-
-        if (mSkipIfThermalThrottling) {
-            jsonObject.put(SKIP_IF_THERMAL_THROTTLING, mSkipIfThermalThrottling);
-            CLog.d("Added %s to the Json object", SKIP_IF_THERMAL_THROTTLING);
-        }
-
-        jsonObject.put(DISABLE_CPU_FREQUENCY_SCALING, mDisableCpuFrequencyScaling);
-        CLog.d("Added %s to the Json object, value: %s", DISABLE_CPU_FREQUENCY_SCALING,
-                mDisableCpuFrequencyScaling);
-
-        if (!mBinaryTestSource.isEmpty()) {
-            jsonObject.put(BINARY_TEST_SOURCE, new JSONArray(mBinaryTestSource));
-            CLog.d("Added %s to the Json object", BINARY_TEST_SOURCE);
-        }
-
-        if (!mBinaryTestWorkingDirectory.isEmpty()) {
-            jsonObject.put(BINARY_TEST_WORKING_DIRECTORY,
-                    new JSONArray(mBinaryTestWorkingDirectory));
-            CLog.d("Added %s to the Json object", BINARY_TEST_WORKING_DIRECTORY);
-        }
-
-        if (!mBinaryTestEnvp.isEmpty()) {
-            jsonObject.put(BINARY_TEST_ENVP, new JSONArray(mBinaryTestEnvp));
-            CLog.d("Added %s to the Json object", BINARY_TEST_ENVP);
-        }
-
-        if (!mBinaryTestArgs.isEmpty()) {
-            jsonObject.put(BINARY_TEST_ARGS, new JSONArray(mBinaryTestArgs));
-            CLog.d("Added %s to the Json object", BINARY_TEST_ARGS);
-        }
-
-        if (!mBinaryTestLdLibraryPath.isEmpty()) {
-            jsonObject.put(BINARY_TEST_LD_LIBRARY_PATH,
-                    new JSONArray(mBinaryTestLdLibraryPath));
-            CLog.d("Added %s to the Json object", BINARY_TEST_LD_LIBRARY_PATH);
-        }
-
-        if (mBugReportOnFailure) {
-            jsonObject.put(BUG_REPORT_ON_FAILURE, mBugReportOnFailure);
-            CLog.d("Added %s to the Json object", BUG_REPORT_ON_FAILURE);
-        }
-
-        if (!mLogcatOnFailure) {
-            jsonObject.put(LOGCAT_ON_FAILURE, mLogcatOnFailure);
-            CLog.d("Added %s to the Json object", LOGCAT_ON_FAILURE);
-        }
-
-        if (mEnableProfiling) {
-            jsonObject.put(ENABLE_PROFILING, mEnableProfiling);
-            CLog.d("Added %s to the Json object", ENABLE_PROFILING);
-        }
-
-        if (mProfilingArgValue) {
-            jsonObject.put(PROFILING_ARG_VALUE, mProfilingArgValue);
-            CLog.d("Added %s to the Json object", PROFILING_ARG_VALUE);
-        }
-
-        if (mSaveTraceFileRemote) {
-            jsonObject.put(SAVE_TRACE_FIEL_REMOTE, mSaveTraceFileRemote);
-            CLog.d("Added %s to the Json object", SAVE_TRACE_FIEL_REMOTE);
-        }
-
-        if (mEnableSystrace) {
-            jsonObject.put(ENABLE_SYSTRACE, mEnableSystrace);
-            CLog.d("Added %s to the Json object", ENABLE_SYSTRACE);
-        }
-
-        if (mEnableCoverage) {
-            jsonObject.put(GLOBAL_COVERAGE, mGlobalCoverage);
-            if (!mExcludeCoveragePath.isEmpty()) {
-                jsonObject.put(EXCLUDE_COVERAGE_PATH, new JSONArray(mExcludeCoveragePath));
-                CLog.d("Added %s to the Json object", EXCLUDE_COVERAGE_PATH);
-            }
-            if (coverageBuild) {
-                jsonObject.put(ENABLE_COVERAGE, mEnableCoverage);
-                CLog.d("Added %s to the Json object", ENABLE_COVERAGE);
-            } else {
-                CLog.d("Device build has coverage disabled");
-            }
-        }
-
-        if (mEnableSancov) {
-            if (sancovBuild) {
-                jsonObject.put(ENABLE_SANCOV, mEnableSancov);
-                CLog.d("Added %s to the Json object", ENABLE_SANCOV);
-            } else {
-                CLog.d("Device build has sancov disabled");
-            }
-        }
-
-        if (mPreconditionHwBinderServiceName != null) {
-            jsonObject.put(PRECONDITION_HWBINDER_SERVICE, mPreconditionHwBinderServiceName);
-            CLog.d("Added %s to the Json object", PRECONDITION_HWBINDER_SERVICE);
-        }
-
-        if (mPreconditionFeature != null) {
-            jsonObject.put(PRECONDITION_FEATURE, mPreconditionFeature);
-            CLog.d("Added %s to the Json object", PRECONDITION_FEATURE);
-        }
-
-        if (!mPreconditionFilePathPrefix.isEmpty()) {
-            jsonObject.put(
-                    PRECONDITION_FILE_PATH_PREFIX, new JSONArray(mPreconditionFilePathPrefix));
-            CLog.d("Added %s to the Json object", PRECONDITION_FILE_PATH_PREFIX);
-        }
-
-        if (mPreconditionFirstApiLevel != 0) {
-            jsonObject.put(PRECONDITION_FIRST_API_LEVEL, mPreconditionFirstApiLevel);
-            CLog.d("Added %s to the Json object", PRECONDITION_FIRST_API_LEVEL);
-        }
-
-        if (mPreconditionLshal != null) {
-            jsonObject.put(PRECONDITION_LSHAL, mPreconditionLshal);
-            CLog.d("Added %s to the Json object", PRECONDITION_LSHAL);
-        }
-
-        if (mPreconditionVintf != null) {
-            jsonObject.put(PRECONDITION_VINTF, mPreconditionVintf);
-            CLog.d("Added %s to the Json object", PRECONDITION_VINTF);
-        }
-
-        if (mPreconditionSysProp != null) {
-            jsonObject.put(PRECONDITION_SYSPROP, mPreconditionSysProp);
-            CLog.d("Added %s to the Json object", PRECONDITION_SYSPROP);
-        }
-
-        if (!mBinaryTestProfilingLibraryPath.isEmpty()) {
-            jsonObject.put(BINARY_TEST_PROFILING_LIBRARY_PATH,
-                    new JSONArray(mBinaryTestProfilingLibraryPath));
-            CLog.d("Added %s to the Json object", BINARY_TEST_PROFILING_LIBRARY_PATH);
-        }
-
-        if (mDisableFramework) {
-            jsonObject.put(DISABLE_FRAMEWORK, mDisableFramework);
-            CLog.d("Added %s to the Json object", DISABLE_FRAMEWORK);
-        }
-
-        if (mStopNativeServers) {
-            jsonObject.put(STOP_NATIVE_SERVERS, mStopNativeServers);
-            CLog.d("Added %s to the Json object", STOP_NATIVE_SERVERS);
-        }
-
-        if (mBinaryTestDisableFramework) {
-            jsonObject.put(BINARY_TEST_DISABLE_FRAMEWORK, mBinaryTestDisableFramework);
-            CLog.d("Added %s to the Json object", BINARY_TEST_DISABLE_FRAMEWORK);
-        }
-
-        if (mBinaryTestStopNativeServers) {
-            jsonObject.put(BINARY_TEST_STOP_NATIVE_SERVERS, mBinaryTestStopNativeServers);
-            CLog.d("Added %s to the Json object", BINARY_TEST_STOP_NATIVE_SERVERS);
-        }
-
-        if (!mNativeServerProcessName.isEmpty()) {
-            jsonObject.put(NATIVE_SERVER_PROCESS_NAME, new JSONArray(mNativeServerProcessName));
-            CLog.d("Added %s to the Json object", NATIVE_SERVER_PROCESS_NAME);
-        }
-
-        if (!mHalHidlReplayTestTracePaths.isEmpty()) {
-            jsonObject.put(HAL_HIDL_REPLAY_TEST_TRACE_PATHS,
-                    new JSONArray(mHalHidlReplayTestTracePaths));
-            CLog.d("Added %s to the Json object", HAL_HIDL_REPLAY_TEST_TRACE_PATHS);
-        }
-
-        if (mHalHidlPackageName != null) {
-            jsonObject.put(HAL_HIDL_PACKAGE_NAME, mHalHidlPackageName);
-            CLog.d("Added %s to the Json object", SYSTRACE_PROCESS_NAME);
-        }
-
-        if (mSystraceProcessName != null) {
-            jsonObject.put(SYSTRACE_PROCESS_NAME, mSystraceProcessName);
-            CLog.d("Added %s to the Json object", SYSTRACE_PROCESS_NAME);
-        }
-
-        if (mPassthroughMode) {
-            jsonObject.put(PASSTHROUGH_MODE, mPassthroughMode);
-            CLog.d("Added %s to the Json object", PASSTHROUGH_MODE);
-        }
-
-        if (mCollectTestsOnly) {
-            jsonObject.put(COLLECT_TESTS_ONLY, mCollectTestsOnly);
-            CLog.d("Added %s to the Json object", COLLECT_TESTS_ONLY);
-        }
-
-        if (mGtestBatchMode) {
-            jsonObject.put(GTEST_BATCH_MODE, mGtestBatchMode);
-            CLog.d("Added %s to the Json object", GTEST_BATCH_MODE);
-        }
-
-        if (mLtpNumberOfThreads >= 0) {
-            jsonObject.put(LTP_NUMBER_OF_THREADS, mLtpNumberOfThreads);
-            CLog.d("Added %s to the Json object", LTP_NUMBER_OF_THREADS);
-        }
-
-        if (mRunAsVtsSelfTest) {
-            jsonObject.put(RUN_AS_VTS_SELF_TEST, mRunAsVtsSelfTest);
-            CLog.d("Added %s to the Json object", RUN_AS_VTS_SELF_TEST);
-        }
-
-        if ("vts".equals(mBuildInfo.getTestTag())) {
-            jsonObject.put(RUN_AS_COMPLIANCE_TEST, true);
-            CLog.d("Added %s to the Json object", RUN_AS_COMPLIANCE_TEST);
-        }
-
-        if (!mMoblyTestModule.isEmpty()) {
-            jsonObject.put(MOBLY_TEST_MODULE, new JSONArray(mMoblyTestModule));
-            CLog.d("Added %s to the Json object", MOBLY_TEST_MODULE);
-        }
-
-        if (mActsTestModule != null) {
-            jsonObject.put(ACTS_TEST_MODULE, mActsTestModule);
-            CLog.d("Added %s to the Json object", ACTS_TEST_MODULE);
-        }
-
-        if (mBuildInfo.getFile(VtsPythonVirtualenvPreparer.VIRTUAL_ENV) != null) {
-            jsonObject.put(VtsPythonVirtualenvPreparer.VIRTUAL_ENV,
-                    mBuildInfo.getFile(VtsPythonVirtualenvPreparer.VIRTUAL_ENV).getAbsolutePath());
-        }
-
-        if (mBuildInfo.getFile(VtsPythonVirtualenvPreparer.VIRTUAL_ENV_V3) != null) {
-            jsonObject.put(VtsPythonVirtualenvPreparer.VIRTUAL_ENV_V3,
-                    mBuildInfo.getFile(VtsPythonVirtualenvPreparer.VIRTUAL_ENV_V3)
-                            .getAbsolutePath());
-        }
-
-        if (!mConfigStr.isEmpty()) {
-            jsonObject.put(CONFIG_STR, new JSONObject(mConfigStr));
-            CLog.d("Added %s to the Json object", CONFIG_STR);
-        }
-
-        if (!mConfigInt.isEmpty()) {
-            jsonObject.put(CONFIG_INT, new JSONObject(mConfigInt));
-            CLog.d("Added %s to the Json object", CONFIG_INT);
-        }
-
-        if (!mConfigBool.isEmpty()) {
-            jsonObject.put(CONFIG_BOOL, new JSONObject(mConfigBool));
-            CLog.d("Added %s to the Json object", CONFIG_BOOL);
-        }
-
-        if (mEnableLogUploading) {
-            jsonObject.put(ENABLE_LOG_UPLOADING, "true");
-            CLog.d("Added %s to the Json object with value: true)", ENABLE_LOG_UPLOADING);
-        }
-
-        if (mMaxRetryCount > 0) {
-            jsonObject.put(MAX_RETRY_COUNT, mMaxRetryCount);
-            CLog.d("Added %s to the Json object", MAX_RETRY_COUNT);
-        }
-    }
-
-    /**
-     * Log a test module execution status to device logcat.
-     *
-     * @param status
-     * @return true if succesful, false otherwise
-     */
-    @VisibleForTesting
-    protected void printToDeviceLogcatAboutTestModuleStatus(String status)
-            throws DeviceNotAvailableException {
-        mDevice.executeShellCommand(String.format(
-                "log -p i -t \"VTS\" \"[Test Module] %s %s\"", mTestModuleName, status));
-    }
-
-    /**
-     * Create vts python test runner test config json file.
-     *
-     * @param status
-     * @throws RuntimeException
-     * @return test config json file absolute path string
-     */
-    @VisibleForTesting
-    protected String createVtsRunnerTestConfigJsonFile(File vtsRunnerLogDir) {
-        JSONObject jsonObject = new JSONObject();
-        try {
-            updateVtsRunnerTestConfig(jsonObject);
-
-            jsonObject.put(LOG_PATH, vtsRunnerLogDir.getAbsolutePath());
-            CLog.d("Added %s to the Json object", LOG_PATH);
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to read test config json file");
-        } catch (JSONException e) {
-            throw new RuntimeException("Failed to build updated test config json data");
-        }
-
-        CLog.d("VTS python test config json: %s", jsonObject.toString());
-
-        String jsonFilePath = null;
-        try {
-            File tmpFile = FileUtil.createTempFile(
-                    mBuildInfo.getTestTag() + "-config-" + mBuildInfo.getDeviceSerial(), ".json",
-                    vtsRunnerLogDir);
-            jsonFilePath = tmpFile.getAbsolutePath();
-            CLog.d("VTS test config json file path: %s", jsonFilePath);
-            FileUtil.writeToFile(jsonObject.toString(), tmpFile);
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to create vts test config json file");
-        }
-        return jsonFilePath;
-    }
-
-    private boolean AddTestModuleKeys(String test_module_name, long test_module_timestamp) {
-        if (test_module_name.length() == 0 || test_module_timestamp == -1) {
-            CLog.e(String.format("Test module keys (%s,%d) are invalid.", test_module_name,
-                    test_module_timestamp));
-            return false;
-        }
-        File reportFile = mBuildInfo.getFile(TEST_PLAN_REPORT_FILE);
-
-        if (reportFile != null) {
-            try (FileWriter fw = new FileWriter(reportFile.getAbsoluteFile(), true);
-                    BufferedWriter bw = new BufferedWriter(fw);
-                    PrintWriter out = new PrintWriter(bw)) {
-                out.println(String.format("%s %s", test_module_name, test_module_timestamp));
-            } catch (IOException e) {
-                CLog.e(String.format(
-                        "Can't write to the test plan result file, %s", TEST_PLAN_REPORT_FILE));
-                return false;
-            }
-        } else {
-            CLog.w("No test plan report file configured.");
-        }
-        return true;
-    }
-
-    /**
-     * This method prepares a command for the test and runs the python file as
-     * given in the arguments.
-     *
-     * @param listener
-     * @throws RuntimeException
-     * @throws IllegalArgumentException
-     */
-    private void doRunTest(ITestInvocationListener listener)
-            throws IllegalArgumentException, DeviceNotAvailableException {
-        long methodStartTime = System.currentTimeMillis();
-        CLog.d("Device serial number: " + mDevice.getSerialNumber());
-
-        setTestCaseDir();
-
-        VtsMultiDeviceTestResultParser parser =
-                new VtsMultiDeviceTestResultParser(listener, deriveRunName());
-
-        File vtsRunnerLogDir = null;
-        try {
-            vtsRunnerLogDir = FileUtil.createTempDir("vts-runner-log");
-        } catch(IOException e) {
-            throw new RuntimeException("Failed to creat temp vts-runner-log directory");
-        }
-
-        long timeout = mMaxTestTimeout;
-        if (mMaxTestTimeout < mTestTimeout) {
-            // The Python runner will receive 2 interrupts.
-            // Delay the 2nd one to avoid interrupting the runner's teardown procedure.
-            timeout = mTestTimeout + VtsPythonRunnerHelper.TEST_ABORT_TIMEOUT_MSECS;
-            CLog.w("max-test-timeout is less than test-timeout. Set max timeout to %dms.", timeout);
-        }
-
-        try {
-            String jsonFilePath = createVtsRunnerTestConfigJsonFile(vtsRunnerLogDir);
-
-            VtsPythonRunnerHelper vtsPythonRunnerHelper =
-                    createVtsPythonRunnerHelper(new File(mTestCaseDir));
-
-            List<String> cmd = new ArrayList<>();
-            cmd.add("python");
-            if (mTestCasePathType != null && mTestCasePathType.toLowerCase().equals("file")) {
-                String testScript = mTestCasePath;
-                if (!testScript.endsWith(".py")) {
-                    testScript += ".py";
-                }
-                cmd.add(testScript);
-            } else {
-                cmd.add("-m");
-                cmd.add(mTestCasePath.replace("/", "."));
-            }
-            cmd.add(jsonFilePath);
-
-            printToDeviceLogcatAboutTestModuleStatus("BEGIN");
-
-            CommandResult commandResult = new CommandResult();
-            String interruptMessage;
-
-            File stdOutFile = FileUtil.createTempFile("vts_python_runner_stdout", ".log");
-            File stdErrFile = FileUtil.createTempFile("vts_python_runner_stderr", ".log");
-
-            OutputStream stdOut = new FileOutputStream(stdOutFile);
-            OutputStream stdErr = new FileOutputStream(stdErrFile);
-            List<String> errorMsgs = new ArrayList<>();
-
-            try {
-                interruptMessage = vtsPythonRunnerHelper.runPythonRunner(
-                        cmd.toArray(new String[0]), commandResult, timeout, stdOut, stdErr);
-
-                if (commandResult != null) {
-                    CommandStatus commandStatus = commandResult.getStatus();
-                    if (commandStatus != CommandStatus.SUCCESS
-                            && commandStatus != CommandStatus.TIMED_OUT) {
-                        errorMsgs.add("Python process failed");
-                        // Log the last 2k bytes of stdOutFile and stdErrFile
-                        String skippedBytesMsg = "";
-                        long startOffset = 0;
-                        if (stdOutFile.length() > 2048) {
-                            startOffset = stdOutFile.length() - 2048;
-                            skippedBytesMsg = String.format(
-                                    "...... <%d bytes skipped> ......\n", startOffset);
-                        }
-                        errorMsgs.add(String.format("Command stdout: %s%s", skippedBytesMsg,
-                                FileUtil.readStringFromFile(stdOutFile, startOffset, 2048)));
-                        skippedBytesMsg = "";
-                        startOffset = 0;
-                        if (stdErrFile.length() > 2048) {
-                            startOffset = stdErrFile.length() - 2048;
-                            skippedBytesMsg = String.format(
-                                    "...... <%d bytes skipped> ......\n", startOffset);
-                        }
-                        errorMsgs.add(String.format("Command stderr: %s%s", skippedBytesMsg,
-                                FileUtil.readStringFromFile(stdErrFile, startOffset, 2048)));
-                        errorMsgs.add("Command status: " + commandStatus);
-                    }
-                }
-            } finally {
-                StreamUtil.close(stdOut);
-                StreamUtil.close(stdErr);
-                listener.testLog(stdOutFile.getName(), LogDataType.TEXT,
-                        new FileInputStreamSource(stdOutFile));
-                listener.testLog(stdErrFile.getName(), LogDataType.TEXT,
-                        new FileInputStreamSource(stdErrFile));
-                FileUtil.deleteFile(stdOutFile);
-                FileUtil.deleteFile(stdErrFile);
-            }
-
-            // parse from test_run_summary.json instead of stdout
-            File testRunSummary = getFileTestRunSummary(vtsRunnerLogDir);
-            if (testRunSummary == null) {
-                errorMsgs.add("Couldn't locate the file : " + TEST_RUN_SUMMARY_FILE_NAME);
-            } else {
-                JSONObject object = null;
-                try {
-                    String jsonData = FileUtil.readStringFromFile(testRunSummary);
-                    CLog.d("Test Result Summary: %s", jsonData);
-                    object = new JSONObject(jsonData);
-                    parser.processJsonFile(object);
-                } catch (IOException | JSONException e) {
-                    errorMsgs.add("Error occurred in parsing Json file " + testRunSummary.toPath());
-                    CLog.e(e);
-                }
-                try {
-                    JSONObject planObject = object.getJSONObject(TESTMODULE);
-                    String test_module_name = planObject.getString("Name");
-                    long test_module_timestamp = planObject.getLong("Timestamp");
-                    AddTestModuleKeys(test_module_name, test_module_timestamp);
-                } catch (JSONException e) {
-                    // Do not report this as part of errorMsgs. These are optional metadata
-                    CLog.e(e);
-                }
-            }
-
-            if (errorMsgs.size() > 0) {
-                CLog.e(String.join(".\n", errorMsgs));
-                listener.testRunFailed(String.join(".\n", errorMsgs));
-                listener.testRunEnded(System.currentTimeMillis() - methodStartTime,
-                        new HashMap<String, Metric>());
-            }
-
-            printToDeviceLogcatAboutTestModuleStatus("END");
-            if (interruptMessage != null) {
-                throw new RuntimeException(interruptMessage);
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            try {
-                mOutputUtil.ZipVtsRunnerOutputDir(vtsRunnerLogDir);
-
-                if (mEnableDashboardUploading) {
-                    File reportMsg = FileUtil.findFile(vtsRunnerLogDir, REPORT_MESSAGE_FILE_NAME);
-                    CLog.d("Report message path: %s", reportMsg);
-                    if (reportMsg == null) {
-                        CLog.e("Cannot find report message proto file.");
-                    } else if (reportMsg.length() > 0) {
-                        CLog.i("Uploading report message. File size: %s", reportMsg.length());
-                        VtsDashboardUtil dashboardUtil = new VtsDashboardUtil(configReader);
-                        dashboardUtil.Upload(reportMsg.getAbsolutePath());
-                    }
-                }
-            } finally {
-                CLog.d("Deleted the runner log dir, %s.", vtsRunnerLogDir);
-                FileUtil.recursiveDelete(vtsRunnerLogDir);
-            }
-            // If the framework was disabled in python, make sure we re-enable it no matter what.
-            // The python side never re-enable the framework.
-            if (mBinaryTestDisableFramework || mDisableFramework) {
-                for (ITestDevice device : mInvocationContext.getDevices()) {
-                    device.executeShellCommand("start");
-                }
-            }
-        }
-        for (ITestDevice device : mInvocationContext.getDevices()) {
-            device.waitForDeviceAvailable();
-        }
-    }
-
-    /**
-     * This method return the file test_run_summary.json which is then used to parse logs.
-     *
-     * @param logDir : The file that needs to be converted
-     * @return the file named test_run_summary.json
-     * @throws IllegalArgumentException
-     */
-    private File getFileTestRunSummary(File logDir) throws IllegalArgumentException {
-        File[] children;
-        if (logDir == null) {
-            throw new IllegalArgumentException("Argument logDir is null.");
-        }
-        children = logDir.listFiles();
-        if (children != null) {
-            for (File child : children) {
-                if (!child.isDirectory()) {
-                    if (child.getName().equals(TEST_RUN_SUMMARY_FILE_NAME)) {
-                        return child;
-                    }
-                } else {
-                    File file = getFileTestRunSummary(child);
-                    if (file != null) {
-                        return file;
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Set the path for android-vts10/testcases/ which keeps the VTS python code under vts.
-     */
-    private void setTestCaseDir() {
-        try {
-            mTestCaseDir = mBuildHelper.getTestsDir().getAbsolutePath();
-        } catch (FileNotFoundException e) {
-            CLog.e("Cannot get testcase dir. Tests may not run correctly.");
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setAbi(IAbi abi){
-        mAbi = abi;
-    }
-
-    /**
-     * Creates a {@link VtsPythonRunnerHelper}.
-     */
-    @VisibleForTesting
-    protected VtsPythonRunnerHelper createVtsPythonRunnerHelper(File workingDir) {
-        return new VtsPythonRunnerHelper(mBuildInfo, workingDir);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParser.java b/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParser.java
deleted file mode 100644
index 62ac86c..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParser.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.ddmlib.testrunner.ITestRunListener;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-import com.android.tradefed.result.TestDescription;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * Interprets the output of tests run with Python's unit test framework and translates it into
- * calls on a series of {@link ITestRunListener}s. Output from these tests follows this
- * EBNF grammar:
- */
-public class VtsMultiDeviceTestResultParser {
-
-    // Parser state
-    String[] mAllLines;
-    String mCurrentLine;
-    int mLineNum;
-    ParserState mCurrentParseState = ParserState.TEST_CASE_ENTRY;
-
-    // Current test state
-    String mTestClass;
-    TestDescription mCurrentTestId;
-    String mCurrentTraceback;
-    long mTotalElapsedTime = 0;
-
-    // General state
-    private Map<TestDescription, String> mTestResultCache;
-    private final Collection<ITestLifeCycleReceiver> mListeners;
-    private String mRunName = null;
-    private String mCurrentTestName = null;
-    private int mTotalTestCount = 0;
-
-    // Variables to keep track of state for unit test
-    private int mNumTestsRun = 0;
-    private int mNumTestsExpected = 1;
-
-    // Constant tokens that appear in the result grammar.
-    static final String CASE_OK = "ok";
-    static final String RUN_OK = "OK";
-    static final String RUN_FAILED = "FAILED";
-    static final String TEST_CASE = "[Test Case]";
-    static final String PASS = "PASS";
-    static final String FAIL = "FAIL";
-    static final String TIMEOUT = "TIMEOUT";
-    static final String SKIP = "SKIP";
-    static final String ERROR = "ERROR";
-    static final String END_PATTERN = "<==========";
-    static final String BEGIN_PATTERN = "==========>";
-
-    // constants for parsing json file
-    static final String RESULTS = "Results";
-    static final String BEGIN_TIME = "Begin Time";
-    static final String DETAILS = "Details";
-    static final String TABLES = "Tables";
-    static final String END_TIME = "End Time";
-    static final String TEST_CLASS = "Test Class";
-    static final String TEST_NAME = "Test Name";
-    static final String RESULT = "Result";
-    static final String CLASS_ERRORS = "Class Errors";
-
-    // default message for test failure
-    static final String UNKNOWN_ERROR = "Unknown error.";
-    static final String UNKNOWN_FAILURE = "Unknown failure.";
-    static final String UNKNOWN_TIMEOUT = "Unknown timeout.";
-
-    // Enumeration for parser state.
-    static enum ParserState {
-        TEST_CASE_ENTRY,
-        COMPLETE,
-        TEST_RUN
-    }
-
-    private class PythonUnitTestParseException extends Exception {
-        public PythonUnitTestParseException(String reason) {
-            super(reason);
-        }
-    }
-
-    public VtsMultiDeviceTestResultParser(ITestLifeCycleReceiver listener, String runName) {
-        mListeners = new ArrayList<>(1);
-        mListeners.add(listener);
-        mRunName = runName;
-        mTestResultCache = new HashMap<>();
-    }
-
-    public void processNewLines(String[] lines) {
-        init(lines);
-
-        // extract the test class name if pattern matches for the first line
-        String[] toks = mCurrentLine.split(" ");
-        if (toks.length < 3 || !toks[toks.length - 1].equals(END_PATTERN) || !toks[toks.length - 3].
-                equals(BEGIN_PATTERN)) {
-            try {
-                parseError(BEGIN_PATTERN);
-            } catch (PythonUnitTestParseException e) {
-                e.printStackTrace();
-            }
-        } else {
-            mTestClass = toks[toks.length - 2];
-        }
-
-        // parse all lines
-        for (String line : lines) {
-            if (line.length() == 0 || !line.contains(TEST_CASE)) {
-                continue;
-            }
-            mCurrentLine = line;
-            try {
-                parse();
-            } catch (PythonUnitTestParseException e) {
-                e.printStackTrace();
-            }
-        }
-
-        // current state should not be in TEST_RUN state; if it's then mark for timeout.
-        if (mCurrentParseState.equals(ParserState.TEST_RUN)) {
-            markTestTimeout();
-        }
-        summary(lines);
-        completeTestRun();
-        mNumTestsRun++;
-    }
-
-    /**
-     * Called by parent when adb session is complete.
-     */
-    public void done() {
-        if (mNumTestsRun < mNumTestsExpected) {
-            handleTestRunFailed(String.format("Test run failed. Expected %d tests, received %d",
-                    mNumTestsExpected, mNumTestsRun));
-        }
-    }
-
-    /**
-     * Process an instrumentation run failure
-     *
-     * @param errorMsg The message to output about the nature of the error
-     */
-    private void handleTestRunFailed(String errorMsg) {
-        errorMsg = (errorMsg == null ? "Unknown error" : errorMsg);
-        CLog.e(String.format("Test run failed: %s", errorMsg));
-
-        Map<String, String> emptyMap = Collections.emptyMap();
-        for (ITestLifeCycleReceiver listener : mListeners) {
-            listener.testFailed(mCurrentTestId, FAIL);
-            listener.testEnded(mCurrentTestId, emptyMap);
-        }
-
-        // Report the test run failed
-        for (ITestLifeCycleReceiver listener : mListeners) {
-            listener.testRunFailed(errorMsg);
-        }
-    }
-
-    void init(String[] lines) {
-        mAllLines = lines;
-        mLineNum = 0;
-        mCurrentLine = mAllLines[0];
-    }
-
-    /**
-     * This method parses individual lines and calls functions based on the parsing state.
-     * @throws PythonUnitTestParseException
-     */
-    void parse() throws PythonUnitTestParseException {
-        try {
-            switch(mCurrentParseState) {
-                case TEST_CASE_ENTRY:
-                    registerTest();
-                    mCurrentParseState = ParserState.TEST_RUN;
-                    break;
-                case TEST_RUN:
-                    if (testRun()) {
-                        mCurrentParseState = ParserState.COMPLETE;
-                    } else {
-                        // incomplete test due to timeout.
-                        mCurrentParseState = ParserState.TEST_CASE_ENTRY;
-                        parse();
-                    }
-                    break;
-                case COMPLETE:
-                    mCurrentParseState = ParserState.TEST_CASE_ENTRY;
-                    parse();
-                    break;
-                default:
-                    break;
-            }
-        } catch (ArrayIndexOutOfBoundsException e) {
-            CLog.d("Underlying error in testResult: " + e);
-            throw new PythonUnitTestParseException("FailMessage");
-        }
-    }
-
-    /**
-     * This is called whenever the parser state is {@link ParserState#TEST_RUN}
-     */
-    private boolean testRun() {
-        // process the test case
-        String[] toks = mCurrentLine.split(" ");
-        // check the last token
-        String lastToken = toks[toks.length - 1];
-        if (lastToken.equals(PASS)){
-            markTestSuccess();
-            return true;
-        } else if (lastToken.equals(FAIL)){
-            markTestFailure();
-            return true;
-        } else if (lastToken.equals(SKIP)){
-            // SKIP is not a recognized test type in TradeFed.
-            return true;
-        } else {
-            markTestTimeout();
-            return false;
-        }
-    }
-
-    /**
-     * This method is called when parser is at {@link ParserState#TEST_CASE_ENTRY}} stage and
-     * this registers a new test case.
-     */
-    private void registerTest() {
-        // process the test case
-        String[] toks = mCurrentLine.split(" ");
-        mCurrentTestName = toks[toks.length - 1];
-        mCurrentTestId = new TestDescription(mTestClass, mCurrentTestName);
-        mTotalTestCount++;
-    }
-    /**
-     * Called at the end of the parsing to calculate the {@link #mTotalElapsedTime}
-     *
-     * @param lines The corresponding logs.
-     */
-    void summary(String[] lines) {
-        if (lines == null || lines.length == 0) {
-            mTotalElapsedTime = 0;
-            return;
-        }
-
-        Date startDate = getDate(lines, true);
-        Date endDate = getDate(lines, false);
-
-        if (startDate == null || endDate == null) {
-            mTotalElapsedTime = 0;
-            return;
-        }
-        mTotalElapsedTime = endDate.getTime() - startDate.getTime();
-    }
-
-    /**
-     * Return the time in milliseconds to calculate the time elapsed in a particular test.
-     *
-     * @param lines The logs that need to be parsed.
-     * @param calculateStartDate flag which is true if we need to calculate start date.
-     * @return {Date} the start and end time corresponding to a test.
-     */
-    private Date getDate(String[] lines, boolean calculateStartDate) {
-        Date date = null;
-        int begin = calculateStartDate ? 0 : lines.length - 1;
-        int diff = calculateStartDate ? 1 : -1;
-
-        for (int index = begin; index >= 0 && index < lines.length; index += diff) {
-            lines[index].trim();
-            String[] toks = lines[index].split(" ");
-
-            // set the start time from the first line
-            // the loop should continue if exception occurs, else it can break
-            if (toks.length < 3) {
-                continue;
-            }
-            String time = toks[2];
-            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
-            try {
-                date = sdf.parse(time);
-            } catch (ParseException e) {
-                continue;
-            }
-            break;
-        }
-        return date;
-    }
-
-    boolean completeTestRun() {
-        for (ITestLifeCycleReceiver listener : mListeners) {
-            // do testRunStarted
-            listener.testRunStarted(mCurrentTestName, mTotalTestCount);
-
-            // mark each test passed or failed
-            for (Entry<TestDescription, String> test : mTestResultCache.entrySet()) {
-                listener.testStarted(test.getKey());
-                if (test.getValue() == PASS) {
-                    listener.testEnded(test.getKey(), Collections.<String, String>emptyMap());
-                } else if (test.getValue() == TIMEOUT) {
-                    listener.testFailed(test.getKey(), test.getValue());
-                    // Always call testEnded at the end of the test case
-                    listener.testEnded(test.getKey(), Collections.emptyMap());
-                } else if (test.getValue() == SKIP) {
-                    listener.testAssumptionFailure(test.getKey(), test.getValue());
-                    // Always call testEnded at the end of the test case
-                    listener.testEnded(test.getKey(), Collections.emptyMap());
-                } else {
-                    listener.testFailed(test.getKey(), test.getValue());
-                    // Always call testEnded at the end of the test case
-                    listener.testEnded(test.getKey(), Collections.emptyMap());
-                }
-            }
-            listener.testRunEnded(mTotalElapsedTime, Collections.<String, String>emptyMap());
-        }
-        return true;
-    }
-
-    private static void printJsonTable(String name, JSONArray table) throws JSONException {
-        ArrayList<Integer> columnLength = new ArrayList<Integer>();
-        for (int rowIndex = 0; rowIndex < table.length(); rowIndex++) {
-            JSONArray row = table.getJSONArray(rowIndex);
-            for (int colIndex = 0; colIndex < row.length(); colIndex++) {
-                if (columnLength.size() == colIndex) {
-                    columnLength.add(1);
-                }
-                if (!row.isNull(colIndex)) {
-                    int len = row.getString(colIndex).length();
-                    if (columnLength.get(colIndex) < len) {
-                        columnLength.set(colIndex, len);
-                    }
-                }
-            }
-        }
-        StringBuilder sb = new StringBuilder(name + "\n");
-        for (int rowIndex = 0; rowIndex < table.length(); rowIndex++) {
-            JSONArray row = table.getJSONArray(rowIndex);
-            for (int colIndex = 0; colIndex < row.length(); colIndex++) {
-                String cell = row.isNull(colIndex) ? "" : row.getString(colIndex);
-                if (colIndex > 0) {
-                    sb.append("  ");
-                }
-                int padLength = columnLength.get(colIndex) - cell.length();
-                for (int padCount = 0; padCount < padLength; padCount++) {
-                    sb.append(" ");
-                }
-                sb.append(cell);
-            }
-            sb.append("\n");
-        }
-        CLog.d("JSON table: %s", sb.toString());
-    }
-
-    /**
-     * This method parses the json object and summarizes the test result through listener.
-     * @param object
-     * @throws RuntimeException
-     */
-    public void processJsonFile(JSONObject object) throws RuntimeException {
-        try {
-            JSONArray results = object.getJSONArray(RESULTS);
-            if (results == null) {
-                results = new JSONArray();
-            }
-            for (ITestLifeCycleReceiver listener : mListeners) {
-                long elapsedTime;
-                if (results.length() > 0) {
-                    long firstBeginTime = (long) results.getJSONObject(0).get(BEGIN_TIME);
-                    long lastEndTime =
-                            (long) results.getJSONObject(results.length() - 1).get(END_TIME);
-                    elapsedTime = lastEndTime - firstBeginTime;
-                } else {
-                    elapsedTime = 0;
-                    CLog.e("JSONArray is null.");
-                }
-
-                int nNonSkippedTests = 0;
-                for (int index = 0; index < results.length(); index++) {
-                    JSONObject resultObject = results.getJSONObject(index);
-                    String result = (String) resultObject.get(RESULT);
-                    if (!result.equals(SKIP)) {
-                        nNonSkippedTests++;
-                    }
-                }
-
-                listener.testRunStarted(mRunName, nNonSkippedTests);
-
-                for (int index = 0; index < results.length(); index++) {
-                    JSONObject resultObject = results.getJSONObject(index);
-                    String result = (String) resultObject.get(RESULT);
-                    String testClass = (String) resultObject.get(TEST_CLASS);
-                    String testName = (String) resultObject.get(TEST_NAME);
-                    long beginTime = (long) results.getJSONObject(index).get(BEGIN_TIME);
-                    long endTime = (long) results.getJSONObject(index).get(END_TIME);
-                    String details =
-                            resultObject.isNull(DETAILS) ? "" : resultObject.getString(DETAILS);
-
-                    // mark test started
-                    TestDescription TestDescription = new TestDescription(testClass, testName);
-
-                    /* SKIP is not recognized in TF. Does not report result instead. */
-                    if (!result.equals(SKIP)) {
-                        listener.testStarted(TestDescription, beginTime);
-
-                        switch (result) {
-                            case PASS:
-                                break;
-                            case ERROR:
-                                /* Error is reported by the VTS runner when an unexpected exception
-                                   happened during test execution. It could be due to: a framework
-                                   bug, an unhandled I/O, a TCP error, or a bug in test module or
-                                   template execution code. Error thus does not necessarily indicate
-                                   a test failure or a bug in device implementation. Since error is
-                                   not yet recognized in TF, it is converted to FAIL. */
-                            case TIMEOUT:
-                                /* Timeout is not recognized in TF. Use FAIL instead. */
-                            case FAIL:
-                                /* Indicates a test failure. */
-                                listener.testFailed(TestDescription,
-                                        details.isEmpty() ? UNKNOWN_FAILURE : details);
-                                break;
-                            default:
-                                listener.testFailed(TestDescription,
-                                        "Internal error: Cannot recognize test result type. Details: "
-                                                + details);
-                                break;
-                        }
-
-                        listener.testEnded(TestDescription, endTime, Collections.emptyMap());
-                    }
-
-                    if (!resultObject.isNull(TABLES)) {
-                        JSONObject tables = resultObject.getJSONObject(TABLES);
-                        Iterator<String> iter = tables.keys();
-                        while (iter.hasNext()) {
-                            String key = iter.next();
-                            printJsonTable(key, tables.getJSONArray(key));
-                        }
-                    }
-                }
-
-                if (!object.isNull(CLASS_ERRORS)) {
-                    listener.testRunFailed(object.getString(CLASS_ERRORS));
-                }
-                listener.testRunEnded(elapsedTime, Collections.<String, String>emptyMap());
-            }
-        } catch (JSONException e) {
-            CLog.e("Exception occurred: %s", e);
-        }
-    }
-
-    /**
-     * This is called whenever the program encounters unexpected tokens in parsing.
-     *
-     * @param expected The string that was expected.
-     * @throws PythonUnitTestParseException
-     */
-    private void parseError(String expected)
-            throws PythonUnitTestParseException {
-        throw new PythonUnitTestParseException(
-                String.format("Expected \"%s\" on line %d, found %s instead",
-                        expected, mLineNum + 1, mCurrentLine));
-    }
-
-    private void markTestSuccess() {
-        mTestResultCache.put(mCurrentTestId, PASS);
-    }
-
-    private void markTestFailure() {
-        mTestResultCache.put(mCurrentTestId, FAIL);
-    }
-
-    /**
-     * This method is called whenever the current test doesn't finish as expected and runs out
-     * of time.
-     */
-    private void markTestTimeout() {
-        mTestResultCache.put(mCurrentTestId, TIMEOUT);
-    }
-
-    public boolean isCancelled() {
-        return false;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/CmdUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/CmdUtil.java
deleted file mode 100644
index 9d3aa0e..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/CmdUtil.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import com.android.annotations.VisibleForTesting;
-import com.android.ddmlib.CollectingOutputReceiver;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-
-import java.util.Vector;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-public class CmdUtil {
-    public static final int MAX_RETRY_COUNT = 10;
-    static final int DELAY_BETWEEN_RETRY_IN_SECS = 3;
-    static final long FRAMEWORK_START_TIMEOUT = 1000 * 60 * 2; // 2 minutes.
-    static final String BOOTCOMPLETE_PROP = "dev.bootcomplete";
-
-    // An interface to wait with delay. Used for testing purpose.
-    public interface ISleeper { public void sleep(int seconds) throws InterruptedException; }
-    private ISleeper mSleeper = null;
-
-    /**
-     * Helper method to retry given cmd until the expected results are satisfied.
-     * An example usage it to retry 'lshal' until the expected hal service appears.
-     *
-     * @param device testing device.
-     * @param cmd the command string to be executed on device.
-     * @param predicate function that checks the exit condition.
-     * @return true if the exit condition is satisfied, false otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    public boolean waitCmdResultWithDelay(ITestDevice device, String cmd,
-            Predicate<String> predicate) throws DeviceNotAvailableException {
-        for (int count = 0; count < MAX_RETRY_COUNT; count++) {
-            if (validateCmdSuccess(device, cmd, predicate)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Helper method to retry a given set of commands, cmds.
-     *
-     * @param device testing device.
-     * @param cmds a vector of the command strings to be executed on device.
-     * @param validation_cmd the validation command string to be executed on device.
-     * @param predicate function that checks the exit condition.
-     * @return true if the exit condition is satisfied, false otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    public boolean retry(ITestDevice device, Vector<String> cmds, String validation_cmd,
-            Predicate<String> predicate) throws DeviceNotAvailableException {
-        if (cmds.isEmpty()) {
-            CLog.w("retry() called but cmd is an epmty vector.");
-            return false;
-        }
-        for (int count = 0; count < MAX_RETRY_COUNT; count++) {
-            for (String cmd : cmds) {
-                CLog.d("Running a command: %s", cmd);
-                String out = device.executeShellCommand(cmd);
-                CLog.d("Command output: %s", out);
-            }
-            if (validateCmdSuccess(device, validation_cmd, predicate)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Helper method to retry a given cmd.
-     *
-     * @param device testing device.
-     * @param cmd the command string to be executed on device.
-     * @param validation_cmd the validation command string to be executed on device.
-     * @param predicate function that checks the exit condition.
-     * @return true if the exit condition is satisfied, false otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    public boolean retry(ITestDevice device, String cmd, String validation_cmd,
-            Predicate<String> predicate) throws DeviceNotAvailableException {
-        return retry(device, cmd, validation_cmd, predicate, MAX_RETRY_COUNT);
-    }
-
-    /**
-     * Helper method to retry a given cmd.
-     *
-     * @param device testing device.
-     * @param cmd the command string to be executed on device.
-     * @param validation_cmd the validation command string to be executed on device.
-     * @param predicate function that checks the exit condition.
-     * @param retry_count the max number of times to try
-     * @return true if the exit condition is satisfied, false otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    public boolean retry(ITestDevice device, String cmd, String validation_cmd,
-            Predicate<String> predicate, int retry_count) throws DeviceNotAvailableException {
-        for (int count = 0; count < retry_count; count++) {
-            CLog.d("Running a command: %s", cmd);
-            device.executeShellCommand(cmd);
-            if (validateCmdSuccess(device, validation_cmd, predicate)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Validates the device status and waits if the validation fails.
-     *
-     * @param device testing device.
-     * @param cmd the command string to be executed on device.
-     * @param predicate function that checks the exit condition.
-     * @return true if the exit condition is satisfied, false otherwise.
-     * @throws DeviceNotAvailableException
-     */
-    protected boolean validateCmdSuccess(ITestDevice device, String cmd,
-            Predicate<String> predicate) throws DeviceNotAvailableException {
-        if (cmd == null) {
-            CLog.w("validateCmdSuccess() called but cmd is null");
-            return false;
-        }
-        String out = device.executeShellCommand(cmd);
-        CLog.d("validating cmd output: %s", out);
-        if (out != null && predicate.test(out)) {
-            CLog.d("Exit condition satisfied.");
-            return true;
-        } else {
-            CLog.d("Exit condition not satisfied. Waiting for %s more seconds.",
-                    DELAY_BETWEEN_RETRY_IN_SECS);
-            try {
-                if (mSleeper != null) {
-                    mSleeper.sleep(DELAY_BETWEEN_RETRY_IN_SECS);
-                } else {
-                    TimeUnit.SECONDS.sleep(DELAY_BETWEEN_RETRY_IN_SECS);
-                }
-            } catch (InterruptedException ex) {
-                /* pass */
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Restarts the Andriod framework and waits for the device boot completion.
-     *
-     * @param device the test device instance.
-     * @throws DeviceNotAvailableException
-     */
-    public void restartFramework(ITestDevice device) throws DeviceNotAvailableException {
-        device.executeShellCommand("stop");
-        setSystemProperty(device, BOOTCOMPLETE_PROP, "0");
-        device.executeShellCommand("start");
-        device.waitForDeviceAvailable(FRAMEWORK_START_TIMEOUT);
-    }
-
-    /**
-     * Gets a sysprop from the device.
-     *
-     * @param device the test device instance.
-     * @param name the name of a sysprop.
-     * @return the device sysprop value.
-     * @throws DeviceNotAvailableException
-     */
-    public String getSystemProperty(ITestDevice device, String name)
-            throws DeviceNotAvailableException {
-        CollectingOutputReceiver receiver = new CollectingOutputReceiver();
-        device.executeShellCommand(String.format("getprop %s", name), receiver);
-        return receiver.getOutput();
-    }
-
-    /**
-     * Sets a sysprop on the device.
-     *
-     * @param device the test device instance.
-     * @param name the name of a sysprop.
-     * @param value the value of a sysprop.
-     * @throws DeviceNotAvailableException
-     */
-    public void setSystemProperty(ITestDevice device, String name, String value)
-            throws DeviceNotAvailableException {
-        device.executeShellCommand(String.format("setprop %s %s", name, value));
-    }
-
-    @VisibleForTesting
-    void setSleeper(ISleeper sleeper) {
-        mSleeper = sleeper;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/EnvUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/EnvUtil.java
deleted file mode 100644
index 03c1b4b..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/EnvUtil.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-/**
- * Utility class to deal with system environment
- */
-public class EnvUtil {
-    static final String OS_NAME = "os.name";
-    static final String WINDOWS = "Windows"; // Not officially supported OS.
-
-    /**
-     * This method returns whether the OS is Windows.
-     */
-    public static boolean isOnWindows() {
-        return System.getProperty(OS_NAME).contains(WINDOWS);
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/JsonUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/JsonUtil.java
deleted file mode 100644
index 7b8247f..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/JsonUtil.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.util;
-
-import com.android.tradefed.log.LogUtil.CLog;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.Iterator;
-
-/**
- * A helper class for JSON related operations
- */
-public class JsonUtil {
-    /**
-     * Deep merge two JSONObjects.
-     * This method merge source JSONObject fields into the target JSONObject without overwriting.
-     * JSONArray will not be deep merged.
-     *
-     * @param target the target json object to merge
-     * @param source the source json object to read
-     * @throws JSONException
-     */
-    public static void deepMergeJsonObjects(JSONObject target, JSONObject source)
-            throws JSONException {
-        Iterator<String> iter = source.keys();
-        while (iter.hasNext()) {
-            String key = iter.next();
-            Object source_value = source.get(key);
-            Object target_value = null;
-            try {
-                target_value = target.get(key);
-            } catch (JSONException e) {
-                CLog.d("Merging Json key '%s' into target object.", key);
-                target.put(key, source_value);
-                continue;
-            }
-
-            if (JSONObject.class.isInstance(target_value)
-                    && JSONObject.class.isInstance(source_value)) {
-                deepMergeJsonObjects((JSONObject) target_value, (JSONObject) source_value);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/OutputUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/OutputUtil.java
deleted file mode 100644
index e524c6e..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/OutputUtil.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import com.android.tradefed.log.ITestLogger;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.result.FileInputStreamSource;
-import com.android.tradefed.result.LogDataType;
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Set;
-
-/**
- * Utility class to add output file to TradeFed log directory.
- */
-public class OutputUtil {
-    // Test logger object from test invocation
-    ITestLogger mListener;
-    private String mTestModuleName = null;
-    private String mAbiName = null;
-
-    public OutputUtil(ITestLogger listener) {
-        mListener = listener;
-    }
-
-    /**
-     * Collect all VTS python runner log output files as a single zip file
-     * @param logDirectory
-     */
-    public void ZipVtsRunnerOutputDir(File logDirectory) {
-        try {
-            Set<String> latest = FileUtil.findFiles(logDirectory, "latest");
-            if (latest.isEmpty()) {
-                CLog.e("Empty python log directory: %s", logDirectory);
-                return;
-            }
-
-            File tmpZip = ZipUtil.createZip(
-                    Arrays.asList(new File(latest.iterator().next()).listFiles()));
-            String outputFileName = "module_" + mTestModuleName + "_output_files_" + mAbiName;
-            try (FileInputStreamSource inputSource = new FileInputStreamSource(tmpZip, true)) {
-                mListener.testLog(outputFileName, LogDataType.ZIP, inputSource);
-            }
-        } catch (IOException e) {
-            CLog.e("Error processing python module output directory: %s", logDirectory);
-            CLog.e(e);
-        }
-    }
-
-    /**
-     * @param testModuleName
-     */
-    public void setTestModuleName(String testModuleName) {
-        mTestModuleName = testModuleName;
-    }
-
-    /**
-     * @param abiName
-     */
-    public void setAbiName(String abiName) {
-        mAbiName = abiName;
-    }
-}
\ No newline at end of file
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/ProcessHelper.java b/harnesses/tradefed/src/com/android/tradefed/util/ProcessHelper.java
deleted file mode 100644
index 2156e56..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/ProcessHelper.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.util;
-
-import com.android.tradefed.log.LogUtil.CLog;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
-
-/**
- * A helper for interruptible process execution.
- */
-public class ProcessHelper {
-    // Timeout values of destroying the process.
-    private static final int DESTROY_PROCESS_MAX_POLL_COUNT = 3;
-    private static final long DESTROY_PROCESS_POLL_INTERVAL_MSECS = 500;
-    private static final String DEBUG = "DEBUG";
-    private static final String INFO = "INFO";
-    private static final String WARN = "WARN";
-    private static final String ERROR = "ERROR";
-
-    // Timeout value of joining the stdout and stderr threads.
-    private static final int THREAD_JOIN_TIMEOUT_MSECS = 1000;
-
-    // The process being monitored.
-    private final Process mProcess;
-
-    // The stdout and stderr of the process.
-    private final Reader mStdoutReader;
-    private final Reader mStderrReader;
-
-    // The threads redirecting the stdout and stderr to buffers.
-    private final ReaderThread mStdoutThread;
-    private final ReaderThread mStderrThread;
-
-    // The buffers of stdout and stderr.
-    private final StringBuilder mStdout;
-    private final StringBuilder mStderr;
-
-    // The stdin of the process.
-    private final Writer mStdinWriter;
-
-    /**
-     * A thread that keeps reading string from an input stream.
-     */
-    static class ReaderThread extends Thread {
-        private static final int BUF_SIZE = 16 * 1024;
-        private Reader mReader;
-        private StringBuilder mBuffer;
-
-        static enum LogType {
-            STDOUT,
-            STDERR;
-        }
-
-        private LogType mLogType;
-
-        /**
-         * @param reader the input stream to read from.
-         * @param buffer the buffer containing the input data.
-         * @param name the name of the thread.
-         * @param logType enum, type of log output.
-         */
-        public ReaderThread(Reader reader, StringBuilder buffer, String name, LogType logType) {
-            super(name);
-            mReader = reader;
-            mBuffer = buffer;
-            mLogType = logType;
-        }
-
-        /**
-         * Read string from the input stream until EOF.
-         */
-        @Override
-        public void run() {
-            char[] charBuffer = new char[BUF_SIZE];
-            // reader will be closed in cleanUp()
-            try {
-                String currentLogLevel = INFO;
-                while (true) {
-                    int readCount = mReader.read(charBuffer, 0, charBuffer.length);
-                    if (readCount < 0) {
-                        break;
-                    }
-                    String newRead = new String(charBuffer, 0, readCount);
-
-                    int newLineLen = 0;
-                    if (newRead.endsWith("\r\n")) {
-                        newLineLen = 2;
-                    } else if (newRead.endsWith("\n")) {
-                        newLineLen = 1;
-                    }
-
-                    String newReadPrint = newRead.substring(0, newRead.length() - newLineLen);
-                    switch (mLogType) {
-                        case STDOUT:
-                            // Logs coming from stdout for the process, which may contain
-                            // python DEBUG and ERROR logs.
-                            String[] tokens = newReadPrint.split("\\s+");
-                            if (tokens.length >= 4) {
-                                String level = tokens[3];
-                                switch (tokens[3]) {
-                                    case DEBUG:
-                                    case INFO:
-                                    case WARN:
-                                    case ERROR:
-                                        currentLogLevel = level;
-                                        break;
-                                    default:
-                                        // Use the last known log level
-                                }
-                            }
-
-                            switch (currentLogLevel) {
-                                case DEBUG:
-                                    CLog.d(newReadPrint);
-                                    break;
-                                case INFO:
-                                    CLog.i(newReadPrint);
-                                    break;
-                                case WARN:
-                                    CLog.w(newReadPrint);
-                                    break;
-                                case ERROR:
-                                    CLog.e(newReadPrint);
-                                    break;
-                                default:
-                                    // This case should never happen
-                                    CLog.e("Error in current log level state.");
-                                    CLog.i(newReadPrint);
-                            }
-
-                            break;
-                        case STDERR:
-                            // Logs coming from stderr for the process, which is always
-                            // ERROR level
-                            CLog.e(newReadPrint);
-                            break;
-                    }
-                    mBuffer.append(newRead);
-                }
-            } catch (IOException e) {
-                CLog.e("IOException during ProcessHelper#ReaderThread run.");
-                CLog.e(e);
-            }
-        }
-    }
-
-    /**
-     * This class waits for a process. It is run by {@link IRunUtil}.
-     */
-    class VtsRunnable implements IRunUtil.IRunnableResult {
-        private boolean mCancelled = false;
-        private Thread mExecutionThread = null;
-        private final Object mLock = new Object();
-
-        /**
-         * @return whether the command is successful. {@link RunUtil} returns
-         * {@link CommandStatus#SUCCESS} or {@link CommandStatus#FAILED} according to the
-         * this return value.
-         */
-        @Override
-        public boolean run() {
-            synchronized (mLock) {
-                mExecutionThread = Thread.currentThread();
-                if (mCancelled) {
-                    CLog.w("Process was cancelled before being awaited.");
-                    return false;
-                }
-            }
-            boolean success;
-            try {
-                success = (mProcess.waitFor() == 0);
-                CLog.d("Process terminates normally.");
-            } catch (InterruptedException e) {
-                success = false;
-                CLog.e("Process is interrupted.");
-            }
-            return success;
-        }
-
-        /**
-         * This method makes {@link #run()} method stop waiting for the process. It can be called
-         * more than once. {@link RunUtil} calls this method if {@link CommandStatus} is TIMED_OUT
-         * or EXCEPTION.
-         */
-        @Override
-        public void cancel() {
-            CLog.w("Attempt to interrupt execution thread.");
-            synchronized (mLock) {
-                if (!mCancelled) {
-                    mCancelled = true;
-                    if (mExecutionThread != null) {
-                        mExecutionThread.interrupt();
-                    } else {
-                        CLog.d("Execution thread has not started.");
-                    }
-                } else {
-                    CLog.e("Execution thread has been cancelled.");
-                }
-            }
-        }
-
-        /**
-         * @return the thread of {@link #run()}; null if the thread has not started.
-         */
-        public Thread getExecutionThread() {
-            synchronized (mLock) {
-                return mExecutionThread;
-            }
-        }
-    }
-
-    /**
-     * Create an instance that monitors a running process.
-     *
-     * @param process the process to monitor.
-     */
-    public ProcessHelper(Process process) {
-        mProcess = process;
-        mStdout = new StringBuilder();
-        mStderr = new StringBuilder();
-        mStdinWriter = new OutputStreamWriter(mProcess.getOutputStream());
-        mStdoutReader = new InputStreamReader(mProcess.getInputStream());
-        mStderrReader = new InputStreamReader(mProcess.getErrorStream());
-        mStdoutThread = new ReaderThread(
-                mStdoutReader, mStdout, "process-helper-stdout", ReaderThread.LogType.STDOUT);
-        mStderrThread = new ReaderThread(
-                mStderrReader, mStderr, "process-helper-stderr", ReaderThread.LogType.STDERR);
-        mStdoutThread.start();
-        mStderrThread.start();
-    }
-
-    /**
-     * Wait for the process until termination, timeout, or interrupt.
-     *
-     * @param timeoutMsecs the time to wait in milliseconds.
-     * @return {@link CommandStatus#SUCCESS} or {@link CommandStatus#FAILED} if the process
-     * terminated. {@link CommandStatus#TIMED_OUT} if timeout. {@link CommandStatus#EXCEPTION} for
-     * other types of errors.
-     * @throws RunInterruptedException if TradeFed interrupts the test invocation.
-     */
-    public CommandStatus waitForProcess(long timeoutMsecs) throws RunInterruptedException {
-        VtsRunnable vtsRunnable = new VtsRunnable();
-        CommandStatus status;
-        // Use default RunUtil because it can receive the notification of "invocation stop".
-        try {
-            status = RunUtil.getDefault().runTimed(timeoutMsecs, vtsRunnable, true);
-        } catch (RunInterruptedException e) {
-            // clear the flag set by default RunUtil.
-            Thread.interrupted();
-            // RunUtil does not always call cancel() and join() when interrupted.
-            vtsRunnable.cancel();
-            Thread execThread = vtsRunnable.getExecutionThread();
-            if (execThread != null) {
-                joinThread(execThread, THREAD_JOIN_TIMEOUT_MSECS);
-            }
-            throw e;
-        }
-        if (CommandStatus.SUCCESS.equals(status) || CommandStatus.FAILED.equals(status)) {
-            // Join the receiver threads otherwise output might not be available yet.
-            joinThread(mStdoutThread, THREAD_JOIN_TIMEOUT_MSECS);
-            joinThread(mStderrThread, THREAD_JOIN_TIMEOUT_MSECS);
-        } else {
-            CLog.w("Process status is %s", status);
-        }
-        return status;
-    }
-
-    /**
-     * Write a string to stdin of the process.
-     *
-     * @param data the string.
-     * @throws IOException if the operation fails.
-     */
-    public void writeStdin(String data) throws IOException {
-        mStdinWriter.write(data);
-        mStdinWriter.flush();
-    }
-
-    /**
-     * Close stdin of the process.
-     *
-     * @throws IOException if the operation fails.
-     */
-    public void closeStdin() throws IOException {
-        mStdinWriter.close();
-    }
-
-    /**
-     * @return the stdout of the process. As the buffer is not thread safe, the caller must call
-     * {@link #cleanUp()} or {@link #waitForProcess(long)} to ensure process termination before
-     * calling this method.
-     */
-    public String getStdout() {
-        return mStdout.toString();
-    }
-
-    /**
-     * @return the stderr of the process. As the buffer is not thread safe, the caller must call
-     * {@link #cleanUp()} or {@link #waitForProcess(long)} to ensure process termination before
-     * calling this method.
-     */
-    public String getStderr() {
-        return mStderr.toString();
-    }
-
-    /**
-     * @return whether the process is running.
-     */
-    public boolean isRunning() {
-        try {
-            mProcess.exitValue();
-            return false;
-        } catch (IllegalThreadStateException e) {
-            return true;
-        }
-    }
-
-    /**
-     * Kill the process if it is running. Clean up all threads and streams.
-     */
-    public void cleanUp() {
-        try {
-            for (int pollCount = 0; isRunning(); pollCount++) {
-                if (pollCount >= DESTROY_PROCESS_MAX_POLL_COUNT) {
-                    CLog.e("Cannot destroy the process.");
-                    break;
-                }
-                if (pollCount == 0) {
-                    CLog.w("Kill the running process.");
-                    mProcess.destroy();
-                } else {
-                    Thread.sleep(DESTROY_PROCESS_POLL_INTERVAL_MSECS);
-                }
-            }
-        } catch (InterruptedException e) {
-            CLog.e(e);
-        }
-        try {
-            closeStdin();
-        } catch (IOException e) {
-            CLog.e(e);
-        }
-        try {
-            mStdoutReader.close();
-        } catch (IOException e) {
-            CLog.e(e);
-        }
-        try {
-            mStderrReader.close();
-        } catch (IOException e) {
-            CLog.e(e);
-        }
-        joinThread(mStdoutThread, THREAD_JOIN_TIMEOUT_MSECS);
-        joinThread(mStderrThread, THREAD_JOIN_TIMEOUT_MSECS);
-    }
-
-    /**
-     * Join a thread and log error.
-     *
-     * @param thread the thread to join.
-     * @param timeoutMsec the timeout in milliseconds.
-     * @return whether the thread is joined successfully.
-     */
-    private static boolean joinThread(Thread thread, long timeoutMsec) {
-        try {
-            thread.join(timeoutMsec);
-        } catch (InterruptedException e) {
-            CLog.e(e);
-        }
-        if (thread.isAlive()) {
-            CLog.e("Failed to join %s.", thread.getName());
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardApiTransport.java b/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardApiTransport.java
deleted file mode 100644
index 640ca74..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardApiTransport.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import com.google.api.client.http.ByteArrayContent;
-import com.google.api.client.http.FileContent;
-import com.google.api.client.http.GenericUrl;
-import com.google.api.client.http.HttpContent;
-import com.google.api.client.http.HttpHeaders;
-import com.google.api.client.http.HttpRequest;
-import com.google.api.client.http.HttpRequestFactory;
-import com.google.api.client.http.HttpResponse;
-import com.google.api.client.http.HttpTransport;
-import com.google.api.client.http.MultipartContent;
-import com.google.api.client.http.MultipartContent.Part;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.api.client.util.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.gson.Gson;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.time.Duration;
-import java.util.Map;
-
-/**
- * Http Client Class Library which is customized for dashboard using google http java client
- * Currently, this class support GET, POST method and media file upload.
- */
-public class VtsDashboardApiTransport {
-    /**
-     * The target API host url
-     */
-    private String API_URL = "";
-
-    /**
-     * The recommended concrete implementation HTTP transport library to use depends on what
-     * environment you are running in
-     */
-    private final HttpTransport httpTransport;
-
-    /**
-     * VtsDashboardApiTransport class constructor function.
-     */
-    public VtsDashboardApiTransport(HttpTransport httpTransport, String apiUrl) {
-        this.httpTransport = Preconditions.checkNotNull(httpTransport);
-        this.API_URL = apiUrl;
-    }
-
-    /**
-     * Upload file content through GET method.
-     *
-     * @param path The url path from API HOST.
-     * @param responseType The response class type.
-     * @return responseType Class will have mapped attributes from Json response.
-     * @throws IOException when http request is broken.
-     */
-    @SuppressWarnings("unchecked")
-    public <T> T get(String path, Type responseType) throws IOException {
-        HttpRequestFactory requestFactory = getHttpRequestFactory();
-
-        GenericUrl url = new GenericUrl(URI.create(API_URL + "/" + path));
-        try {
-            HttpRequest httpRequest = requestFactory.buildGetRequest(url);
-            HttpResponse response = httpRequest.execute();
-            return (T) response.parseAs(responseType);
-        } catch (IOException e) {
-            throw new IOException("Error running get API operation " + path, e);
-        }
-    }
-
-    /**
-     * Upload file content through POST method.
-     *
-     * @param path The url path from API HOST.
-     * @param request The request post data object.
-     * @param responseType The response class type.
-     * @return responseType Class will have mapped attributes from Json response.
-     * @throws IOException when http request is broken.
-     */
-    @SuppressWarnings("unchecked")
-    public <T> T post(String path, Object request, Type responseType) throws IOException {
-        HttpRequestFactory requestFactory = getHttpRequestFactory();
-
-        GenericUrl url = new GenericUrl(URI.create(API_URL + "/" + path));
-
-        HttpContent httpContent = new ByteArrayContent(
-                "application/json", new Gson().toJson(request).getBytes(Charsets.UTF_8));
-        try {
-            HttpRequest httpRequest = requestFactory.buildPostRequest(url, httpContent);
-            HttpResponse response = httpRequest.execute();
-            return (T) response.parseAs(responseType);
-        } catch (IOException e) {
-            throw new IOException("Error running post API operation " + path, e);
-        }
-    }
-
-    /**
-     * Upload file content through POST method.
-     *
-     * @param path The url path from API HOST.
-     * @param fileType The file type to upload.
-     * @param testFilePath The file path to upload.
-     * @return String Response body will be returned.
-     * @throws IOException when http request is broken.
-     */
-    public String postFile(String path, String fileType, String testFilePath) throws IOException {
-        HttpRequestFactory requestFactory = getHttpRequestFactory();
-
-        FileContent fileContent = new FileContent(fileType, new File(testFilePath));
-
-        GenericUrl url = new GenericUrl(URI.create(API_URL + "/" + path));
-        HttpRequest request = requestFactory.buildPostRequest(url, fileContent);
-
-        return request.execute().parseAsString();
-    }
-
-    /**
-     * Upload multiple files content through POST method.
-     *
-     * @param path The url path from API HOST.
-     * @param testFileMap The map for each file with file type.
-     * @return String Response body will be returned.
-     * @throws IOException when http request is broken.
-     */
-    public String postMultiFiles(String path, Map<String, String> testFileMap) throws IOException {
-        HttpRequestFactory requestFactory = getHttpRequestFactory();
-
-        MultipartContent multipartContent = new MultipartContent();
-        for (Map.Entry<String, String> entry : testFileMap.entrySet()) {
-            FileContent fileContent = new FileContent(entry.getKey(), new File(entry.getValue()));
-            Part part = new Part(fileContent);
-            part.setHeaders(new HttpHeaders().set("Content-Disposition",
-                    String.format(
-                            "form-data; name=\"content\"; filename=\"%s\"", entry.getValue())));
-            multipartContent.addPart(part);
-        }
-
-        GenericUrl url = new GenericUrl(URI.create(API_URL + "/" + path));
-        HttpRequest request = requestFactory.buildPostRequest(url, multipartContent);
-
-        return request.execute().parseAsString();
-    }
-
-    /**
-     * Get HttpRequestFactory instance with default options.
-     *
-     * @return HttpRequestFactory from google-http-java-client library with custom options.
-     */
-    protected HttpRequestFactory getHttpRequestFactory() {
-        return httpTransport.createRequestFactory(request -> {
-            request.setConnectTimeout((int) Duration.ofMinutes(1).toMillis());
-            request.setReadTimeout((int) Duration.ofMinutes(1).toMillis());
-            HttpHeaders httpHeaders = new HttpHeaders();
-            request.setHeaders(httpHeaders);
-            request.setParser(new JacksonFactory().createJsonObjectParser());
-        });
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardUtil.java
deleted file mode 100644
index b17c79a..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/VtsDashboardUtil.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.util;
-
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.vts.proto.VtsReportMessage.DashboardPostMessage;
-
-import com.google.api.client.auth.oauth2.Credential;
-import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
-import com.google.api.client.http.javanet.NetHttpTransport;
-import com.google.api.client.json.JsonFactory;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.common.base.Strings;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Uploads the VTS test plan execution result to the web DB using a RESTful API and an OAuth2
- * credential kept in a json file.
- */
-public class VtsDashboardUtil {
-    private static final String PLUS_ME = "https://www.googleapis.com/auth/plus.me";
-    private static final int BASE_TIMEOUT_MSECS = 1000 * 60;
-    private static VtsVendorConfigFileUtil mConfigReader;
-    private static final IRunUtil mRunUtil = new RunUtil();
-    private static VtsDashboardApiTransport vtsDashboardApiTransport;
-
-    public VtsDashboardUtil(VtsVendorConfigFileUtil configReader) {
-        mConfigReader = configReader;
-        try {
-            String apiUrl = mConfigReader.GetVendorConfigVariable("dashboard_api_host_url");
-            vtsDashboardApiTransport = new VtsDashboardApiTransport(new NetHttpTransport(), apiUrl);
-        } catch (NoSuchElementException e) {
-            CLog.w("Configure file not available.");
-        }
-    }
-
-    /**
-     * Returns an OAuth2 token string obtained using a service account json keyfile.
-     *
-     * Uses the service account keyfile located at config variable 'service_key_json_path'
-     * to request an OAuth2 token.
-     */
-    private String GetToken() {
-        String keyFilePath;
-        try {
-            keyFilePath = mConfigReader.GetVendorConfigVariable("service_key_json_path");
-        } catch (NoSuchElementException e) {
-            return null;
-        }
-
-        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
-        Credential credential = null;
-        try {
-            List<String> listStrings = new LinkedList<>();
-            listStrings.add(PLUS_ME);
-            credential = GoogleCredential.fromStream(new FileInputStream(keyFilePath))
-                                 .createScoped(listStrings);
-            credential.refreshToken();
-            return credential.getAccessToken();
-        } catch (FileNotFoundException e) {
-            CLog.e(String.format("Service key file %s doesn't exist.", keyFilePath));
-        } catch (IOException e) {
-            CLog.e(String.format("Can't read the service key file, %s", keyFilePath));
-        }
-        return null;
-    }
-
-    /**
-     * Uploads the given message to the web DB.
-     *
-     * @param message, DashboardPostMessage that keeps the result to upload.
-     */
-    public void Upload(DashboardPostMessage.Builder message) {
-        String dashboardCurlCommand =
-                mConfigReader.GetVendorConfigVariable("dashboard_use_curl_command");
-        Optional<String> dashboardCurlCommandOpt = Optional.of(dashboardCurlCommand);
-        Boolean curlCommandCheck = Boolean.parseBoolean(dashboardCurlCommandOpt.orElse("false"));
-        String token = GetToken();
-        if (token == null) {
-            return;
-        }
-        message.setAccessToken(token);
-        String messageFilePath = "";
-        try {
-            messageFilePath = WriteToTempFile(
-                    Base64.getEncoder().encodeToString(message.build().toByteArray()).getBytes());
-        } catch (IOException e) {
-            CLog.e("Couldn't write a proto message to a temp file.");
-        }
-
-        if (Strings.isNullOrEmpty(messageFilePath)) {
-            CLog.e("Couldn't get the MessageFilePath.");
-        } else {
-            if (curlCommandCheck) {
-                CurlUpload(messageFilePath);
-            } else {
-                Upload(messageFilePath);
-            }
-        }
-    }
-
-    /**
-     * Uploads the given message file path to the web DB using google http java api library.
-     *
-     * @param messageFilePath, DashboardPostMessage file path that keeps the result to upload.
-     */
-    public Boolean Upload(String messageFilePath) {
-        try {
-            String response = vtsDashboardApiTransport.postFile(
-                    "/api/datastore", "application/octet-stream", messageFilePath);
-            CLog.d(String.format("Upload Result : %s", response));
-            return true;
-        } catch (IOException e) {
-            CLog.e("Error occurred on uploading dashboard message file!");
-            CLog.e(e.getLocalizedMessage());
-            return false;
-        }
-    }
-
-    /**
-     * Uploads the given message file path to the web DB using curl command.
-     *
-     * @param messageFilePath, DashboardPostMessage file path that keeps the result to upload.
-     */
-    @Deprecated
-    public void CurlUpload(String messageFilePath) {
-        try {
-            String commandTemplate =
-                    mConfigReader.GetVendorConfigVariable("dashboard_post_command");
-            commandTemplate = commandTemplate.replace("{path}", messageFilePath);
-            // removes ', while keeping any substrings quoted by "".
-            commandTemplate = commandTemplate.replace("'", "");
-            CLog.d(String.format("Upload command: %s", commandTemplate));
-            List<String> commandList = new ArrayList<String>();
-            Matcher matcher = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(commandTemplate);
-            while (matcher.find()) {
-                commandList.add(matcher.group(1));
-            }
-            CommandResult c = mRunUtil.runTimedCmd(BASE_TIMEOUT_MSECS * 3,
-                    (String[]) commandList.toArray(new String[commandList.size()]));
-            if (c == null || c.getStatus() != CommandStatus.SUCCESS) {
-                CLog.e("Uploading the test plan execution result to GAE DB faiied.");
-                CLog.e("Stdout: %s", c.getStdout());
-                CLog.e("Stderr: %s", c.getStderr());
-            }
-            FileUtil.deleteFile(new File(messageFilePath));
-        } catch (NoSuchElementException e) {
-            CLog.e("dashboard_post_command unspecified in vendor config.");
-        }
-    }
-
-    /**
-     * Simple wrapper to write data to a temp file.
-     *
-     * @param data, actual data to write to a file.
-     * @throws IOException
-     */
-    private String WriteToTempFile(byte[] data) throws IOException {
-        File tempFile = File.createTempFile("tempfile", ".tmp");
-        String filePath = tempFile.getAbsolutePath();
-        FileOutputStream out = new FileOutputStream(filePath);
-        out.write(data);
-        out.close();
-        return filePath;
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/VtsPythonRunnerHelper.java b/harnesses/tradefed/src/com/android/tradefed/util/VtsPythonRunnerHelper.java
deleted file mode 100644
index 38d25d8..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/VtsPythonRunnerHelper.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * A helper class for executing VTS python scripts.
- */
-public class VtsPythonRunnerHelper {
-    // The timeout for the runner's teardown prodedure.
-    public static final long TEST_ABORT_TIMEOUT_MSECS = 1000 * 40;
-
-    static final String PATH = "PATH";
-    static final String PYTHONHOME = "PYTHONHOME";
-    static final String VTS = "vts";
-
-    // Python virtual environment root path
-    private File mVirtualenvPath;
-    protected IRunUtil mRunUtil;
-
-    public VtsPythonRunnerHelper(IBuildInfo buildInfo, File workingDir) {
-        this(buildInfo.getBuildAttributes().get(VtsPythonVirtualenvPreparer.VIRTUAL_ENV),
-                workingDir);
-    }
-
-    public VtsPythonRunnerHelper(String virtualEnvPath, File workingDir) {
-        this(virtualEnvPath == null ? null : new File(virtualEnvPath), workingDir);
-    }
-
-    public VtsPythonRunnerHelper(File virtualEnvPath, File workingDir) {
-        this(virtualEnvPath, workingDir, new RunUtil());
-    }
-
-    public VtsPythonRunnerHelper(File virtualEnvPath, File workingDir, IRunUtil runUtil) {
-        mVirtualenvPath = virtualEnvPath;
-        mRunUtil = runUtil;
-        activateVirtualenv(mRunUtil, getPythonVirtualEnv());
-        mRunUtil.setWorkingDir(workingDir);
-    }
-
-    /**
-     * Run VTS Python runner and handle interrupt from TradeFed.
-     *
-     * @param cmd the command to start VTS Python runner.
-     * @param commandResult the object containing the command result.
-     * @param timeout command timeout value.
-     * @return null if the command terminates or times out; a message string if the command is
-     * interrupted by TradeFed.
-     */
-    public String runPythonRunner(String[] cmd, CommandResult commandResult, long timeout) {
-        OutputStream stdOut = new ByteArrayOutputStream();
-        OutputStream stdErr = new ByteArrayOutputStream();
-        try {
-            return runPythonRunner(cmd, commandResult, timeout, stdOut, stdErr);
-        } finally {
-            try {
-                stdOut.close();
-                stdErr.close();
-                commandResult.setStdout(((ByteArrayOutputStream) stdOut).toString("UTF-8"));
-                commandResult.setStderr(((ByteArrayOutputStream) stdErr).toString("UTF-8"));
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    /**
-     * Run VTS Python runner and handle interrupt from TradeFed.
-     *
-     * @param cmd the command to start VTS Python runner.
-     * @param commandResult the object containing the command result.
-     * @param timeout command timeout value.
-     * @return null if the command terminates or times out; a message string if the command is
-     * interrupted by TradeFed.
-     */
-    public String runPythonRunner(String[] cmd, CommandResult commandResult, long timeout,
-            OutputStream stdOut, OutputStream stdErr) {
-        String interruptMessage;
-        CommandStatus commandStatus;
-        CommandResult result;
-        try {
-            result = mRunUtil.runTimedCmd(timeout, stdOut, stdErr, cmd);
-            commandStatus = result.getStatus();
-            interruptMessage = null;
-        } catch (RunInterruptedException e) {
-            CLog.e("Python process is interrupted.");
-            commandStatus = CommandStatus.TIMED_OUT;
-            interruptMessage = (e.getMessage() != null ? e.getMessage() : "");
-        }
-        commandResult.setStatus(commandStatus);
-        return interruptMessage;
-    }
-
-    /**
-     * Gets python bin directory path.
-     *
-     * This method will check the directory existence.
-     *
-     * @return python bin directory; null if not exist.
-     */
-    public static String getPythonBinDir(String virtualenvPath) {
-        if (virtualenvPath == null) {
-            return null;
-        }
-        String binDirName = EnvUtil.isOnWindows() ? "Scripts" : "bin";
-        File res = new File(virtualenvPath, binDirName);
-        if (!res.exists()) {
-            return null;
-        }
-        return res.getAbsolutePath();
-    }
-
-    /**
-     * Get python virtualenv path
-     * @return virutalenv path. null if doesn't exist
-     */
-    public String getPythonVirtualEnv() {
-        if (mVirtualenvPath == null) {
-            return null;
-        }
-        return mVirtualenvPath.getAbsolutePath();
-    }
-
-    /**
-     * Activate virtualenv for a RunUtil.
-     *
-     * This method will check for python bin directory existence
-     *
-     * @param runUtil
-     * @param virtualenvPath
-     */
-    public static void activateVirtualenv(IRunUtil runUtil, String virtualenvPath) {
-        String pythonBinDir = getPythonBinDir(virtualenvPath);
-        if (pythonBinDir == null || !new File(pythonBinDir).exists()) {
-            CLog.e("Invalid python virtualenv path. Using python from system path.");
-        } else {
-            String separater = EnvUtil.isOnWindows() ? ";" : ":";
-            runUtil.setEnvVariable(PATH, pythonBinDir + separater + System.getenv().get(PATH));
-            runUtil.setEnvVariable(VtsPythonVirtualenvPreparer.VIRTUAL_ENV, virtualenvPath);
-            runUtil.unsetEnvVariable(PYTHONHOME);
-        }
-    }
-}
diff --git a/harnesses/tradefed/src/com/android/tradefed/util/VtsVendorConfigFileUtil.java b/harnesses/tradefed/src/com/android/tradefed/util/VtsVendorConfigFileUtil.java
deleted file mode 100644
index 6495fd2..0000000
--- a/harnesses/tradefed/src/com/android/tradefed/util/VtsVendorConfigFileUtil.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.util;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.util.StreamUtil;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Util to access a VTS config file.
- */
-public class VtsVendorConfigFileUtil {
-    public static final String KEY_VENDOR_TEST_CONFIG_DEFAULT_TYPE =
-            "vts-vendor-config:default-type";
-    public static final String KEY_VENDOR_TEST_CONFIG_FILE_PATH = "vts-vendor-config:file-path";
-    public static final String VENDOR_TEST_CONFIG_DEFAULT_TYPE = "prod";
-    public static final String VENDOR_TEST_CONFIG_FILE_PATH_PROD =
-            "/config/vts-tradefed-vendor-config-prod.json";
-    public static final String VENDOR_TEST_CONFIG_FILE_PATH_TEST =
-            "/config/vts-tradefed-vendor-config-test.json";
-
-    private JSONObject vendorConfigJson = null;
-
-    // The path of a VTS vendor config file (format: json).
-    private String mVendorConfigFilePath = null;
-
-    // The default config file type, e.g., `prod` or `test`.
-    private String mDefaultType = VENDOR_TEST_CONFIG_DEFAULT_TYPE;
-
-    /**
-     * Returns the specified vendor config file path.
-     */
-    public String GetVendorConfigFilePath() {
-        if (mVendorConfigFilePath == null) {
-            if (mDefaultType.toLowerCase().equals(VENDOR_TEST_CONFIG_DEFAULT_TYPE)) {
-                mVendorConfigFilePath = VENDOR_TEST_CONFIG_FILE_PATH_PROD;
-            } else {
-                mVendorConfigFilePath = VENDOR_TEST_CONFIG_FILE_PATH_TEST;
-            }
-        }
-        return mVendorConfigFilePath;
-    }
-
-    /**
-     * Loads a VTS vendor config file.
-     *
-     * @param configPath, the path of a config file.
-     * @throws RuntimeException
-     */
-    public boolean LoadVendorConfig(String configPath) throws RuntimeException {
-        if (configPath == null || configPath.length() == 0) {
-            configPath = GetVendorConfigFilePath();
-        }
-        CLog.d("Loading vendor test config %s", configPath);
-        InputStream config = getClass().getResourceAsStream(configPath);
-        if (config == null) {
-            CLog.d("Vendor test config file %s does not exist", configPath);
-            return false;
-        }
-        try {
-            String content = StreamUtil.getStringFromStream(config);
-            if (content == null) {
-                CLog.e("Loaded vendor test config is empty");
-                return false;
-            }
-            CLog.d("Loaded vendor test config %s", content);
-            vendorConfigJson = new JSONObject(content);
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to read vendor config json file");
-        } catch (JSONException e) {
-            throw new RuntimeException("Failed to parse vendor config json data");
-        }
-        return true;
-    }
-
-    /**
-     * Loads a VTS vendor config file.
-     *
-     * @param defaultType, The default config file type, e.g., `prod` or `test`.
-     * @param vendorConfigFilePath, The path of a VTS vendor config file (format: json).
-     * @throws RuntimeException
-     */
-    public boolean LoadVendorConfig(String defaultType, String vendorConfigFilePath)
-            throws RuntimeException {
-        mDefaultType = defaultType;
-        mVendorConfigFilePath = vendorConfigFilePath;
-        return LoadVendorConfig("");
-    }
-
-    /**
-     * Loads a VTS vendor config file.
-     *
-     * @param defaultType, The default config file type, e.g., `prod` or `test`.
-     * @param vendorConfigFilePath, The path of a VTS vendor config file (format: json).
-     * @throws RuntimeException
-     */
-    public boolean LoadVendorConfig(IBuildInfo buildInfo) throws RuntimeException {
-        Map<String, String> attrs = buildInfo.getBuildAttributes();
-        if (attrs.containsKey(KEY_VENDOR_TEST_CONFIG_DEFAULT_TYPE)) {
-            mDefaultType = attrs.get(KEY_VENDOR_TEST_CONFIG_DEFAULT_TYPE);
-        } else {
-            CLog.d("No default vendor test configuration provided. Defaulting to prod.");
-        }
-        mVendorConfigFilePath = attrs.get(KEY_VENDOR_TEST_CONFIG_FILE_PATH);
-        return LoadVendorConfig(mDefaultType, mVendorConfigFilePath);
-    }
-
-    /**
-     * Gets the value of a config variable.
-     *
-     * @param varName, the name of a variable.
-     * @throws NoSuchElementException
-     */
-    public String GetVendorConfigVariable(String varName) throws NoSuchElementException {
-        if (vendorConfigJson == null) {
-            CLog.e("Vendor config json file invalid or not yet loaded.");
-            throw new NoSuchElementException("config is empty");
-        }
-        try {
-            return vendorConfigJson.getString(varName);
-        } catch (JSONException e) {
-            CLog.e("Vendor config file does not define %s", varName);
-            throw new NoSuchElementException("config parsing error");
-        }
-    }
-
-    /**
-     * Returns the current vendor config json object.
-     */
-    public JSONObject GetVendorConfigJson() {
-        return vendorConfigJson;
-    }
-}
diff --git a/harnesses/tradefed/tests/Android.bp b/harnesses/tradefed/tests/Android.bp
deleted file mode 100644
index 5e819f7..0000000
--- a/harnesses/tradefed/tests/Android.bp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2016 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.
-
-java_library_host {
-    name: "vts10-tradefed-tests",
-
-    srcs: ["src/**/*.java"],
-
-    static_libs: [
-        "easymock",
-        "mockito-host",
-        "objenesis",
-    ],
-    libs: [
-        "tradefed",
-        "vts10-tradefed",
-    ],
-    java_resource_dirs: ["res"],
-}
diff --git a/harnesses/tradefed/tests/res/testtype/test_run_summary_class_errors.json b/harnesses/tradefed/tests/res/testtype/test_run_summary_class_errors.json
deleted file mode 100644
index 602c53a..0000000
--- a/harnesses/tradefed/tests/res/testtype/test_run_summary_class_errors.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "Class Errors": "class error",
-    "Results": [
-        {
-            "Begin Time": 1525424790227,
-            "Details": "unit test",
-            "End Time": 1525424790227,
-            "Extra Errors": {},
-            "Extras": null,
-            "Result": "ERROR",
-            "Tables": {},
-            "Test Class": "SampleLightFuzzTest",
-            "Test Name": "testTurnOnLightBlackBoxFuzzing",
-            "UID": null
-        }
-    ],
-    "Summary": {
-        "Error": 1,
-        "Executed": 0,
-        "Failed": 0,
-        "Passed": 0,
-        "Requested": 1,
-        "Skipped": 0
-    },
-    "TestModule": {
-        "Name": null,
-        "Timestamp": null
-    }
-}
diff --git a/harnesses/tradefed/tests/res/testtype/test_run_summary_normal.json b/harnesses/tradefed/tests/res/testtype/test_run_summary_normal.json
deleted file mode 100644
index 7a8e83d..0000000
--- a/harnesses/tradefed/tests/res/testtype/test_run_summary_normal.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "Class Errors": null,
-    "Results": [
-        {
-            "Begin Time": 1525425222367,
-            "Details": null,
-            "End Time": 1525425223793,
-            "Extra Errors": {},
-            "Extras": null,
-            "Result": "PASS",
-            "Tables": {},
-            "Test Class": "SampleLightFuzzTest",
-            "Test Name": "testTurnOnLightBlackBoxFuzzing",
-            "UID": null
-        },
-        {
-            "Begin Time": 1525425749536,
-            "Details": "unit test",
-            "End Time": 1525425749537,
-            "Extra Errors": {},
-            "Extras": null,
-            "Result": "FAIL",
-            "Tables": {},
-            "Test Class": "SampleLightFuzzTest",
-            "Test Name": "testTurnOnLightWhiteBoxFuzzing",
-            "UID": null
-        }
-    ],
-    "Summary": {
-        "Error": 0,
-        "Executed": 2,
-        "Failed": 1,
-        "Passed": 1,
-        "Requested": 2,
-        "Skipped": 0
-    },
-    "TestModule": {
-        "Name": null,
-        "Timestamp": null
-    }
-}
diff --git a/harnesses/tradefed/tests/res/testtype/vts_fuzz_output1.txt b/harnesses/tradefed/tests/res/testtype/vts_fuzz_output1.txt
deleted file mode 100644
index e00d15e..0000000
--- a/harnesses/tradefed/tests/res/testtype/vts_fuzz_output1.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-vts
-...
-[  PASSED  ]
diff --git a/harnesses/tradefed/tests/res/testtype/vts_fuzz_output2.txt b/harnesses/tradefed/tests/res/testtype/vts_fuzz_output2.txt
deleted file mode 100644
index 09e0d1c..0000000
--- a/harnesses/tradefed/tests/res/testtype/vts_fuzz_output2.txt
+++ /dev/null
@@ -1 +0,0 @@
-segfault
\ No newline at end of file
diff --git a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output.txt b/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output.txt
deleted file mode 100644
index aa7c79a..0000000
--- a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output.txt
+++ /dev/null
@@ -1,290 +0,0 @@
-[VTS-Example] 07-01 08:54:59.495 INFO ==========> SampleLightFuzzTest <==========
-[VTS-Example] 07-01 08:55:01.215 INFO Exception occurred in command: killall vts_hal_agent > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:01.258 INFO Exception occurred in command: killall vts_hal_driver32 > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:01.296 INFO Exception occurred in command: killall vts_hal_driver64 > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:02.299 INFO sending a command (type SET_HOST_INFO)
-[VTS-Example] 07-01 08:55:02.312 INFO resp 2 bytes
-[VTS-Example] 07-01 08:55:02.313 INFO TcpServer Thread-2 started (127.0.0.1:5365)
-[VTS-Example] 07-01 08:55:02.313 INFO sending a command (type SET_HOST_INFO)
-[VTS-Example] 07-01 08:55:02.323 INFO resp 2 bytes
-[VTS-Example] 07-01 08:55:02.324 INFO sending a command (type LIST_HALS)
-[VTS-Example] 07-01 08:55:02.329 INFO resp 910 bytes
-[VTS-Example] 07-01 08:55:02.367 INFO Init the stub service for light
-[VTS-Example] 07-01 08:55:02.368 INFO service_name: vts_binder_light
-[VTS-Example] 07-01 08:55:02.368 INFO file_path: /system/lib64/hw/lights.angler.so
-[VTS-Example] 07-01 08:55:02.368 INFO bits: 64
-[VTS-Example] 07-01 08:55:02.368 INFO sending a command (type LAUNCH_STUB_SERVICE)
-[VTS-Example] 07-01 08:55:03.395 INFO resp 29 bytes
-[VTS-Example] 07-01 08:55:03.434 INFO sending a command (type LIST_APIS)
-[VTS-Example] 07-01 08:55:03.439 INFO resp 2616 bytes
-[VTS-Example] 07-01 08:55:03.484 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:03.485 INFO target API: name: "#Open"
-return_type {
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_STRING
-  string_value {
-    message: "backlight"
-  }
-}
-
-[VTS-Example] 07-01 08:55:03.506 INFO resp 135 bytes
-[VTS-Example] 07-01 08:55:03.554 INFO [Test Case] testTurnOnLightBlackBoxFuzzing
-[VTS-Example] 07-01 08:55:03.554 INFO blackbox fuzzing
-[VTS-Example] 07-01 08:55:03.560 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-[VTS-Example] 07-01 08:55:09.171 INFO resp 982 bytes
-[VTS-Example] 07-01 08:55:09.217 INFO remote call set_light(None, <vts.proto.InterfaceSpecificationMessage_pb2.VariableSpecificationMessage object at 0x7ffb43779ad0>)
-[VTS-Example] 07-01 08:55:09.219 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:09.219 INFO target API: name: "set_light"
-return_type {
-  type: TYPE_SCALAR
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_PREDEFINED
-  scalar_type: "pointer"
-  predefined_type: "struct light_device_t*"
-}
-arg {
-  name: "light_state_t"
-  type: TYPE_STRUCT
-  struct_value {
-    name: "color"
-    type: TYPE_SCALAR
-    scalar_value {
-      uint32_t: 4286537472
-    }
-    scalar_type: "uint32_t"
-  }
-  struct_value {
-    name: "flashMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 8388614
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOnMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 139364
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOffMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 2097352
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "brightnessMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 134217728
-    }
-    scalar_type: "int32_t"
-  }
-}
-
-[VTS-Example] 07-01 08:55:09.229 INFO resp 982 bytes
-[VTS-Example] 07-01 08:55:09.282 INFO [Test Case] testTurnOnLightBlackBoxFuzzing PASS
-[VTS-Example] 07-01 08:55:09.282 INFO [Test Case] testTurnOnLightWhiteBoxFuzzing
-[VTS-Example] 07-01 08:55:09.282 INFO whitebox fuzzing
-[VTS-Example] 07-01 08:55:09.286 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-[VTS-Example] 07-01 08:55:09.289 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-
-[VTS-Example] 07-01 08:55:14.438 INFO resp 977 bytes
-[VTS-Example] 07-01 08:55:14.485 INFO remote call set_light(None, <vts.proto.InterfaceSpecificationMessage_pb2.VariableSpecificationMessage object at 0x7ffb449f43d0>)
-[VTS-Example] 07-01 08:55:14.487 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:14.487 INFO target API: name: "set_light"
-return_type {
-  type: TYPE_SCALAR
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_PREDEFINED
-  scalar_type: "pointer"
-  predefined_type: "struct light_device_t*"
-}
-arg {
-  name: "light_state_t"
-  type: TYPE_STRUCT
-  struct_value {
-    name: "color"
-    type: TYPE_SCALAR
-    scalar_value {
-      uint32_t: 4294705024
-    }
-    scalar_type: "uint32_t"
-  }
-  struct_value {
-    name: "flashMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 515
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOnMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 33556068
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOffMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 268435656
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "brightnessMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 32768
-    }
-    scalar_type: "int32_t"
-  }
-}
-
-[VTS-Example] 07-01 08:58:54.724 INFO resp 975 bytes
-more than one product dir found.
-undefined symbol: __gcov_flushGcovFlush: Can't find __gcov_flush
-FunctionCallEnd: no gcov basepath set
-[VTS-Example] 07-01 08:58:54.777 INFO [Test Case] testTurnOnLightWhiteBoxFuzzing PASS
-[VTS-Example] 07-01 08:58:54.777 INFO Summary for test class SampleLightFuzzTest: Error 0, Executed 2, Failed 0, Passed 2, Requested 2, Skipped 0
\ No newline at end of file
diff --git a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_error.txt b/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_error.txt
deleted file mode 100644
index 18669d8..0000000
--- a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_error.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: [VTS-Example] 07-08 11:56:25.218 INFO ==========> SampleLightTest <==========
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: [VTS-Example] 07-08 11:56:25.512 INFO TcpServer Thread-1 started (127.0.0.1:8293)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: [VTS-Example] 07-08 11:56:25.515 INFO sending a command (type SET_HOST_INFO)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: [VTS-Example] 07-08 11:56:25.515 INFO command command_type: SET_HOST_INFO
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: callback_port: 8293
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: [VTS-Example] 07-08 11:56:25.518 ERROR Failed to setup SampleLightTest.
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: Traceback (most recent call last):
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/base_test.py", line 510, in run
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     if self._setUpClass() is False:
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/base_test.py", line 112, in _setUpClass
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     return self.setUpClass()
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/testcases/host/sample/SampleLightTest.py", line 33, in setUpClass
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     bits=32)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/utils/python/mirror/hal_mirror.py", line 106, in InitConventionalHal
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     bits=bits)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/utils/python/mirror/hal_mirror.py", line 173, in _CreateMirrorObject
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     callback_port=self._host_callback_port)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/tcp_client/vts_tcp_client.py", line 92, in Connect
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     resp = self.RecvResponse()
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/tcp_client/vts_tcp_client.py", line 263, in RecvResponse
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     header = self.channel.readline()
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:   File "/usr/lib/python2.7/socket.py", line 447, in readline
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output:     data = self._sock.recv(self._rbufsize)
-07-08 11:56:25 I/VtsMultiDeviceTestResultParser: Standard output: error: [Errno 104] Connection reset by peer
-07-08 11:56:25 D/ModuleListener: ModuleListener.testRunStarted(VtsHostDrivenTest, 0)
-07-08 11:56:25 I/ConsoleReporter: [009283827981beee] Starting armeabi-v7a SampleCameraTest with 0 test
-07-08 11:56:25 D/ModuleListener: ModuleListener.testRunEnded(0, {})
-07-08 11:56:25 I/ConsoleReporter: [009283827981beee] armeabi-v7a SampleCameraTest completed in 0 ms. 0 passed, 0 failed, 0 not executed
-07-08 11:56:25 D/ModuleDef: Cleaner: FilePusher
-07-08 11:56:25 W/CompatibilityTest: Inaccurate runtime hint for armeabi-v7a SampleCameraTest, expected 1m 0s was 744 ms
-07-08 11:56:25 I/CompatibilityTest: Running system status checker after module execution: SampleCameraTest
-07-08 11:56:26 I/MonitoringUtils: Connectivity: passed check.
-07-08 11:56:26 I/CompatibilityTest: Running system status checker before module execution: SampleCameraTest
-07-08 11:56:26 D/ModuleDef: Preparer: FilePusher
-07-08 11:56:26 E/PushFilePreparer: Trying to push local 'libvts_common.so' to remote '/data/local/tmp/libvts_common.so'
-07-08 11:56:26 E/PushFilePreparer: not absolute
-07-08 11:56:26 I/FilePusher: Copying from /usr/local/yim/cloudandroid/android/master-real/out/host/linux-x86/vts/android-vts/testcases/libvts_common.so
-07-08 11:56:26 D/ModuleDef: Test: VtsMultiDeviceTest
-07-08 11:56:26 D/RunUtil: Running command with timeout: 1000ms
-07-08 11:56:26 D/RunUtil: Running [which, python]
-07-08 11:56:26 D/RunUtil: Running command with timeout: 300000ms
-07-08 11:56:26 D/RunUtil: Running [/usr/bin/python, -m, test/vts/testcases/host/sample/SampleLightTest, test/vts/testcases/host/sample/SampleLightTest.config]
-07-08 11:56:27 I/VtsMultiDeviceTest: Standard output is: [VTS-Example] 07-08 11:56:26.877 INFO ==========> SampleLightTest <==========
-[VTS-Example] 07-08 11:56:27.147 INFO TcpServer Thread-1 started (127.0.0.1:3617)
-[VTS-Example] 07-08 11:56:27.149 INFO sending a command (type SET_HOST_INFO)
-[VTS-Example] 07-08 11:56:27.150 INFO command command_type: SET_HOST_INFO
-callback_port: 3617
-
-[VTS-Example] 07-08 11:56:27.151 ERROR Failed to setup SampleLightTest.
-Traceback (most recent call last):
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/base_test.py", line 510, in run
-    if self._setUpClass() is False:
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/base_test.py", line 112, in _setUpClass
-    return self.setUpClass()
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/testcases/host/sample/SampleLightTest.py", line 33, in setUpClass
-    bits=32)
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/utils/python/mirror/hal_mirror.py", line 106, in InitConventionalHal
-    bits=bits)
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/utils/python/mirror/hal_mirror.py", line 173, in _CreateMirrorObject
-    callback_port=self._host_callback_port)
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/tcp_client/vts_tcp_client.py", line 92, in Connect
-    resp = self.RecvResponse()
-  File "/usr/local/yim/cloudandroid/android/master-real/test/vts/runners/host/tcp_client/vts_tcp_client.py", line 263, in RecvResponse
-    header = self.channel.readline()
-  File "/usr/lib/python2.7/socket.py", line 447, in readline
-    data = self._sock.recv(self._rbufsize)
-error: [Errno 104] Connection reset by peer
diff --git a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_timeout.txt b/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_timeout.txt
deleted file mode 100644
index a0adb80..0000000
--- a/harnesses/tradefed/tests/res/testtype/vts_multi_device_test_parser_output_timeout.txt
+++ /dev/null
@@ -1,289 +0,0 @@
-[VTS-Example] 07-01 08:54:59.495 INFO ==========> SampleLightFuzzTest <==========
-[VTS-Example] 07-01 08:55:01.215 INFO Exception occurred in command: killall vts_hal_agent > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:01.258 INFO Exception occurred in command: killall vts_hal_driver32 > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:01.296 INFO Exception occurred in command: killall vts_hal_driver64 > /dev/null 2&>1
-[VTS-Example] 07-01 08:55:02.299 INFO sending a command (type SET_HOST_INFO)
-[VTS-Example] 07-01 08:55:02.312 INFO resp 2 bytes
-[VTS-Example] 07-01 08:55:02.313 INFO TcpServer Thread-2 started (127.0.0.1:5365)
-[VTS-Example] 07-01 08:55:02.313 INFO sending a command (type SET_HOST_INFO)
-[VTS-Example] 07-01 08:55:02.323 INFO resp 2 bytes
-[VTS-Example] 07-01 08:55:02.324 INFO sending a command (type LIST_HALS)
-[VTS-Example] 07-01 08:55:02.329 INFO resp 910 bytes
-[VTS-Example] 07-01 08:55:02.367 INFO Init the stub service for light
-[VTS-Example] 07-01 08:55:02.368 INFO service_name: vts_binder_light
-[VTS-Example] 07-01 08:55:02.368 INFO file_path: /system/lib64/hw/lights.angler.so
-[VTS-Example] 07-01 08:55:02.368 INFO bits: 64
-[VTS-Example] 07-01 08:55:02.368 INFO sending a command (type LAUNCH_STUB_SERVICE)
-[VTS-Example] 07-01 08:55:03.395 INFO resp 29 bytes
-[VTS-Example] 07-01 08:55:03.434 INFO sending a command (type LIST_APIS)
-[VTS-Example] 07-01 08:55:03.439 INFO resp 2616 bytes
-[VTS-Example] 07-01 08:55:03.484 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:03.485 INFO target API: name: "#Open"
-return_type {
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_STRING
-  string_value {
-    message: "backlight"
-  }
-}
-
-[VTS-Example] 07-01 08:55:03.506 INFO resp 135 bytes
-[VTS-Example] 07-01 08:55:03.554 INFO [Test Case] testTurnOnLightBlackBoxFuzzing
-[VTS-Example] 07-01 08:55:03.554 INFO blackbox fuzzing
-[VTS-Example] 07-01 08:55:03.560 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-[VTS-Example] 07-01 08:55:09.171 INFO resp 982 bytes
-[VTS-Example] 07-01 08:55:09.217 INFO remote call set_light(None, <vts.proto.InterfaceSpecificationMessage_pb2.VariableSpecificationMessage object at 0x7ffb43779ad0>)
-[VTS-Example] 07-01 08:55:09.219 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:09.219 INFO target API: name: "set_light"
-return_type {
-  type: TYPE_SCALAR
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_PREDEFINED
-  scalar_type: "pointer"
-  predefined_type: "struct light_device_t*"
-}
-arg {
-  name: "light_state_t"
-  type: TYPE_STRUCT
-  struct_value {
-    name: "color"
-    type: TYPE_SCALAR
-    scalar_value {
-      uint32_t: 4286537472
-    }
-    scalar_type: "uint32_t"
-  }
-  struct_value {
-    name: "flashMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 8388614
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOnMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 139364
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOffMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 2097352
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "brightnessMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 134217728
-    }
-    scalar_type: "int32_t"
-  }
-}
-
-[VTS-Example] 07-01 08:55:09.229 INFO resp 982 bytes
-[VTS-Example] 07-01 08:55:09.282 INFO [Test Case] testTurnOnLightBlackBoxFuzzing PASS
-[VTS-Example] 07-01 08:55:09.282 INFO [Test Case] testTurnOnLightWhiteBoxFuzzing
-[VTS-Example] 07-01 08:55:09.282 INFO whitebox fuzzing
-[VTS-Example] 07-01 08:55:09.286 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-[VTS-Example] 07-01 08:55:09.289 INFO MessageGenerator light_state_t name: "light_state_t"
-type: TYPE_STRUCT
-struct_value {
-  name: "color"
-  type: TYPE_SCALAR
-  scalar_value {
-    uint32_t: 4294967040
-  }
-  scalar_type: "uint32_t"
-}
-struct_value {
-  name: "flashMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOnMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "flashOffMs"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-struct_value {
-  name: "brightnessMode"
-  type: TYPE_SCALAR
-  scalar_value {
-    int32_t: 0
-  }
-  scalar_type: "int32_t"
-}
-
-
-[VTS-Example] 07-01 08:55:14.438 INFO resp 977 bytes
-[VTS-Example] 07-01 08:55:14.485 INFO remote call set_light(None, <vts.proto.InterfaceSpecificationMessage_pb2.VariableSpecificationMessage object at 0x7ffb449f43d0>)
-[VTS-Example] 07-01 08:55:14.487 INFO sending a command (type CALL_API)
-[VTS-Example] 07-01 08:55:14.487 INFO target API: name: "set_light"
-return_type {
-  type: TYPE_SCALAR
-  scalar_type: "int32_t"
-}
-arg {
-  type: TYPE_PREDEFINED
-  scalar_type: "pointer"
-  predefined_type: "struct light_device_t*"
-}
-arg {
-  name: "light_state_t"
-  type: TYPE_STRUCT
-  struct_value {
-    name: "color"
-    type: TYPE_SCALAR
-    scalar_value {
-      uint32_t: 4294705024
-    }
-    scalar_type: "uint32_t"
-  }
-  struct_value {
-    name: "flashMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 515
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOnMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 33556068
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "flashOffMs"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 268435656
-    }
-    scalar_type: "int32_t"
-  }
-  struct_value {
-    name: "brightnessMode"
-    type: TYPE_SCALAR
-    scalar_value {
-      int32_t: 32768
-    }
-    scalar_type: "int32_t"
-  }
-}
-
-[VTS-Example] 07-01 08:58:54.724 INFO resp 975 bytes
-more than one product dir found.
-undefined symbol: __gcov_flushGcovFlush: Can't find __gcov_flush
-FunctionCallEnd: no gcov basepath set
-[VTS-Example] 07-01 08:58:54.777 INFO Summary for test class SampleLightFuzzTest: Error 0, Executed 2, Failed 0, Passed 2, Requested 2, Skipped 0
\ No newline at end of file
diff --git a/harnesses/tradefed/tests/res/util/results/2017.09.01_17.30.00/test_result.xml b/harnesses/tradefed/tests/res/util/results/2017.09.01_17.30.00/test_result.xml
deleted file mode 100644
index 31203b2..0000000
--- a/harnesses/tradefed/tests/res/util/results/2017.09.01_17.30.00/test_result.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no' ?><?xml-stylesheet type="text/xsl" href="vts_result.xsl"?>

-<Result start="1504258200493" end="1504258240603" start_display="Fri Sep 01 17:30:00 CST 2017" end_display="Fri Sep 01 17:30:40 CST 2017" suite_name="VTS" suite_version="8.0" suite_plan="vts" suite_build_number="test123456" report_version="5.0" command_line_args="vts -m SampleShellTest -a arm64-v8a" devices="TEST123456" host_name="unit.test.google.com" os_name="Linux" os_version="4.4.0-92-generic" os_arch="amd64" java_vendor="JetBrains s.r.o" java_version="1.8.0_152-android">

-  <Build build_abis_64="arm64-v8a" build_manufacturer="unknown" build_abis_32="armeabi-v7a,armeabi" build_product="aosp_arm64_ab" build_brand="Android" build_board="sailfish" build_serial="TEST123456" build_version_security_patch="2017-10-05" build_system_fingerprint="Android/aosp_arm64_ab/generic_arm64_ab:8.0.0/OC/4311089:userdebug/test-keys" build_reference_fingerprint="null" build_fingerprint="Android/aosp_sailfish/sailfish:8.0.0/OC/4311111:userdebug/test-keys" build_version_sdk="26" build_abis="arm64-v8a,armeabi-v7a,armeabi" build_device="generic_arm64_ab" build_abi="arm64-v8a" build_model="AOSP on ARM64" build_id="OC" build_abi2="null" build_vendor_fingerprint="Android/aosp_sailfish/sailfish:8.0.0/OC/4311111:userdebug/test-keys" build_version_release="8.0.0" build_version_base_os="" build_type="userdebug" build_tags="test-keys" />

-  <Summary pass="7" failed="0" modules_done="1" modules_total="1" />

-  <Module name="SampleShellTest" abi="arm64-v8a" runtime="21450" done="true" pass="7">

-    <TestCase name="SampleShellTest">

-      <Test result="pass" name="testCommandList" />

-      <Test result="pass" name="testCommandSequenceCd" />

-      <Test result="pass" name="testCommandSequenceExport" />

-      <Test result="pass" name="testCommandSequenceMktemp" />

-      <Test result="pass" name="testMultipleCommands" />

-      <Test result="pass" name="testMultipleShells" />

-      <Test result="pass" name="testOneCommand" />

-    </TestCase>

-  </Module>

-</Result>

diff --git a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/VtsUnitTests.java b/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/VtsUnitTests.java
deleted file mode 100644
index 6ab624e..0000000
--- a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/VtsUnitTests.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.compatibility.common.tradefed;
-
-import com.android.compatibility.common.tradefed.util.VtsRetryFilterHelperTest;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-/**
- * A test suite for all VTS Tradefed unit tests.
- *
- * <p>All tests listed here should be self-contained, and do not require any external dependencies.
- */
-@RunWith(Suite.class)
-@SuiteClasses({
-    // NOTE: please keep classes sorted lexicographically in each group
-    // testtype
-
-    // util
-    VtsRetryFilterHelperTest.class,
-})
-public class VtsUnitTests {
-    // empty on purpose
-}
diff --git a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/config/ConfigurationFactoryTest.java b/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/config/ConfigurationFactoryTest.java
deleted file mode 100644
index 524590c..0000000
--- a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/config/ConfigurationFactoryTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2019 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 com.android.compatibility.common.tradefed.config;
-
-import com.android.tradefed.config.ConfigurationException;
-import com.android.tradefed.config.ConfigurationFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * Unit tests for {@link ConfigurationFactory} imported from Trade Federation to check vts
- * configuration loading.
- */
-@RunWith(JUnit4.class)
-public class ConfigurationFactoryTest {
-    private ConfigurationFactory mConfigFactory;
-
-    @Before
-    public void setUp() throws Exception {
-        mConfigFactory = (ConfigurationFactory) ConfigurationFactory.getInstance();
-    }
-
-    /**
-     * Initial test to ensure all config names on classpath are loadable.
-     */
-    @Test
-    public void testLoadAllConfigs() throws ConfigurationException {
-        // we dry-run the templates otherwise it will always fail.
-        mConfigFactory.loadAllConfigs(false);
-    }
-
-    /**
-     * Initial test to ensure all configs on classpath can be fully loaded and parsed.
-     */
-    @Test
-    public void testLoadAndPrintAllConfigs() throws ConfigurationException {
-        // Printing the help involves more checks since it tries to resolve the config objects.
-        mConfigFactory.loadAndPrintAllConfigs();
-    }
-}
\ No newline at end of file
diff --git a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelperTest.java b/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelperTest.java
deleted file mode 100644
index c891c1e..0000000
--- a/harnesses/tradefed/tests/src/com/android/compatibility/common/tradefed/util/VtsRetryFilterHelperTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.compatibility.common.tradefed.util;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.util.FileUtil;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.util.HashSet;
-
-/**
- * Unit tests for {@link VtsRetryFilterHelper}.
- */
-@RunWith(JUnit4.class)
-public class VtsRetryFilterHelperTest {
-    private final String RESULTS_FILE = "/util/results/2017.09.01_17.30.00/test_result.xml";
-    private final String VENDOR_FINGERPRINT =
-            "Android/aosp_sailfish/sailfish:8.0.0/OC/4311111:userdebug/test-keys";
-    private final String WRONG_FINGERPRINT =
-            "Android/other_device/other_device:8.0.0/OC/4311112:userdebug/test-keys";
-    private final String VENDOR_FINGERPRINT_PROPERTY = "ro.vendor.build.fingerprint";
-    private CompatibilityBuildHelper mBuildHelper;
-    private RetryFilterHelper mHelper;
-
-    private File mTmpDir;
-
-    @Before
-    public void setUp() throws Exception {
-        mTmpDir = FileUtil.createTempDir("vts-unit-tests");
-        File invDir = new File(mTmpDir, "2017.09.01_17.30.00");
-        invDir.mkdirs();
-        FileUtil.saveResourceFile(
-                getClass().getResourceAsStream(RESULTS_FILE), invDir, "test_result.xml");
-        mBuildHelper = new CompatibilityBuildHelper(null) {
-            @Override
-            public File getResultsDir() {
-                return mTmpDir;
-            }
-        };
-        mHelper = new VtsRetryFilterHelper(mBuildHelper, 0, "SUB_PLAN", new HashSet<String>(),
-                new HashSet<String>(), "ABI_NAME", "MODULE_NAME", "TEST_NAME", RetryType.FAILED);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        FileUtil.recursiveDelete(mTmpDir);
-    }
-
-    /**
-     * Create a mock {@link ITestDevice} with fingerprint properties.
-     * @param vendorFingerprint The vendor fingerprint of the device.
-     * @return The mock device.
-     * @throws DeviceNotAvailableException
-     */
-    private ITestDevice createMockDevice(String vendorFingerprint)
-            throws DeviceNotAvailableException {
-        ITestDevice mockDevice = EasyMock.createMock(ITestDevice.class);
-        EasyMock.expect(mockDevice.getProperty(VENDOR_FINGERPRINT_PROPERTY))
-                .andReturn(vendorFingerprint);
-        EasyMock.expect(mockDevice.getSerialNumber()).andStubReturn("serial");
-        EasyMock.replay(mockDevice);
-        return mockDevice;
-    }
-
-    /**
-     * Test ValidateBuildFingerprint without error.
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void testValidateBuildFingerprint() throws DeviceNotAvailableException {
-        mHelper.validateBuildFingerprint(createMockDevice(VENDOR_FINGERPRINT));
-    }
-
-    /**
-     * Test ValidateBuildFingerprint with the incorrect fingerprint.
-     * @throws DeviceNotAvailableException
-     */
-    @Test(expected = IllegalArgumentException.class)
-    public void testMismatchSystemFingerprint() throws DeviceNotAvailableException {
-        mHelper.validateBuildFingerprint(createMockDevice(WRONG_FINGERPRINT));
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/VtsUnitTests.java b/harnesses/tradefed/tests/src/com/android/tradefed/VtsUnitTests.java
deleted file mode 100644
index 50e518d..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/VtsUnitTests.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed;
-
-import com.android.compatibility.common.tradefed.config.ConfigurationFactoryTest;
-import com.android.tradefed.device.metric.VtsCoverageCollectorTest;
-import com.android.tradefed.device.metric.VtsHalTraceCollectorTest;
-import com.android.tradefed.module.VtsHalAdapterModuleControllerTest;
-import com.android.tradefed.presubmit.VtsConfigLoadingTest;
-import com.android.tradefed.targetprep.VtsCoveragePreparerTest;
-import com.android.tradefed.targetprep.VtsDevicePreparerTest;
-import com.android.tradefed.targetprep.VtsHalAdapterPreparerTest;
-import com.android.tradefed.targetprep.VtsPythonVirtualenvPreparerTest;
-import com.android.tradefed.targetprep.VtsTraceCollectPreparerTest;
-import com.android.tradefed.testtype.VtsFuzzTestResultParserTest;
-import com.android.tradefed.testtype.VtsFuzzTestTest;
-import com.android.tradefed.testtype.VtsMultiDeviceTestResultParserTest;
-import com.android.tradefed.testtype.VtsMultiDeviceTestTest;
-import com.android.tradefed.util.CmdUtilTest;
-import com.android.tradefed.util.OutputUtilTest;
-import com.android.tradefed.util.ProcessHelperTest;
-import com.android.tradefed.util.VtsPythonRunnerHelperTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * A test suite for all VTS Tradefed unit tests.
- *
- * <p>All tests listed here should be self-contained, and do not require any external dependencies.
- */
-@RunWith(Suite.class)
-@SuiteClasses({
-        // NOTE: please keep classes sorted lexicographically in each group
-        // config
-        ConfigurationFactoryTest.class,
-        // device
-        VtsCoverageCollectorTest.class,
-        VtsDevicePreparerTest.class,
-        VtsHalTraceCollectorTest.class,
-
-        // module
-        VtsHalAdapterModuleControllerTest.class,
-
-        // presubmit
-        VtsConfigLoadingTest.class,
-
-        // targetprep
-        VtsCoveragePreparerTest.class,
-        VtsHalAdapterPreparerTest.class,
-        VtsPythonVirtualenvPreparerTest.class,
-        VtsTraceCollectPreparerTest.class,
-
-        // testtype
-        VtsFuzzTestResultParserTest.class,
-        VtsFuzzTestTest.class,
-        VtsMultiDeviceTestResultParserTest.class,
-        VtsMultiDeviceTestTest.class,
-
-        // util
-        CmdUtilTest.class,
-        ProcessHelperTest.class,
-        VtsPythonRunnerHelperTest.class,
-        OutputUtilTest.class,
-})
-public class VtsUnitTests {
-    // empty on purpose
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsCoverageCollectorTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsCoverageCollectorTest.java
deleted file mode 100644
index a9066d7..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsCoverageCollectorTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.device.metric;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.util.VtsPythonRunnerHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-/**
- * Unit tests for {@link VtsCoverageCollector}.
- */
-@RunWith(JUnit4.class)
-public class VtsCoverageCollectorTest {
-    private Map<String, String> mBuildAttributes = new HashMap<>();
-    private List<IBuildInfo> mBuildInfos = new ArrayList<IBuildInfo>();
-    private List<ITestDevice> mDevices = new ArrayList<ITestDevice>();
-
-    @Mock ITestInvocationListener mMockListener;
-    @Mock IInvocationContext mMockContext;
-    @Mock IBuildInfo mBuildInfo;
-    @Mock ITestDevice mDevice;
-    @Mock VtsPythonRunnerHelper mMockRunner;
-    @InjectMocks VtsCoverageCollector mCollector = new testCollector();
-
-    private class testCollector extends VtsCoverageCollector {
-        @Override
-        public String getRunName() {
-            return "device1 testRun";
-        }
-        @Override
-        String getGcoveResrouceDir(IBuildInfo buildInfo, ITestDevice device) {
-            return "/tmp/test-coverage";
-        }
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mCollector.init(mMockContext, mMockListener);
-        mCollector.setPythonRunnerHelper(mMockRunner);
-        mDevices.add(mDevice);
-        mBuildInfos.add(mBuildInfo);
-        doReturn(mDevices).when(mMockContext).getDevices();
-        doReturn(mBuildInfos).when(mMockContext).getBuildInfos();
-    }
-
-    @Test
-    public void testOnTestRunEndBasic() throws Exception {
-        mBuildAttributes.put("coverage_report_path", "/tmp/test-coverage/");
-        doReturn("1234").when(mDevice).getSerialNumber();
-        doReturn(mBuildAttributes).when(mBuildInfo).getBuildAttributes();
-
-        String expectedCmdStr = "python -m vts.utils.python.coverage.coverage_utils "
-                + "get_coverage --serial 1234 --gcov_rescource_path /tmp/test-coverage "
-                + "--report_path /tmp/test-coverage/device1_testRun "
-                + "--report_prefix device1_testRun";
-        String[] expected_cmd = expectedCmdStr.split("\\s+");
-
-        doReturn(null)
-                .when(mMockRunner)
-                .runPythonRunner(Mockito.eq(expected_cmd), Mockito.any(), Mockito.anyLong());
-
-        mCollector.onTestRunEnd(null, null);
-
-        verify(mMockRunner).runPythonRunner(Mockito.any(), Mockito.any(), Mockito.anyLong());
-    }
-
-    @Test
-    public void testOnTestRunEndReportDirMissing() throws Exception {
-        mBuildAttributes.remove("coverage_report_path");
-        doReturn("1234").when(mDevice).getSerialNumber();
-        doReturn(mBuildAttributes).when(mBuildInfo).getBuildAttributes();
-        mCollector.onTestRunEnd(null, null);
-        // Ensure the properties was requested
-        verify(mBuildInfo).getBuildAttributes();
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsHalTraceCollectorTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsHalTraceCollectorTest.java
deleted file mode 100644
index 2108872..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/device/metric/VtsHalTraceCollectorTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.device.metric;
-
-import static org.junit.Assert.assertTrue;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.util.FileUtil;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Unit tests for {@link VtsHalTraceCollector}.
- */
-@RunWith(JUnit4.class)
-public class VtsHalTraceCollectorTest {
-    private static final String VTS_TMP_DIR = VtsHalTraceCollector.VTS_TMP_DIR;
-    private static final String TRACE_PATH = VtsHalTraceCollector.TRACE_PATH;
-
-    private Map<String, String> mBuildAttributes = new HashMap<>();
-    private List<IBuildInfo> mBuildInfos = new ArrayList<IBuildInfo>();
-    private List<ITestDevice> mDevices = new ArrayList<ITestDevice>();
-    private VtsHalTraceCollector mCollect;
-    private IBuildInfo mMockBuildInfo;
-    private ITestDevice mMockDevice;
-    private IInvocationContext mMockContext;
-    private ITestInvocationListener mMockListener;
-
-    @Before
-    public void setUp() throws Exception {
-        mMockDevice = EasyMock.createNiceMock(ITestDevice.class);
-        mMockBuildInfo = EasyMock.createNiceMock(IBuildInfo.class);
-        mMockListener = EasyMock.createNiceMock(ITestInvocationListener.class);
-        mMockContext = EasyMock.createNiceMock(IInvocationContext.class);
-        mCollect = new VtsHalTraceCollector() {
-            @Override
-            public String getRunName() {
-                return "device1 testRun";
-            }
-        };
-        mCollect.init(mMockContext, mMockListener);
-    }
-
-    @Test
-    public void testOnTestRunEnd() throws Exception {
-        File traceBaseDir = FileUtil.createTempDir("vts-trace");
-        File traceDir = null;
-        try {
-            mBuildAttributes.put(TRACE_PATH, traceBaseDir.getAbsolutePath());
-            EasyMock.expect(mMockBuildInfo.getBuildAttributes()).andReturn(mBuildAttributes);
-            mDevices.add(mMockDevice);
-            mBuildInfos.add(mMockBuildInfo);
-            EasyMock.expect(mMockContext.getDevices()).andReturn(mDevices);
-            EasyMock.expect(mMockContext.getBuildInfos()).andReturn(mBuildInfos);
-            String listResult = VTS_TMP_DIR + "test1.vts.trace\n" + VTS_TMP_DIR + "test2.vts.trace";
-            EasyMock.expect(mMockDevice.executeShellCommand(
-                                    EasyMock.eq(String.format("ls %s/*.vts.trace", VTS_TMP_DIR))))
-                    .andReturn(listResult);
-            traceDir = new File(traceBaseDir, "device1_testRun/");
-            File testTrace1 = new File(traceDir, "test1.vts.trace");
-            File testTrace2 = new File(traceDir, "test2.vts.trace");
-            EasyMock.expect(mMockDevice.pullFile(EasyMock.eq(VTS_TMP_DIR + "test1.vts.trace"),
-                                    EasyMock.eq(testTrace1)))
-                    .andReturn(true)
-                    .times(1);
-            EasyMock.expect(mMockDevice.pullFile(EasyMock.eq(VTS_TMP_DIR + "test2.vts.trace"),
-                                    EasyMock.eq(testTrace2)))
-                    .andReturn(true)
-                    .times(1);
-
-            EasyMock.replay(mMockBuildInfo);
-            EasyMock.replay(mMockContext);
-            EasyMock.replay(mMockDevice);
-
-            mCollect.onTestRunEnd(null, null);
-            assertTrue(traceDir.exists());
-
-            EasyMock.verify(mMockBuildInfo);
-            EasyMock.verify(mMockContext);
-            EasyMock.verify(mMockDevice);
-
-        } finally {
-            FileUtil.recursiveDelete(traceDir);
-            FileUtil.recursiveDelete(traceBaseDir);
-        }
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/module/VtsHalAdapterModuleControllerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/module/VtsHalAdapterModuleControllerTest.java
deleted file mode 100644
index 73f3e92..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/module/VtsHalAdapterModuleControllerTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.module;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.*;
-
-import com.android.tradefed.config.OptionSetter;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.testtype.suite.module.IModuleController;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.InjectMocks;
-import org.mockito.Mockito;
-
-import java.util.ArrayList;
-import java.util.List;
-/**
- * Unit tests for {@link VtsHalAdapterModuleController).
- */
-@RunWith(JUnit4.class)
-public final class VtsHalAdapterModuleControllerTest {
-    private String LIST_HAL_CMD = VtsHalAdapterModuleController.LIST_HAL_CMD;
-    private String TEST_HAL_PACKAGE = "android.hardware.foo@1.1";
-
-    private List<ITestDevice> mDevices = new ArrayList<ITestDevice>();
-
-    @Mock private IInvocationContext mInvocationContext;
-    @Mock private ITestDevice mDevice;
-    @InjectMocks
-    private VtsHalAdapterModuleController mModuleControler = new VtsHalAdapterModuleController();
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mDevices.add(mDevice);
-        doReturn(mDevices).when(mInvocationContext).getDevices();
-        OptionSetter setter = new OptionSetter(mModuleControler);
-        setter.setOptionValue("hal-package-name", TEST_HAL_PACKAGE);
-    }
-
-    // Test the normal case when the targeting HAL is available.
-    @Test
-    public void testShouldRun() throws Exception {
-        String output = "android.hardware.foo@1.1::IFoo/default";
-        doReturn(output).when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-        assertEquals(
-                IModuleController.RunStrategy.RUN, mModuleControler.shouldRun(mInvocationContext));
-    }
-
-    // Test the case when we need to skip the test as the targeting HAL is not available.
-    @Test
-    public void testShouldSkip() throws Exception {
-        doReturn("").when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-        assertEquals(IModuleController.RunStrategy.SKIP_MODULE_TESTCASES,
-                mModuleControler.shouldRun(mInvocationContext));
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/presubmit/VtsConfigLoadingTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/presubmit/VtsConfigLoadingTest.java
deleted file mode 100644
index b496dd8..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/presubmit/VtsConfigLoadingTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.presubmit;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.android.tradefed.config.ConfigurationDescriptor;
-import com.android.tradefed.config.ConfigurationException;
-import com.android.tradefed.config.ConfigurationFactory;
-import com.android.tradefed.config.IConfiguration;
-import com.android.tradefed.testtype.IRemoteTest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Test that configuration in VTS10 can load and have expected properties.
- */
-@RunWith(JUnit4.class)
-public class VtsConfigLoadingTest {
-    /**
-     * List of the officially supported runners in VTS10.
-     */
-    private static final Set<String> SUPPORTED_VTS_TEST_TYPE = new HashSet<>(Arrays.asList(
-            "com.android.compatibility.common.tradefed.testtype.JarHostTest",
-            "com.android.tradefed.testtype.AndroidJUnitTest",
-            "com.android.tradefed.testtype.GTest",
-            "com.android.tradefed.testtype.VtsMultiDeviceTest"));
-
-    /**
-     * Test that configuration shipped in Tradefed can be parsed.
-     */
-    @Test
-    public void testConfigurationLoad() throws Exception {
-        String vtsRoot = System.getProperty("VTS10_ROOT");
-        File testcases = new File(vtsRoot, "/android-vts10/testcases/");
-        if (!testcases.exists()) {
-            fail(String.format("%s does not exists", testcases));
-            return;
-        }
-        File[] listVtsConfig = testcases.listFiles(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String name) {
-                // Only check the VTS test config
-                if (name.startsWith("Vts") && name.endsWith(".config")) {
-                    return true;
-                }
-                return false;
-            }
-        });
-        assertTrue(listVtsConfig.length > 0);
-        for (File config : listVtsConfig) {
-            IConfiguration c = ConfigurationFactory.getInstance().createConfigurationFromArgs(
-                    new String[] {config.getAbsolutePath()});
-            for (IRemoteTest test : c.getTests()) {
-                // Check that all the tests runners are well supported.
-                if (!SUPPORTED_VTS_TEST_TYPE.contains(test.getClass().getCanonicalName())) {
-                    throw new ConfigurationException(
-                            String.format("testtype %s is not officially supported by VTS10.",
-                                    test.getClass().getCanonicalName()));
-                }
-            }
-        }
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsCoveragePreparerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsCoveragePreparerTest.java
deleted file mode 100644
index f873006..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsCoveragePreparerTest.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.OptionSetter;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.targetprep.TargetSetupError;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.IRunUtil;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-/**
- * Unit tests for {@link VtsCoveragePreparer}.
- */
-@RunWith(JUnit4.class)
-public final class VtsCoveragePreparerTest {
-    private String BUILD_INFO_ARTIFACT = VtsCoveragePreparer.BUILD_INFO_ARTIFACT;
-    private String GCOV_PROPERTY = VtsCoveragePreparer.GCOV_PROPERTY;
-    private String GCOV_FILE_NAME = VtsCoveragePreparer.GCOV_FILE_NAME;
-    private String SYMBOLS_FILE_NAME = VtsCoveragePreparer.SYMBOLS_FILE_NAME;
-    private String COVERAGE_REPORT_PATH = VtsCoveragePreparer.COVERAGE_REPORT_PATH;
-
-    // Path to store coverage report files.
-    private static final String TEST_COVERAGE_REPORT_PATH = "/tmp/test-coverage";
-
-    private File mTestDir;
-    private CompatibilityBuildHelper mMockHelper;
-
-    private class TestCoveragePreparer extends VtsCoveragePreparer {
-        @Override
-        CompatibilityBuildHelper createBuildHelper(IBuildInfo buildInfo) {
-            return mMockHelper;
-        }
-
-        @Override
-        File createTempDir(ITestDevice device) {
-            return mTestDir;
-        }
-
-        @Override
-        String getArtifactFetcher(IBuildInfo buildInfo) {
-            return "fetcher --bid %s --target %s %s %s";
-        }
-    }
-
-    @Mock private IBuildInfo mBuildInfo;
-    @Mock private ITestDevice mDevice;
-    @Mock private IRunUtil mRunUtil;
-    @InjectMocks private TestCoveragePreparer mPreparer = new TestCoveragePreparer();
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mTestDir = FileUtil.createTempDir("vts-coverage-preparer-unit-tests");
-        mMockHelper = new CompatibilityBuildHelper(mBuildInfo) {
-            @Override
-            public File getTestsDir() throws FileNotFoundException {
-                return mTestDir;
-            }
-            @Override
-            public File getResultDir() throws FileNotFoundException {
-                return mTestDir;
-            }
-        };
-        doReturn("build_id").when(mDevice).getBuildId();
-        doReturn("1234").when(mDevice).getSerialNumber();
-        doReturn("enforcing").when(mDevice).executeShellCommand("getenforce");
-        doReturn("build_id").when(mBuildInfo).getBuildId();
-        CommandResult commandResult = new CommandResult();
-        commandResult.setStatus(CommandStatus.SUCCESS);
-        doReturn(commandResult).when(mRunUtil).runTimedCmd(anyLong(), any());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        FileUtil.recursiveDelete(mTestDir);
-    }
-
-    @Test
-    public void testOnSetUpCoverageDisabled() throws Exception {
-        doReturn("UnknowFlaver").when(mDevice).getBuildFlavor();
-        doReturn("None").when(mDevice).getProperty(GCOV_PROPERTY);
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mBuildInfo, never()).setFile((String) any(), any(), any());
-    }
-
-    @Test
-    public void testOnSetUpSancovEnabled() throws Exception {
-        doReturn("walleye_asan_coverage-userdebug").when(mDevice).getBuildFlavor();
-        createTestFile(SYMBOLS_FILE_NAME);
-        createTestFile(BUILD_INFO_ARTIFACT);
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mBuildInfo, times(1))
-                .setFile(eq(VtsCoveragePreparer.getSancovResourceDirKey(mDevice)), eq(mTestDir),
-                        eq("build_id"));
-    }
-
-    @Test
-    public void testOnSetUpGcovEnabled() throws Exception {
-        doReturn("walleye_coverage-userdebug").when(mDevice).getBuildFlavor();
-        doReturn("1").when(mDevice).getProperty(GCOV_PROPERTY);
-        createTestFile(GCOV_FILE_NAME);
-        createTestFile(BUILD_INFO_ARTIFACT);
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mBuildInfo, times(1))
-                .setFile(eq(VtsCoveragePreparer.getGcovResourceDirKey(mDevice)), eq(mTestDir),
-                        eq("build_id"));
-    }
-
-    @Test
-    public void testOnSetUpLocalArtifectsNormal() throws Exception {
-        OptionSetter setter = new OptionSetter(mPreparer);
-        setter.setOptionValue("use-local-artifects", "true");
-        setter.setOptionValue("local-coverage-resource-path", mTestDir.getAbsolutePath());
-        doReturn("1").when(mDevice).getProperty(GCOV_PROPERTY);
-        createTestFile(GCOV_FILE_NAME);
-        createTestFile(BUILD_INFO_ARTIFACT);
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mBuildInfo, times(1))
-                .setFile(eq(VtsCoveragePreparer.getGcovResourceDirKey(mDevice)), eq(mTestDir),
-                        eq("build_id"));
-    }
-
-    @Test
-    public void testOnSetUpLocalArtifectsNotExists() throws Exception {
-        OptionSetter setter = new OptionSetter(mPreparer);
-        setter.setOptionValue("use-local-artifects", "true");
-        setter.setOptionValue("local-coverage-resource-path", mTestDir.getAbsolutePath());
-        doReturn("1").when(mDevice).getProperty(GCOV_PROPERTY);
-
-        try {
-            mPreparer.setUp(mDevice, mBuildInfo);
-        } catch (TargetSetupError e) {
-            // Expected.
-            assertEquals(String.format("Could not find %s under %s.", GCOV_FILE_NAME,
-                                 mTestDir.getAbsolutePath()),
-                    e.getMessage());
-            verify(mBuildInfo, never()).setFile((String) any(), any(), any());
-            return;
-        }
-        fail();
-    }
-
-    @Test
-    public void testOnSetUpOutputCoverageReport() throws Exception {
-        OptionSetter setter = new OptionSetter(mPreparer);
-        setter.setOptionValue("coverage-report-dir", TEST_COVERAGE_REPORT_PATH);
-        doReturn("walleye_coverage-userdebug").when(mDevice).getBuildFlavor();
-        doReturn("1").when(mDevice).getProperty(GCOV_PROPERTY);
-        createTestFile(GCOV_FILE_NAME);
-        createTestFile(BUILD_INFO_ARTIFACT);
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mBuildInfo, times(1))
-                .addBuildAttribute(eq(COVERAGE_REPORT_PATH),
-                        eq(mTestDir.getAbsolutePath() + TEST_COVERAGE_REPORT_PATH));
-    }
-
-    @Test
-    public void testOnTearDown() throws Exception {
-        doReturn("walleye_coverage-userdebug").when(mDevice).getBuildFlavor();
-        doReturn("1").when(mDevice).getProperty(GCOV_PROPERTY);
-        File artifectsFile = createTestFile(GCOV_FILE_NAME);
-        File buildInfoFile = createTestFile(BUILD_INFO_ARTIFACT);
-        mPreparer.setUp(mDevice, mBuildInfo);
-        mPreparer.tearDown(mDevice, mBuildInfo, null);
-        verify(mDevice, times(1)).executeShellCommand("setenforce enforcing");
-        assertFalse(artifectsFile.exists());
-        assertFalse(buildInfoFile.exists());
-    }
-
-    /**
-     * Helper method to create a test file under mTestDir.
-     *
-     * @param fileName test file name.
-     * @return created test file.
-     */
-    private File createTestFile(String fileName) throws IOException {
-        File testFile = new File(mTestDir, fileName);
-        testFile.createNewFile();
-        return testFile;
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsDevicePreparerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsDevicePreparerTest.java
deleted file mode 100644
index f8af9a5..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsDevicePreparerTest.java
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.contains;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.targetprep.VtsDevicePreparer.DeviceOptionState;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.ArgumentMatchers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-/**
- * Unit tests for {@link VtsDevicePreparer}.</p>
- */
-@RunWith(JUnit4.class)
-public class VtsDevicePreparerTest {
-    VtsDevicePreparer mPreparer;
-    @Mock private ITestDevice mockDevice;
-    @Mock private IBuildInfo mockBuildInfo;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mPreparer = new VtsDevicePreparer();
-        mPreparer.mDevice = mockDevice;
-    }
-
-    /**
-     * Tests the functionality of adbRoot
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_adbUnroot_notAlreadyRoot() throws DeviceNotAvailableException {
-        doReturn(false).when(mockDevice).isAdbRoot();
-        mPreparer.adbUnroot();
-        verify(mockDevice, times(0)).executeAdbCommand(ArgumentMatchers.anyString());
-    }
-
-    /**
-     * Tests the functionality of adbRoot
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_adbUnroot_alreadyRoot() throws DeviceNotAvailableException {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        mPreparer.adbUnroot();
-        verify(mockDevice, times(1)).executeAdbCommand(eq("unroot"));
-    }
-
-    /**
-     * Tests the functionality of adbRoot
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_adbRoot_notAlreadyRoot() throws DeviceNotAvailableException {
-        doReturn(false).when(mockDevice).isAdbRoot();
-        mPreparer.adbRoot();
-        verify(mockDevice, times(1)).executeAdbCommand(eq("root"));
-    }
-
-    /**
-     * Tests the functionality of adbRoot
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_adbRoot_alreadyRoot() throws DeviceNotAvailableException {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        mPreparer.adbRoot();
-        verify(mockDevice, times(0)).executeAdbCommand(ArgumentMatchers.anyString());
-    }
-
-    /**
-     * Tests the functionality of startFramework
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_startFramework() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        doReturn("system_server")
-                .when(mockDevice)
-                .executeShellCommand(eq("ps -g system | grep system_server"));
-        mPreparer.startFramework();
-        verify(mockDevice, times(1))
-                .executeShellCommand(
-                        eq("setprop " + VtsDevicePreparer.SYSPROP_VTS_NATIVE_SERVER + " 0"));
-        verify(mockDevice, times(1)).executeShellCommand(eq("start"));
-    }
-
-    /**
-     * Tests the functionality of stopFramework
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_stopFramework() throws DeviceNotAvailableException {
-        mPreparer.stopFramework();
-        verify(mockDevice, times(1)).executeShellCommand(eq("stop"));
-        verify(mockDevice, times(1))
-                .executeShellCommand(
-                        eq("setprop " + VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED + " 0"));
-    }
-
-    /**
-     * Tests the functionality of startNativeServers
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_startNativeServers() throws DeviceNotAvailableException {
-        mPreparer.startNativeServers();
-        verify(mockDevice, times(1))
-                .executeShellCommand(
-                        eq("setprop " + VtsDevicePreparer.SYSPROP_VTS_NATIVE_SERVER + " 0"));
-    }
-
-    /**
-     * Tests the functionality of stopNativeServers
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_stopNativeServers() throws DeviceNotAvailableException {
-        mPreparer.stopNativeServers();
-        verify(mockDevice, times(1))
-                .executeShellCommand(
-                        eq("setprop " + VtsDevicePreparer.SYSPROP_VTS_NATIVE_SERVER + " 1"));
-    }
-
-    /**
-     * Tests the functionality of setProp
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_setProp() throws DeviceNotAvailableException {
-        mPreparer.setProperty("key", "value");
-        verify(mockDevice, times(1)).executeShellCommand(eq("setprop key value"));
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_true() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(mPreparer.isBootCompleted());
-        verify(mockDevice, times(1)).getProperty(eq(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE));
-        verify(mockDevice, times(1)).getProperty(eq(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED));
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_false1() throws DeviceNotAvailableException {
-        doReturn("0").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_false2() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("0").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_false3() throws DeviceNotAvailableException {
-        doReturn("0").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("0").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted when a dev boot completed sysprop is undefined.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_null1() throws DeviceNotAvailableException {
-        doReturn(null).when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted when a sys boot completed sysprop is undefined.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_null2() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn(null).when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isBootCompleted when two boot completed sysprops are undefined.
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isBootCompleted_null3() throws DeviceNotAvailableException {
-        doReturn(null).when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn(null).when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        assertTrue(!mPreparer.isBootCompleted());
-    }
-
-    /**
-     * Tests the functionality of isFrameworkRunning
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isFrameworkRunning_true() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        doReturn("system_server").when(mockDevice).executeShellCommand(contains("ps -g system"));
-        assertTrue(mPreparer.isFrameworkRunning());
-    }
-
-    /**
-     * Tests the functionality of isFrameworkRunning
-     *
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_isFrameworkRunning_false() throws DeviceNotAvailableException {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        doReturn("").when(mockDevice).executeShellCommand(contains("ps -g system"));
-        assertTrue(!mPreparer.isFrameworkRunning());
-    }
-
-    /**
-     * Tests the functionality of enable-radio-log option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableRadioLog()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn("0").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(1))
-                .executeShellCommand("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 1");
-        verify(mockDevice, times(1)).reboot();
-    }
-
-    /**
-     * Tests the functionality of enable-radio-log option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableRadioLog_alreadyEnabled()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0))
-                .executeShellCommand(eq("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 1"));
-        verify(mockDevice, times(0)).reboot();
-    }
-
-    /**
-     * Tests the functionality of enable-radio-log option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableRadioLog_notAvailable1()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn(null).when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0))
-                .executeShellCommand(eq("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 1"));
-        verify(mockDevice, times(0)).reboot();
-    }
-
-    /**
-     * Tests the functionality of enable-radio-log option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableRadioLog_notAvailable2()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn("").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0))
-                .executeShellCommand(eq("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 1"));
-        verify(mockDevice, times(0)).reboot();
-    }
-
-    /**
-     * Test tearDown is skipped when pre-existing DeviceNotAvailableException is seen.
-     */
-    @Test
-    public void test_tearDown_with_DNAE() throws Exception {
-        DeviceNotAvailableException exception =
-                new DeviceNotAvailableException("device not available");
-        mPreparer.tearDown(mockDevice, mockBuildInfo, exception);
-    }
-
-    /**
-     * Tests the functionality of radio log restore option.
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_tearDown_enableAdbRoot_turnOff() throws DeviceNotAvailableException {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.mRestoreRadioLog = true;
-        mPreparer.mInitialRadioLog = DeviceOptionState.DISABLED;
-        mPreparer.tearDown(mockDevice, mockBuildInfo, null);
-        verify(mockDevice, times(1))
-                .executeShellCommand("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 0");
-        verify(mockDevice, times(1)).reboot();
-    }
-
-    /**
-     * Tests the functionality of radio log restore option.
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_tearDown_enableAdbRoot_noNeedTurnOff() throws DeviceNotAvailableException {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = true;
-        mPreparer.mRestoreRadioLog = true;
-        mPreparer.mInitialRadioLog = DeviceOptionState.ENABLED;
-        mPreparer.tearDown(mockDevice, mockBuildInfo, null);
-        verify(mockDevice, times(0))
-                .executeShellCommand("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 0");
-        verify(mockDevice, times(0)).reboot();
-    }
-
-    /**
-     * Tests the functionality of radio log restore option.
-     * @throws DeviceNotAvailableException
-     */
-    @Test
-    public void test_tearDown_enableAdbRoot_noNeedTurnOff2() throws DeviceNotAvailableException {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_RADIO_LOG);
-        mPreparer.mEnableRadioLog = false;
-        mPreparer.mRestoreRadioLog = true;
-        mPreparer.mInitialRadioLog = DeviceOptionState.ENABLED;
-        mPreparer.tearDown(mockDevice, mockBuildInfo, null);
-        verify(mockDevice, times(0))
-                .executeShellCommand("setprop " + VtsDevicePreparer.SYSPROP_RADIO_LOG + " 0");
-        verify(mockDevice, times(0)).reboot();
-    }
-
-    /**
-     * Tests the functionality of enable-adb-root option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableAdbRoot()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn(false).when(mockDevice).isAdbRoot();
-        mPreparer.mEnableAdbRoot = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(1)).executeAdbCommand(eq("root"));
-    }
-
-    /**
-     * Tests the functionality of enable-adb-root option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_enableAdbRoot_alreadyRoot()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        mPreparer.mEnableAdbRoot = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0)).executeAdbCommand(eq("root"));
-    }
-
-    /**
-     * Tests the functionality of enable-adb-root option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_disableAdbRoot()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn(true).when(mockDevice).isAdbRoot();
-        mPreparer.mDisableAdbRoot = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(1)).executeAdbCommand(eq("unroot"));
-    }
-
-    /**
-     * Tests the functionality of enable-adb-root option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_disableAdbRoot_alreadyUnroot()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn(false).when(mockDevice).isAdbRoot();
-        mPreparer.mDisableAdbRoot = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0)).executeAdbCommand(eq("unroot"));
-    }
-
-    /**
-     * Tests the functionality of start-framework option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_startFramework()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        doReturn("system_server")
-                .when(mockDevice)
-                .executeShellCommand("ps -g system | grep system_server");
-        mPreparer.mStartFramework = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(1)).executeShellCommand(eq("start"));
-    }
-
-    /**
-     * Tests the functionality of stop-framework option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_stopFramework()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        mPreparer.mStopFramework = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(1)).executeShellCommand(eq("stop"));
-    }
-
-    /**
-     * Tests whether conflict options invokes no action
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_setUp_conflict()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        mPreparer.mStartFramework = true;
-        mPreparer.mStopFramework = true;
-        mPreparer.mEnableAdbRoot = true;
-        mPreparer.mDisableAdbRoot = true;
-        mPreparer.setUp(mockDevice, mockBuildInfo);
-        verify(mockDevice, times(0)).executeShellCommand(eq("start"));
-        verify(mockDevice, times(0)).executeShellCommand(eq("stop"));
-        verify(mockDevice, times(0)).executeAdbCommand(eq("root"));
-        verify(mockDevice, times(0)).executeAdbCommand(eq("unroot"));
-    }
-
-    /**
-     * Tests the functionality of restore-framework option
-     *
-     * @throws DeviceNotAvailableException
-     * @throws BuildError
-     * @throws TargetSetupError
-     */
-    @Test
-    public void test_tearDown_restoreFramework()
-            throws DeviceNotAvailableException, TargetSetupError, BuildError {
-        doReturn("0")
-                .doReturn("1")
-                .when(mockDevice)
-                .getProperty(VtsDevicePreparer.SYSPROP_DEV_BOOTCOMPLETE);
-        doReturn("1").when(mockDevice).getProperty(VtsDevicePreparer.SYSPROP_SYS_BOOT_COMPLETED);
-        doReturn("system_server")
-                .when(mockDevice)
-                .executeShellCommand("ps -g system | grep system_server");
-        mPreparer.mRestoreFramework = true;
-        mPreparer.mInitialFrameworkStarted = true;
-        mPreparer.mStopFramework = true;
-        mPreparer.tearDown(mockDevice, mockBuildInfo, new Exception());
-        verify(mockDevice, times(1)).executeShellCommand(eq("start"));
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsHalAdapterPreparerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsHalAdapterPreparerTest.java
deleted file mode 100644
index af8511b..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsHalAdapterPreparerTest.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.*;
-
-import com.android.compatibility.common.tradefed.build.VtsCompatibilityInvocationHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.OptionSetter;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.testtype.IAbi;
-import com.android.tradefed.util.CmdUtil;
-import com.android.tradefed.util.FileUtil;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.InjectMocks;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-import java.util.function.Predicate;
-/**
- * Unit tests for {@link VtsHalAdapterPreparer}.
- */
-@RunWith(JUnit4.class)
-public final class VtsHalAdapterPreparerTest {
-    private int THREAD_COUNT_DEFAULT = VtsHalAdapterPreparer.THREAD_COUNT_DEFAULT;
-    private String SCRIPT_PATH = VtsHalAdapterPreparer.SCRIPT_PATH;
-    private String LIST_HAL_CMD = VtsHalAdapterPreparer.LIST_HAL_CMD;
-
-    private String VTS_NATIVE_TEST_DIR = "DATA/nativetest64/";
-    private String TARGET_NATIVE_TEST_DIR = "/data/nativetest64/";
-    private String TEST_HAL_ADAPTER_BINARY = "android.hardware.foo@1.0-adapter";
-    private String TEST_HAL_PACKAGE = "android.hardware.foo@1.1";
-
-    private class TestCmdUtil extends CmdUtil {
-        public boolean mCmdSuccess = true;
-        @Override
-        public boolean waitCmdResultWithDelay(ITestDevice device, String cmd,
-                Predicate<String> predicate) throws DeviceNotAvailableException {
-            return mCmdSuccess;
-        }
-
-        @Override
-        public boolean retry(ITestDevice device, String cmd, String validation_cmd,
-                Predicate<String> predicate, int retry_count) throws DeviceNotAvailableException {
-            device.executeShellCommand(cmd);
-            return mCmdSuccess;
-        }
-
-        @Override
-        public boolean retry(ITestDevice device, Vector<String> cmds, String validation_cmd,
-                Predicate<String> predicate) throws DeviceNotAvailableException {
-            for (String cmd : cmds) {
-                device.executeShellCommand(cmd);
-            }
-            return mCmdSuccess;
-        }
-
-        @Override
-        public void restartFramework(ITestDevice device) throws DeviceNotAvailableException {}
-
-        @Override
-        public void setSystemProperty(ITestDevice device, String name, String value)
-                throws DeviceNotAvailableException {}
-    }
-    private TestCmdUtil mCmdUtil = new TestCmdUtil();
-    VtsCompatibilityInvocationHelper mMockHelper = null;
-    private class TestPreparer extends VtsHalAdapterPreparer {
-        @Override
-        VtsCompatibilityInvocationHelper createVtsHelper() {
-            return mMockHelper;
-        }
-    }
-    File mTestDir = null;
-
-    @Mock private IBuildInfo mBuildInfo;
-    @Mock private ITestDevice mDevice;
-    @Mock private IAbi mAbi;
-    @InjectMocks private TestPreparer mPreparer = new TestPreparer();
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        // Create the base dirs
-        mTestDir = FileUtil.createTempDir("vts-hal-adapter-preparer-unit-tests");
-        new File(mTestDir, VTS_NATIVE_TEST_DIR).mkdirs();
-        mMockHelper = new VtsCompatibilityInvocationHelper() {
-            @Override
-            public File getTestsDir() throws FileNotFoundException {
-                return mTestDir;
-            }
-        };
-        mPreparer.setCmdUtil(mCmdUtil);
-        OptionSetter setter = new OptionSetter(mPreparer);
-        setter.setOptionValue("adapter-binary-name", TEST_HAL_ADAPTER_BINARY);
-        setter.setOptionValue("hal-package-name", TEST_HAL_PACKAGE);
-        doReturn("64").when(mAbi).getBitness();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        FileUtil.recursiveDelete(mTestDir);
-    }
-
-    @Test
-    public void testOnSetUpAdapterSingleInstance() throws Exception {
-        File testAdapter = createTestAdapter();
-        String output = "android.hardware.foo@1.1::IFoo/default";
-        doReturn(output).doReturn("").when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-        verify(mDevice, times(1))
-                .pushFile(eq(testAdapter), eq(TARGET_NATIVE_TEST_DIR + TEST_HAL_ADAPTER_BINARY));
-        String adapterCmd = String.format("%s /data/nativetest64/%s %s %s %d", SCRIPT_PATH,
-                TEST_HAL_ADAPTER_BINARY, "IFoo", "default", THREAD_COUNT_DEFAULT);
-        verify(mDevice, times(1)).executeShellCommand(eq(adapterCmd));
-    }
-
-    @Test
-    public void testOnSetUpAdapterMultipleInstance() throws Exception {
-        createTestAdapter();
-        String output = "android.hardware.foo@1.1::IFoo/default\n"
-                + "android.hardware.foo@1.1::IFoo/test\n"
-                + "android.hardware.foo@1.1::IFooSecond/default\n"
-                + "android.hardware.foo@1.1::IFooSecond/slot/1\n";
-        doReturn(output).doReturn("").when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-
-        mPreparer.setUp(mDevice, mBuildInfo);
-
-        List<String> adapterCmds = new ArrayList<String>();
-        adapterCmds.add(String.format("%s /data/nativetest64/%s %s %s %d", SCRIPT_PATH,
-                TEST_HAL_ADAPTER_BINARY, "IFoo", "default", THREAD_COUNT_DEFAULT));
-        adapterCmds.add(String.format("%s /data/nativetest64/%s %s %s %d", SCRIPT_PATH,
-                TEST_HAL_ADAPTER_BINARY, "IFoo", "test", THREAD_COUNT_DEFAULT));
-        adapterCmds.add(String.format("%s /data/nativetest64/%s %s %s %d", SCRIPT_PATH,
-                TEST_HAL_ADAPTER_BINARY, "IFooSecond", "default", THREAD_COUNT_DEFAULT));
-        adapterCmds.add(String.format("%s /data/nativetest64/%s %s %s %d", SCRIPT_PATH,
-                TEST_HAL_ADAPTER_BINARY, "IFooSecond", "slot/1", THREAD_COUNT_DEFAULT));
-
-        for (String cmd : adapterCmds) {
-            verify(mDevice, times(1)).executeShellCommand(eq(cmd));
-        }
-    }
-
-    @Test
-    public void testOnSetupAdapterNotFound() throws Exception {
-        try {
-            mPreparer.setUp(mDevice, mBuildInfo);
-        } catch (TargetSetupError e) {
-            assertEquals("Could not push adapter.", e.getMessage());
-            return;
-        }
-        fail();
-    }
-
-    @Test
-    public void testOnSetupServiceNotAvailable() throws Exception {
-        createTestAdapter();
-        doReturn("").when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-        mPreparer.setUp(mDevice, mBuildInfo);
-    }
-
-    @Test
-    public void testOnSetUpAdapterFailed() throws Exception {
-        createTestAdapter();
-        String output = "android.hardware.foo@1.1::IFoo/default";
-        doReturn(output).when(mDevice).executeShellCommand(
-                String.format(LIST_HAL_CMD, TEST_HAL_PACKAGE));
-        mCmdUtil.mCmdSuccess = false;
-        try {
-            mPreparer.setUp(mDevice, mBuildInfo);
-        } catch (TargetSetupError e) {
-            assertEquals("HAL adapter setup failed.", e.getMessage());
-            return;
-        }
-        fail();
-    }
-
-    @Test
-    public void testOnTearDownRestoreFailed() throws Exception {
-        mCmdUtil.mCmdSuccess = false;
-        mPreparer.setCmdUtil(mCmdUtil);
-        mPreparer.addCommand("one");
-        mPreparer.tearDown(mDevice, mBuildInfo, null);
-    }
-
-    /**
-     * Helper method to create a test adapter under mTestDir.
-     *
-     * @return created test file.
-     */
-    private File createTestAdapter() throws IOException {
-        File testAdapter = new File(mTestDir, VTS_NATIVE_TEST_DIR + TEST_HAL_ADAPTER_BINARY);
-        testAdapter.createNewFile();
-        return testAdapter;
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparerTest.java
deleted file mode 100644
index 0cb94c1..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparerTest.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.targetprep;
-
-import static org.easymock.EasyMock.anyLong;
-import static org.easymock.EasyMock.expect;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.android.tradefed.build.BuildInfo;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.IRunUtil;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.Mock;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Unit tests for {@link VtsPythonVirtualenvPreparer}.</p>
- * TODO: add tests to cover a full end-to-end scenario.
- */
-@RunWith(JUnit4.class)
-public class VtsPythonVirtualenvPreparerTest {
-    private VtsPythonVirtualenvPreparer mPreparer;
-    private IRunUtil mMockRunUtil;
-    @Mock private IBuildInfo mBuildInfo;
-
-    @Before
-    public void setUp() throws Exception {
-        mMockRunUtil = EasyMock.createMock(IRunUtil.class);
-
-        mPreparer = new VtsPythonVirtualenvPreparer() {
-            @Override
-            protected IRunUtil getRunUtil() {
-                return mMockRunUtil;
-            }
-        };
-        mPreparer.mVenvDir = new File("");
-        mPreparer.mDepModules.add("enum");
-    }
-
-    /**
-     * Test that the installation of dependencies and requirements file is as expected.
-     */
-    @Test
-    public void testInstallDeps_reqFile_success() throws Exception {
-        File requirementFile = FileUtil.createTempFile("reqfile", ".txt");
-        try {
-            mPreparer.setRequirementsFile(requirementFile);
-            CommandResult result = new CommandResult(CommandStatus.SUCCESS);
-            result.setStdout("output");
-            result.setStderr("std err");
-            // First check that the install requirements was attempted.
-            expect(mMockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                           EasyMock.eq("install"), EasyMock.eq("-r"),
-                           EasyMock.eq(requirementFile.getAbsolutePath())))
-                    .andReturn(result);
-            // Check that all default modules are installed
-            addDefaultModuleExpectations(mMockRunUtil, result);
-            EasyMock.replay(mMockRunUtil);
-            mPreparer.installDeps();
-            EasyMock.verify(mMockRunUtil);
-        } finally {
-            FileUtil.deleteFile(requirementFile);
-        }
-    }
-
-    /**
-     * Test that if an extra dependency module is required, we install it too.
-     */
-    @Test
-    public void testInstallDeps_depModule_success() throws Exception {
-        mPreparer.addDepModule("blahblah");
-        CommandResult result = new CommandResult(CommandStatus.SUCCESS);
-        result.setStdout("output");
-        result.setStderr("std err");
-        addDefaultModuleExpectations(mMockRunUtil, result);
-        // The non default module provided is also attempted to be installed.
-        expect(mMockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                       EasyMock.eq("install"), EasyMock.eq("blahblah")))
-                .andReturn(result);
-        mMockRunUtil.sleep(VtsPythonVirtualenvPreparer.PIP_INSTALL_DELAY);
-        EasyMock.replay(mMockRunUtil);
-        mPreparer.installDeps();
-        EasyMock.verify(mMockRunUtil);
-    }
-
-    /**
-     * Tests the value of PIP_INSTALL_DELAY is at least 1 second.
-     */
-    @Test
-    public void test_PIP_INSTALL_DELAY_minimum_value() {
-        assertTrue(VtsPythonVirtualenvPreparer.PIP_INSTALL_DELAY >= 1000);
-    }
-
-    /**
-     * Test that an installation failure of the requirements file throws a {@link TargetSetupError}.
-     */
-    @Test
-    public void testInstallDeps_reqFile_failure() throws Exception {
-        File requirementFile = FileUtil.createTempFile("reqfile", ".txt");
-        try {
-            mPreparer.setRequirementsFile(requirementFile);
-            CommandResult result = new CommandResult(CommandStatus.TIMED_OUT);
-            result.setStdout("output");
-            result.setStderr("std err");
-            expect(mMockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                           EasyMock.eq("install"), EasyMock.eq("-r"),
-                           EasyMock.eq(requirementFile.getAbsolutePath())))
-                    .andReturn(result)
-                    .times(VtsPythonVirtualenvPreparer.PIP_RETRY + 1);
-            mMockRunUtil.sleep(EasyMock.anyLong());
-            EasyMock.expectLastCall().times(VtsPythonVirtualenvPreparer.PIP_RETRY);
-            EasyMock.replay(mMockRunUtil);
-            IBuildInfo buildInfo = new BuildInfo();
-            try {
-                mPreparer.installDeps();
-                fail("installDeps succeeded despite a failed command");
-            } catch (TargetSetupError e) {
-                assertTrue(buildInfo.getFile("PYTHONPATH") == null);
-            }
-            EasyMock.verify(mMockRunUtil);
-        } finally {
-            FileUtil.deleteFile(requirementFile);
-        }
-    }
-
-    /**
-     * Test that an installation failure of the dep module throws a {@link TargetSetupError}.
-     */
-    @Test
-    public void testInstallDeps_depModule_failure() throws Exception {
-        CommandResult result = new CommandResult(CommandStatus.TIMED_OUT);
-        result.setStdout("output");
-        result.setStderr("std err");
-        expect(mMockRunUtil.runTimedCmd(
-                       anyLong(), EasyMock.eq(mPreparer.getPipPath()), EasyMock.eq("list")))
-                .andReturn(result);
-        expect(mMockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                       EasyMock.eq("install"), EasyMock.eq("enum")))
-                .andReturn(result)
-                .times(VtsPythonVirtualenvPreparer.PIP_RETRY + 1);
-        // If installing the dependency failed, an upgrade is attempted:
-        expect(mMockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                       EasyMock.eq("install"), EasyMock.eq("--upgrade"), EasyMock.eq("enum")))
-                .andReturn(result)
-                .times(VtsPythonVirtualenvPreparer.PIP_RETRY + 1);
-        mMockRunUtil.sleep(EasyMock.anyLong());
-        EasyMock.expectLastCall().times(VtsPythonVirtualenvPreparer.PIP_RETRY);
-        EasyMock.replay(mMockRunUtil);
-        IBuildInfo buildInfo = new BuildInfo();
-        try {
-            mPreparer.installDeps();
-            fail("installDeps succeeded despite a failed command");
-        } catch (TargetSetupError e) {
-            assertTrue(buildInfo.getFile("PYTHONPATH") == null);
-        }
-        EasyMock.verify(mMockRunUtil);
-    }
-
-    private void addDefaultModuleExpectations(IRunUtil mockRunUtil, CommandResult result) {
-        expect(mockRunUtil.runTimedCmd(
-                       anyLong(), EasyMock.eq(mPreparer.getPipPath()), EasyMock.eq("list")))
-                .andReturn(result);
-        expect(mockRunUtil.runTimedCmd(anyLong(), EasyMock.eq(mPreparer.getPipPath()),
-                       EasyMock.eq("install"), EasyMock.eq("enum")))
-                .andReturn(result);
-        mMockRunUtil.sleep(VtsPythonVirtualenvPreparer.PIP_INSTALL_DELAY);
-    }
-
-    /**
-     * Tests the functionality of createVirtualenv.
-     * @throws IOException
-     */
-    @Test
-    public void test_initVirtualenv_creationSuccess() throws IOException {
-        // Create virutalenv dir command success
-        CommandResult result = new CommandResult();
-        result.setStatus(CommandStatus.SUCCESS);
-        expect(mMockRunUtil.runTimedCmd(EasyMock.anyInt(), EasyMock.eq("virtualenv"),
-                       EasyMock.anyObject(), EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(result);
-        EasyMock.replay(mMockRunUtil);
-
-        File testDir = FileUtil.createTempDir("vts-test-dir");
-        try {
-            assertTrue(mPreparer.createVirtualenv(testDir));
-        } finally {
-            FileUtil.recursiveDelete(testDir);
-        }
-        EasyMock.verify(mMockRunUtil);
-    }
-
-    /**
-     * Tests the functionality of createVirtualenv.
-     */
-    @Test
-    public void test_initVirtualenv_creationFail_Errno26_waitSucceed() throws IOException {
-        // Create virutalenv dir command success
-        CommandResult result = new CommandResult(CommandStatus.FAILED);
-        result.setStderr("...Errno 26...");
-        expect(mMockRunUtil.runTimedCmd(EasyMock.anyLong(), EasyMock.eq("virtualenv"),
-                       EasyMock.anyObject(), EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(result)
-                .once();
-        CommandResult nextResult = new CommandResult(CommandStatus.SUCCESS);
-        expect(mMockRunUtil.runTimedCmd(EasyMock.anyLong(), EasyMock.eq("virtualenv"),
-                       EasyMock.anyObject(), EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(nextResult)
-                .once();
-        mMockRunUtil.sleep(EasyMock.anyLong());
-
-        EasyMock.replay(mMockRunUtil);
-        File testDir = FileUtil.createTempDir("vts-test-dir");
-        try {
-            assertTrue(mPreparer.createVirtualenv(testDir));
-        } finally {
-            FileUtil.recursiveDelete(testDir);
-        }
-        EasyMock.verify(mMockRunUtil);
-    }
-
-    /**
-     * Tests the functionality of createVirtualenv.
-     * @throws IOException
-     */
-    @Test
-    public void test_initVirtualenv_creationFail_Errno26_waitFailed() throws IOException {
-        // Create virutalenv dir command success
-        CommandResult result = new CommandResult();
-        result.setStatus(CommandStatus.FAILED);
-        result.setStderr("...Errno 26...");
-        expect(mMockRunUtil.runTimedCmd(EasyMock.anyInt(), EasyMock.eq("virtualenv"),
-                       EasyMock.anyObject(), EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(result)
-                .times(VtsPythonVirtualenvPreparer.PIP_RETRY + 1);
-        mMockRunUtil.sleep(EasyMock.anyLong());
-        EasyMock.expectLastCall().times(VtsPythonVirtualenvPreparer.PIP_RETRY);
-        EasyMock.replay(mMockRunUtil);
-        File testDir = FileUtil.createTempDir("vts-test-dir");
-        try {
-            assertFalse(mPreparer.createVirtualenv(testDir));
-        } finally {
-            FileUtil.recursiveDelete(testDir);
-        }
-        EasyMock.verify(mMockRunUtil);
-    }
-
-    /**
-     * Tests the functionality of createVirtualenv.
-     * @throws IOException
-     */
-    @Test
-    public void test_initVirtualenv_creationFail_noErrno26() throws IOException {
-        // Create virutalenv dir command success
-        CommandResult result = new CommandResult();
-        result.setStatus(CommandStatus.FAILED);
-        result.setStderr("...");
-        expect(mMockRunUtil.runTimedCmd(EasyMock.anyInt(), EasyMock.eq("virtualenv"),
-                       EasyMock.anyObject(), EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(result);
-        EasyMock.replay(mMockRunUtil);
-
-        File testDir = FileUtil.createTempDir("vts-test-dir");
-        try {
-            assertFalse(mPreparer.createVirtualenv(testDir));
-        } finally {
-            FileUtil.recursiveDelete(testDir);
-        }
-        EasyMock.verify(mMockRunUtil);
-    }
-}
\ No newline at end of file
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsTraceCollectPreparerTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsTraceCollectPreparerTest.java
deleted file mode 100644
index 8c2b003..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/targetprep/VtsTraceCollectPreparerTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.targetprep;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.targetprep.TargetSetupError;
-
-import junit.framework.AssertionFailedError;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.NoSuchElementException;
-
-/**
- * Unit tests for {@link VtsTraceCollectPreparer}.
- */
-@RunWith(JUnit4.class)
-public final class VtsTraceCollectPreparerTest {
-    private String SELINUX_PERMISSIVE = VtsTraceCollectPreparer.SELINUX_PERMISSIVE;
-    private String VTS_LIB_DIR_32 = VtsTraceCollectPreparer.VTS_LIB_DIR_32;
-    private String VTS_LIB_DIR_64 = VtsTraceCollectPreparer.VTS_LIB_DIR_64;
-    private String VTS_BINARY_DIR = VtsTraceCollectPreparer.VTS_BINARY_DIR;
-    private String VTS_TMP_LIB_DIR_32 = VtsTraceCollectPreparer.VTS_TMP_LIB_DIR_32;
-    private String VTS_TMP_LIB_DIR_64 = VtsTraceCollectPreparer.VTS_TMP_LIB_DIR_64;
-    private String VTS_TMP_DIR = VtsTraceCollectPreparer.VTS_TMP_DIR;
-    private String PROFILING_CONFIGURE_BINARY = VtsTraceCollectPreparer.PROFILING_CONFIGURE_BINARY;
-    private String TRACE_PATH = VtsTraceCollectPreparer.TRACE_PATH;
-    private String LOCAL_TRACE_DIR = VtsTraceCollectPreparer.LOCAL_TRACE_DIR;
-
-    private static final String TEST_VTS_PROFILER = "test-vts.profiler.so";
-    private static final String TEST_VTS_LIB = "libvts-for-test.so";
-    private static final String UNRELATED_LIB = "somelib.so";
-
-    private VtsTraceCollectPreparer mPreparer;
-    private IBuildInfo mMockBuildInfo;
-    private ITestDevice mMockDevice;
-    private CompatibilityBuildHelper mMockHelper;
-    private File mTestDir;
-
-    @Before
-    public void setUp() throws Exception {
-        mMockDevice = EasyMock.createNiceMock(ITestDevice.class);
-        mMockBuildInfo = EasyMock.createNiceMock(IBuildInfo.class);
-        mTestDir = FileUtil.createTempDir("vts-trace-collect-unit-tests");
-        mMockHelper = new CompatibilityBuildHelper(mMockBuildInfo) {
-            @Override
-            public File getTestsDir() throws FileNotFoundException {
-                return mTestDir;
-            }
-            @Override
-            public File getResultDir() throws FileNotFoundException {
-                return mTestDir;
-            }
-        };
-        mPreparer = new VtsTraceCollectPreparer() {
-            @Override
-            CompatibilityBuildHelper createBuildHelper(IBuildInfo buildInfo) {
-                return mMockHelper;
-            }
-        };
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Cleanup test files.
-        FileUtil.recursiveDelete(mTestDir);
-    }
-
-    @Test
-    public void testOnSetUp() throws Exception {
-        // Create the base dirs
-        new File(mTestDir, VTS_LIB_DIR_32).mkdirs();
-        new File(mTestDir, VTS_LIB_DIR_64).mkdirs();
-        // Files that should be pushed.
-        File testProfilerlib32 = createTestFile(TEST_VTS_PROFILER, "32");
-        File testProfilerlib64 = createTestFile(TEST_VTS_PROFILER, "64");
-        File testVtslib32 = createTestFile(TEST_VTS_LIB, "32");
-        File testVtslib64 = createTestFile(TEST_VTS_LIB, "64");
-        // Files that should not be pushed.
-        File testUnrelatedlib32 = createTestFile(UNRELATED_LIB, "32");
-        File testUnrelatedlib64 = createTestFile(UNRELATED_LIB, "64");
-
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testProfilerlib32),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_32 + TEST_VTS_PROFILER)))
-                .andReturn(true)
-                .times(1);
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testProfilerlib64),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_64 + TEST_VTS_PROFILER)))
-                .andReturn(true)
-                .times(1);
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testVtslib32),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_32 + TEST_VTS_LIB)))
-                .andReturn(true)
-                .times(1);
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testVtslib64),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_64 + TEST_VTS_LIB)))
-                .andReturn(true)
-                .times(1);
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testUnrelatedlib32),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_32 + UNRELATED_LIB)))
-                .andThrow(new AssertionFailedError())
-                .anyTimes();
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(testUnrelatedlib64),
-                                EasyMock.eq(VTS_TMP_LIB_DIR_64 + UNRELATED_LIB)))
-                .andThrow(new AssertionFailedError())
-                .anyTimes();
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.eq(new File(mTestDir,
-                                                     VTS_BINARY_DIR + PROFILING_CONFIGURE_BINARY)),
-                                EasyMock.eq(VTS_TMP_DIR + PROFILING_CONFIGURE_BINARY)))
-                .andReturn(true)
-                .times(1);
-        EasyMock.expect(mMockDevice.executeShellCommand(EasyMock.eq("getenforce")))
-                .andReturn("")
-                .times(1);
-        EasyMock.expect(mMockDevice.executeShellCommand(
-                                EasyMock.eq("setenforce " + SELINUX_PERMISSIVE)))
-                .andReturn("")
-                .times(1);
-
-        // Configure the trace directory path.
-        File traceDir = new File(mTestDir, LOCAL_TRACE_DIR);
-        mMockBuildInfo.addBuildAttribute(TRACE_PATH, traceDir.getAbsolutePath());
-        EasyMock.expectLastCall().times(1);
-        EasyMock.replay(mMockDevice, mMockBuildInfo);
-
-        // Run setUp.
-        mPreparer.setUp(mMockDevice, mMockBuildInfo);
-        EasyMock.verify(mMockDevice, mMockBuildInfo);
-    }
-
-    @Test
-    public void testOnSetUpPushFileException() throws Exception {
-        EasyMock.expect(mMockDevice.pushFile(EasyMock.anyObject(), EasyMock.anyObject()))
-                .andThrow(new NoSuchElementException("file not found."));
-        EasyMock.replay(mMockDevice);
-        try {
-            mPreparer.setUp(mMockDevice, mMockBuildInfo);
-            EasyMock.verify(mMockDevice);
-        } catch (TargetSetupError e) {
-            // Expected.
-            assertEquals("Could not push profiler.", e.getMessage());
-            return;
-        }
-        fail();
-    }
-
-    @Test
-    public void testOnTearDown() throws Exception {
-        EasyMock.expect(mMockDevice.executeShellCommand(EasyMock.eq("getenforce")))
-                .andReturn(SELINUX_PERMISSIVE);
-        EasyMock.expect(mMockDevice.executeShellCommand(
-                                EasyMock.eq("setenforce " + SELINUX_PERMISSIVE)))
-                .andReturn("")
-                .times(1);
-        EasyMock.replay(mMockDevice, mMockBuildInfo);
-        mPreparer.setUp(mMockDevice, mMockBuildInfo);
-        mPreparer.tearDown(mMockDevice, mMockBuildInfo, null);
-        EasyMock.verify(mMockDevice, mMockBuildInfo);
-    }
-
-    /**
-     * Helper method to create a test file under mTestDir.
-     *
-     * @param fileName test file name.
-     * @param bitness bitness for the test file. Only supports "32" or "64".
-     * @return created test file, null for unsupported bitness.
-     */
-    private File createTestFile(String fileName, String bitness) throws Exception {
-        if (bitness == "32") {
-            File testFile32 = new File(mTestDir, VTS_LIB_DIR_32 + fileName);
-            testFile32.createNewFile();
-            return testFile32;
-        } else if (bitness == "64") {
-            File testFile64 = new File(mTestDir, VTS_LIB_DIR_64 + fileName);
-            testFile64.createNewFile();
-            return testFile64;
-        }
-        return null;
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestResultParserTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestResultParserTest.java
deleted file mode 100644
index 67d99aa..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestResultParserTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.ddmlib.Log;
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-import com.android.tradefed.result.TestDescription;
-
-import junit.framework.TestCase;
-
-import org.easymock.EasyMock;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Map;
-import java.util.Vector;
-
-
-/**
- * Unit tests for {@link VtsFuzzTestResultParserTest}.
- */
-public class VtsFuzzTestResultParserTest extends TestCase {
-    private static final String TEST_TYPE_DIR = "testtype";
-    private static final String TEST_MODULE_NAME = "module";
-    private static final String VTS_FUZZ_OUTPUT_FILE_1 = "vts_fuzz_output1.txt";
-    private static final String VTS_FUZZ_OUTPUT_FILE_2 = "vts_fuzz_output2.txt";
-    private static final String LOG_TAG = "VtsFuzzTestResultParserTest";
-
-    /**
-     * Helper to read a file from the res/testtype directory and return its contents as a String[]
-     *
-     * @param filename the name of the file (without the extension) in the res/testtype directory
-     * @return a String[] of the
-     */
-    private String[] readInFile(String filename) {
-        Vector<String> fileContents = new Vector<String>();
-        try {
-            InputStream gtestResultStream1 = getClass().getResourceAsStream(File.separator +
-                    TEST_TYPE_DIR + File.separator + filename);
-            BufferedReader reader = new BufferedReader(new InputStreamReader(gtestResultStream1));
-            String line = null;
-            while ((line = reader.readLine()) != null) {
-                fileContents.add(line);
-            }
-        }
-        catch (NullPointerException e) {
-            Log.e(LOG_TAG, "Output file does not exist: " + filename);
-        }
-        catch (IOException e) {
-            Log.e(LOG_TAG, "Unable to read contents of an output file: " + filename);
-        }
-        return fileContents.toArray(new String[fileContents.size()]);
-    }
-
-    /**
-     * Tests the parser for a passed test run output with 1 test.
-     */
-    @SuppressWarnings("unchecked")
-    public void testParsePassedFile() throws Exception {
-        String[] contents = readInFile(VTS_FUZZ_OUTPUT_FILE_1);
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(TEST_MODULE_NAME, 1);
-        mockRunListener.testEnded(
-                (TestDescription) EasyMock.anyObject(), (Map<String, String>) EasyMock.anyObject());
-        EasyMock.replay(mockRunListener);
-        VtsFuzzTestResultParser resultParser =
-                new VtsFuzzTestResultParser(TEST_MODULE_NAME, mockRunListener);
-        resultParser.processNewLines(contents);
-        resultParser.done();
-    }
-
-    /**
-     * Tests the parser for a failed test run output with 1 test.
-     */
-    public void testParseFailedFile() throws Exception {
-        String[] contents =  readInFile(VTS_FUZZ_OUTPUT_FILE_2);
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(TEST_MODULE_NAME, 1);
-        mockRunListener.testFailed(
-                (TestDescription) EasyMock.anyObject(), (String) EasyMock.anyObject());
-        mockRunListener.testEnded(
-                (TestDescription) EasyMock.anyObject(), (Map<String, String>) EasyMock.anyObject());
-        mockRunListener.testRunFailed((String)EasyMock.anyObject());
-        EasyMock.replay(mockRunListener);
-        VtsFuzzTestResultParser resultParser = new VtsFuzzTestResultParser(
-            TEST_MODULE_NAME, mockRunListener);
-        resultParser.processNewLines(contents);
-        resultParser.done();
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestTest.java
deleted file mode 100644
index 7d48467..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsFuzzTestTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.ddmlib.IShellOutputReceiver;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-
-import junit.framework.TestCase;
-
-import org.easymock.EasyMock;
-
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * Unit tests for {@link VtsFuzzTest}.
- */
-public class VtsFuzzTestTest extends TestCase {
-    private ITestInvocationListener mMockInvocationListener = null;
-    private IShellOutputReceiver mMockReceiver = null;
-    private ITestDevice mMockITestDevice = null;
-    private VtsFuzzTest mTest;
-
-    /**
-     * Helper to initialize the various EasyMocks we'll need.
-     */
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mMockInvocationListener = EasyMock.createMock(ITestInvocationListener.class);
-        mMockReceiver = EasyMock.createMock(IShellOutputReceiver.class);
-        mMockITestDevice = EasyMock.createMock(ITestDevice.class);
-        EasyMock.expect(mMockITestDevice.getSerialNumber()).andStubReturn("serial");
-        mTest = new VtsFuzzTest() {
-            @Override
-            IShellOutputReceiver createResultParser(
-                    String runName, ITestLifeCycleReceiver listener) {
-                return mMockReceiver;
-            }
-        };
-    }
-
-    /**
-     * Helper that replays all mocks.
-     */
-    private void replayMocks() {
-      EasyMock.replay(mMockInvocationListener, mMockITestDevice, mMockReceiver);
-    }
-
-    /**
-     * Helper that verifies all mocks.
-     */
-    private void verifyMocks() {
-      EasyMock.verify(mMockInvocationListener, mMockITestDevice, mMockReceiver);
-    }
-
-    /**
-     * Test the run method with a normal input.
-     */
-    public void testRunNormalInput() throws DeviceNotAvailableException {
-        final String fuzzerBinaryPath = VtsFuzzTest.DEFAULT_FUZZER_BINARY_PATH;
-
-        mTest.setDevice(mMockITestDevice);
-        EasyMock.expect(mMockITestDevice.doesFileExist(fuzzerBinaryPath)).andReturn(true);
-        mMockITestDevice.executeShellCommand(
-            EasyMock.contains(fuzzerBinaryPath),
-            EasyMock.same(mMockReceiver),
-            EasyMock.anyLong(),
-            (TimeUnit)EasyMock.anyObject(),
-            EasyMock.anyInt());
-
-        replayMocks();
-
-        mTest.setTargetClass("hal_conventional");
-        mTest.setTargetType("gps");
-        mTest.setTargetVersionMajor(1);
-        mTest.setTargetVersionMinor(0);
-        mTest.setTargetComponentPath("libunittest_foo.so");
-        mTest.run(mMockInvocationListener);
-        verifyMocks();
-    }
-
-    /**
-     * Test the run method with abnormal input data.
-     */
-    public void testRunAbnormalInput() throws DeviceNotAvailableException {
-        final String fuzzerBinaryPath = VtsFuzzTest.DEFAULT_FUZZER_BINARY_PATH;
-
-        mTest.setDevice(mMockITestDevice);
-        EasyMock.expect(mMockITestDevice.doesFileExist(fuzzerBinaryPath)).andReturn(true);
-
-        replayMocks();
-
-        try {
-            mTest.run(mMockInvocationListener);
-        } catch (IllegalArgumentException e) {
-            // expected
-        }
-
-        verifyMocks();
-    }
-
-    /**
-     * Test the run method without any device.
-     */
-    public void testRunDevice() throws DeviceNotAvailableException {
-        mTest.setDevice(null);
-
-        replayMocks();
-
-        try {
-            mTest.run(mMockInvocationListener);
-        } catch (IllegalArgumentException e) {
-            // expected
-        }
-
-        verifyMocks();
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParserTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParserTest.java
deleted file mode 100644
index b5835b1..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestResultParserTest.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import com.android.tradefed.result.ITestLifeCycleReceiver;
-import com.android.tradefed.result.TestDescription;
-import com.android.tradefed.util.StreamUtil;
-
-import org.easymock.EasyMock;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Collections;
-import java.util.Date;
-
-/**
- * Unit tests for {@link VtsMultiDeviceTestResultParser}.
- */
-@RunWith(JUnit4.class)
-public class VtsMultiDeviceTestResultParserTest {
-    // Test file paths in the resources
-    private static final String OUTPUT_FILE_1 = "/testtype/vts_multi_device_test_parser_output.txt";
-    private static final String OUTPUT_FILE_2 =
-            "/testtype/vts_multi_device_test_parser_output_timeout.txt";
-    private static final String OUTPUT_FILE_3 =
-            "/testtype/vts_multi_device_test_parser_output_error.txt";
-    private static final String SUMMARY_FILE_NORMAL = "/testtype/test_run_summary_normal.json";
-    private static final String SUMMARY_FILE_CLASS_ERRORS =
-            "/testtype/test_run_summary_class_errors.json";
-
-    // test name
-    private static final String RUN_NAME = "SampleLightFuzzTest";
-    private static final String TEST_NAME_1 = "testTurnOnLightBlackBoxFuzzing";
-    private static final String TEST_NAME_2 = "testTurnOnLightWhiteBoxFuzzing";
-
-    // error messages in the summary files.
-    private static final String FAILURE_MESSAGE = "unit test";
-    private static final String CLASS_ERROR_MESSAGE = "class error";
-
-    /**
-     * Test the run method with a normal input.
-     */
-    @Test
-    public void testRunTimeoutInput() throws IOException {
-        String[] contents = getOutput(OUTPUT_FILE_2);
-        long totalTime = getTotalTime(contents);
-
-        // prepare the mock object
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(TEST_NAME_2, 2);
-        TestDescription test1 = new TestDescription(RUN_NAME, TEST_NAME_2);
-        mockRunListener.testStarted(test1);
-        mockRunListener.testFailed(test1, "TIMEOUT");
-        mockRunListener.testEnded(test1, Collections.emptyMap());
-
-        TestDescription test2 = new TestDescription(RUN_NAME, TEST_NAME_1);
-        mockRunListener.testStarted(test2);
-        mockRunListener.testEnded(test2, Collections.emptyMap());
-        mockRunListener.testRunEnded(totalTime, Collections.emptyMap());
-
-        EasyMock.replay(mockRunListener);
-        VtsMultiDeviceTestResultParser resultParser =
-                new VtsMultiDeviceTestResultParser(mockRunListener, RUN_NAME);
-        resultParser.processNewLines(contents);
-        resultParser.done();
-        EasyMock.verify(mockRunListener);
-    }
-
-    /**
-     * Test the run method with a normal input.
-     */
-    @Test
-    public void testRunNormalInput() throws IOException {
-        String[] contents = getOutput(OUTPUT_FILE_1);
-        long totalTime = getTotalTime(contents);
-
-        // prepare the mock object
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(TEST_NAME_2, 2);
-        TestDescription test1 = new TestDescription(RUN_NAME, TEST_NAME_2);
-        mockRunListener.testStarted(test1);
-        mockRunListener.testEnded(test1, Collections.emptyMap());
-
-        TestDescription test2 = new TestDescription(RUN_NAME, TEST_NAME_1);
-        mockRunListener.testStarted(test2);
-        mockRunListener.testEnded(test2, Collections.emptyMap());
-        mockRunListener.testRunEnded(totalTime, Collections.emptyMap());
-
-        EasyMock.replay(mockRunListener);
-        VtsMultiDeviceTestResultParser resultParser =
-                new VtsMultiDeviceTestResultParser(mockRunListener, RUN_NAME);
-        resultParser.processNewLines(contents);
-        resultParser.done();
-        EasyMock.verify(mockRunListener);
-    }
-
-    /**
-     * Test the run method with a erroneous input.
-     */
-    @Test
-    public void testRunErrorInput() throws IOException {
-        String[] contents = getOutput(OUTPUT_FILE_3);
-        long totalTime = getTotalTime(contents);
-
-        // prepare the mock object
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(null, 0);
-        mockRunListener.testRunEnded(totalTime, Collections.<String, String>emptyMap());
-
-        EasyMock.replay(mockRunListener);
-        VtsMultiDeviceTestResultParser resultParser =
-                new VtsMultiDeviceTestResultParser(mockRunListener, RUN_NAME);
-        resultParser.processNewLines(contents);
-        resultParser.done();
-        EasyMock.verify(mockRunListener);
-    }
-    /**
-     * @param contents The logs that are used for a test case.
-     * @return {long} total running time of the test.
-     */
-    private long getTotalTime(String[] contents) {
-        Date startDate = getDate(contents, true);
-        Date endDate = getDate(contents, false);
-
-        if (startDate == null || endDate == null) {
-            return 0;
-        }
-        return endDate.getTime() - startDate.getTime();
-    }
-
-    /**
-     * Read a resource file as a string.
-     *
-     * @param resource the name of the resource.
-     * @return {String} the contents of the resource.
-     * @throws IOException if fails to read.
-     */
-    private String getResourceAsString(String resource) throws IOException {
-        InputStream input = getClass().getResourceAsStream(resource);
-        Assert.assertNotNull("Cannot load " + resource, input);
-        try {
-            return StreamUtil.getStringFromStream(input);
-        } finally {
-            input.close();
-        }
-    }
-
-    /**
-     * Returns the sample shell output for a test command.
-     *
-     * @return {String} shell output
-     * @throws IOException
-     */
-    private String[] getOutput(String filePath) throws IOException {
-        return getResourceAsString(filePath).split("\n");
-    }
-
-    /**
-     * Return the time in milliseconds to calculate the time elapsed in a particular test.
-     *
-     * @param lines The logs that need to be parsed.
-     * @param calculateStartDate flag which is true if we need to calculate start date.
-     * @return {Date} the start and end time corresponding to a test.
-     */
-    private Date getDate(String[] lines, boolean calculateStartDate) {
-        Date date = null;
-        int begin = calculateStartDate ? 0 : lines.length - 1;
-        int diff = calculateStartDate ? 1 : -1;
-
-        for (int index = begin; index >= 0 && index < lines.length; index += diff) {
-            lines[index].trim();
-            String[] toks = lines[index].split(" ");
-
-            // set the start time from the first line
-            // the loop should continue if exception occurs, else it can break
-            if (toks.length < 3) {
-                continue;
-            }
-            String time = toks[2];
-            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
-            try {
-                date = sdf.parse(time);
-            } catch (ParseException e) {
-                continue;
-            }
-            break;
-        }
-        return date;
-    }
-
-    /*
-     * Test parsing a summary containing passing and failing records.
-     */
-    @Test
-    public void testNormalSummary() throws IOException, JSONException {
-        JSONObject object = new JSONObject(getResourceAsString(SUMMARY_FILE_NORMAL));
-
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(RUN_NAME, 2);
-        TestDescription test1 = new TestDescription(RUN_NAME, TEST_NAME_1);
-        mockRunListener.testStarted(test1, 1525425222367l);
-        mockRunListener.testEnded(test1, 1525425223793l, Collections.emptyMap());
-
-        TestDescription test2 = new TestDescription(RUN_NAME, TEST_NAME_2);
-        mockRunListener.testStarted(test2, 1525425749536l);
-        mockRunListener.testFailed(test2, FAILURE_MESSAGE);
-        mockRunListener.testEnded(test2, 1525425749537l, Collections.emptyMap());
-        mockRunListener.testRunEnded(EasyMock.anyLong(), EasyMock.eq(Collections.emptyMap()));
-
-        EasyMock.replay(mockRunListener);
-        VtsMultiDeviceTestResultParser resultParser =
-                new VtsMultiDeviceTestResultParser(mockRunListener, RUN_NAME);
-        resultParser.processJsonFile(object);
-    }
-
-    /*
-     * Test parsing a summary containing class error message.
-     */
-    @Test
-    public void testClassErrorSummary() throws IOException, JSONException {
-        JSONObject object = new JSONObject(getResourceAsString(SUMMARY_FILE_CLASS_ERRORS));
-
-        ITestLifeCycleReceiver mockRunListener = EasyMock.createMock(ITestLifeCycleReceiver.class);
-        mockRunListener.testRunStarted(RUN_NAME, 1);
-        TestDescription test1 = new TestDescription(RUN_NAME, TEST_NAME_1);
-        mockRunListener.testStarted(test1, 1525424790227l);
-        mockRunListener.testFailed(test1, FAILURE_MESSAGE);
-        mockRunListener.testEnded(test1, 1525424790227l, Collections.emptyMap());
-        mockRunListener.testRunFailed(CLASS_ERROR_MESSAGE);
-        mockRunListener.testRunEnded(EasyMock.anyLong(), EasyMock.eq(Collections.emptyMap()));
-
-        EasyMock.replay(mockRunListener);
-        VtsMultiDeviceTestResultParser resultParser =
-                new VtsMultiDeviceTestResultParser(mockRunListener, RUN_NAME);
-        resultParser.processJsonFile(object);
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestTest.java
deleted file mode 100644
index d82799f..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/testtype/VtsMultiDeviceTestTest.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright (C) 2016 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 com.android.tradefed.testtype;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.build.IFolderBuildInfo;
-import com.android.tradefed.config.OptionSetter;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.result.FileInputStreamSource;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.result.LogDataType;
-import com.android.tradefed.util.CommandResult;
-import com.android.tradefed.util.CommandStatus;
-import com.android.tradefed.util.StreamUtil;
-import com.android.tradefed.util.VtsPythonRunnerHelper;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import org.easymock.EasyMock;
-import org.json.JSONObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * Unit tests for {@link VtsMultiDeviceTest}.
- * This class requires testcase config files.
- * The working directory is assumed to be
- * test/
- * which contains the same config as the build output
- * out/host/linux-x86/vts10/android-vts10/testcases/
- */
-@RunWith(JUnit4.class)
-public class VtsMultiDeviceTestTest {
-    private static final String PYTHON_BINARY = "python";
-    private static final String PYTHON_DIR = "mock/";
-    private static final String TEST_CASE_PATH =
-        "vts/testcases/host/sample/SampleLightTest";
-
-    private ITestInvocationListener mMockInvocationListener = null;
-    private VtsMultiDeviceTest mTest = null;
-    private ITestDevice mDevice = null;
-
-    /**
-     * Helper to initialize the various EasyMocks we'll need.
-     */
-    @Before
-    public void setUp() throws Exception {
-        mMockInvocationListener = EasyMock.createMock(ITestInvocationListener.class);
-        mTest = new VtsMultiDeviceTest() {
-            // TODO: Test this method.
-            @Override
-            protected void updateVtsRunnerTestConfig(JSONObject jsonObject) {
-                return;
-            }
-            @Override
-            protected VtsPythonRunnerHelper createVtsPythonRunnerHelper(File workingDir) {
-                return createMockVtsPythonRunnerHelper(CommandStatus.SUCCESS, workingDir);
-            }
-        };
-        mTest.setInvocationContext(createMockInvocationContext());
-        mTest.setTestCasePath(TEST_CASE_PATH);
-        mTest.setTestConfigPath(VtsMultiDeviceTest.DEFAULT_TESTCASE_CONFIG_PATH);
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Check VTS Python command strings.
-     */
-    private void assertCommand(String[] cmd) {
-        assertEquals(cmd[0], PYTHON_BINARY);
-        assertEquals(cmd[1], "-m");
-        assertEquals(cmd[2], TEST_CASE_PATH.replace("/", "."));
-        assertTrue(cmd[3].endsWith(".json"));
-        assertEquals(cmd.length, 4);
-    }
-
-    /**
-     * Create files in log directory.
-     */
-    private void createResult(String jsonPath) throws Exception {
-        String logPath = null;
-        try (FileInputStream fi = new FileInputStream(jsonPath)) {
-            JSONObject configJson = new JSONObject(StreamUtil.getStringFromStream(fi));
-            logPath = (String) configJson.get(VtsMultiDeviceTest.LOG_PATH);
-        }
-        // create a test result on log path
-        try (FileWriter fw = new FileWriter(new File(logPath, "test_run_summary.json"))) {
-            JSONObject outJson = new JSONObject();
-            fw.write(outJson.toString());
-        }
-        new File(logPath, VtsMultiDeviceTest.REPORT_MESSAGE_FILE_NAME).createNewFile();
-    }
-
-    /**
-     * Create a mock IBuildInfo with necessary getter methods.
-     */
-    private static IBuildInfo createMockBuildInfo() {
-        Map<String, String> buildAttributes = new HashMap<String, String>();
-        buildAttributes.put("ROOT_DIR", "DIR_NOT_EXIST");
-        buildAttributes.put("ROOT_DIR2", "DIR_NOT_EXIST");
-        buildAttributes.put("SUITE_NAME", "JUNIT_TEST_SUITE");
-        IFolderBuildInfo buildInfo = EasyMock.createNiceMock(IFolderBuildInfo.class);
-        EasyMock.expect(buildInfo.getBuildId()).andReturn("BUILD_ID").anyTimes();
-        EasyMock.expect(buildInfo.getBuildTargetName()).andReturn("BUILD_TARGET_NAME").anyTimes();
-        EasyMock.expect(buildInfo.getTestTag()).andReturn("TEST_TAG").anyTimes();
-        EasyMock.expect(buildInfo.getDeviceSerial()).andReturn("1234567890ABCXYZ").anyTimes();
-        EasyMock.expect(buildInfo.getRootDir()).andReturn(new File("DIR_NOT_EXIST")).anyTimes();
-        EasyMock.expect(buildInfo.getBuildAttributes()).andReturn(buildAttributes).anyTimes();
-        EasyMock.expect(buildInfo.getFile(EasyMock.eq("PYTHONPATH")))
-                .andReturn(new File("DIR_NOT_EXIST"))
-                .anyTimes();
-        EasyMock.expect(buildInfo.getFile(EasyMock.eq("VIRTUALENVPATH")))
-                .andReturn(new File("DIR_NOT_EXIST"))
-                .anyTimes();
-        EasyMock.replay(buildInfo);
-        return buildInfo;
-    }
-
-    /**
-     * Create a mock ITestDevice with necessary getter methods.
-     */
-    private ITestDevice createMockDevice() throws DeviceNotAvailableException {
-        // TestDevice
-        mDevice = EasyMock.createMock(ITestDevice.class);
-        EasyMock.expect(mDevice.getSerialNumber()).andReturn("1234567890ABCXYZ").anyTimes();
-        EasyMock.expect(mDevice.getBuildAlias()).andReturn("BUILD_ALIAS").anyTimes();
-        EasyMock.expect(mDevice.getBuildFlavor()).andReturn("BUILD_FLAVOR").anyTimes();
-        EasyMock.expect(mDevice.getBuildId()).andReturn("BUILD_ID").anyTimes();
-        EasyMock.expect(mDevice.getProductType()).andReturn("PRODUCT_TYPE").anyTimes();
-        EasyMock.expect(mDevice.getProductVariant()).andReturn("PRODUCT_VARIANT").anyTimes();
-        return mDevice;
-    }
-
-    /**
-     * Create a mock IInovationConext with necessary getter methods.
-     */
-    private IInvocationContext createMockInvocationContext() throws DeviceNotAvailableException {
-        IInvocationContext mockInvocationContext =
-                EasyMock.createNiceMock(IInvocationContext.class);
-        EasyMock.expect(mockInvocationContext.getDevices())
-                .andReturn(Arrays.asList(createMockDevice()))
-                .anyTimes();
-        EasyMock.expect(mockInvocationContext.getBuildInfos())
-                .andReturn(Arrays.asList(createMockBuildInfo()))
-                .anyTimes();
-        EasyMock.replay(mockInvocationContext);
-        return mockInvocationContext;
-    }
-
-    /**
-     * Create a process helper which mocks status of a running process.
-     */
-    private VtsPythonRunnerHelper createMockVtsPythonRunnerHelper(
-            CommandStatus status, File workingDir) {
-        return new VtsPythonRunnerHelper(new File(PYTHON_DIR), workingDir) {
-            @Override
-            public String runPythonRunner(
-                    String[] cmd, CommandResult commandResult, long testTimeout) {
-                assertCommand(cmd);
-                try {
-                    createResult(cmd[3]);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-                commandResult.setStatus(status);
-                return null;
-            }
-        };
-    }
-
-    /**
-     * Test the run method with a normal input.
-     */
-    @Test
-    public void testRunNormalInput() throws Exception {
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null BEGIN\""))
-                .andReturn("");
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null END\""))
-                .andReturn("");
-        mDevice.waitForDeviceAvailable();
-        EasyMock.replay(mDevice);
-        mTest.run(mMockInvocationListener);
-        EasyMock.verify(mDevice);
-    }
-
-    @Test
-    public void testRunNormalInput_restartFramework() throws Exception {
-        OptionSetter setter = new OptionSetter(mTest);
-        setter.setOptionValue("disable-framework", "true");
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null BEGIN\""))
-                .andReturn("");
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null END\""))
-                .andReturn("");
-        mDevice.waitForDeviceAvailable();
-        // We always restart the server at the end of the test
-        EasyMock.expect(mDevice.executeShellCommand("start")).andReturn("");
-        EasyMock.replay(mDevice);
-        mTest.run(mMockInvocationListener);
-        EasyMock.verify(mDevice);
-    }
-
-    /**
-     * Test the run method without DNAE exception.
-     */
-    @Test
-    public void testRunWithoutDNAE() throws Exception {
-        class NewVtsMultiDeviceTest extends VtsMultiDeviceTest {
-            private File mVtsRunnerLogDir;
-            public File getVtsRunnerLogDir() {
-                return mVtsRunnerLogDir;
-            }
-            @Override
-            protected void updateVtsRunnerTestConfig(JSONObject jsonObject) {
-                return;
-            }
-            @Override
-            protected String createVtsRunnerTestConfigJsonFile(File vtsRunnerLogDir) {
-                mVtsRunnerLogDir = vtsRunnerLogDir;
-                return super.createVtsRunnerTestConfigJsonFile(vtsRunnerLogDir);
-            }
-            @Override
-            protected VtsPythonRunnerHelper createVtsPythonRunnerHelper(File workingDir) {
-                return createMockVtsPythonRunnerHelper(CommandStatus.SUCCESS, workingDir);
-            }
-        }
-        NewVtsMultiDeviceTest newTest = new NewVtsMultiDeviceTest();
-        newTest.setInvocationContext(createMockInvocationContext());
-        newTest.setTestCasePath(TEST_CASE_PATH);
-        newTest.setTestConfigPath(VtsMultiDeviceTest.DEFAULT_TESTCASE_CONFIG_PATH);
-
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null BEGIN\""))
-                .andReturn("");
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null END\""))
-                .andReturn("");
-        mDevice.waitForDeviceAvailable();
-        EasyMock.replay(mDevice);
-        newTest.run(mMockInvocationListener);
-        assertFalse("VtsMultiDeviceTest runner fails to delete vtsRunnerLogDir",
-                newTest.getVtsRunnerLogDir().exists());
-        EasyMock.verify(mDevice);
-    }
-
-    /**
-     * Test the run method with DNAE exception.
-     */
-    @Test
-    public void testRunWithDNAE() throws Exception {
-        class NewVtsMultiDeviceTest extends VtsMultiDeviceTest {
-            private File mVtsRunnerLogDir;
-            public File getVtsRunnerLogDir() {
-                return mVtsRunnerLogDir;
-            }
-            @Override
-            protected void updateVtsRunnerTestConfig(JSONObject jsonObject) {
-                return;
-            }
-            @Override
-            protected String createVtsRunnerTestConfigJsonFile(File vtsRunnerLogDir) {
-                mVtsRunnerLogDir = vtsRunnerLogDir;
-                return super.createVtsRunnerTestConfigJsonFile(vtsRunnerLogDir);
-            }
-            @Override
-            protected VtsPythonRunnerHelper createVtsPythonRunnerHelper(File workingDir) {
-                return createMockVtsPythonRunnerHelper(CommandStatus.SUCCESS, workingDir);
-            }
-            @Override
-            protected void printToDeviceLogcatAboutTestModuleStatus(String status)
-                    throws DeviceNotAvailableException {
-                if ("END".equals(status)) {
-                    throw new DeviceNotAvailableException();
-                }
-            }
-        }
-        NewVtsMultiDeviceTest newTest = new NewVtsMultiDeviceTest();
-        newTest.setInvocationContext(createMockInvocationContext());
-        newTest.setTestCasePath(TEST_CASE_PATH);
-        newTest.setTestConfigPath(VtsMultiDeviceTest.DEFAULT_TESTCASE_CONFIG_PATH);
-        try {
-            newTest.run(mMockInvocationListener);
-            fail("DeviceNotAvailableException is expected");
-        } catch (DeviceNotAvailableException expected) {
-            // vtsRunnerLogDir should be deleted
-            assertFalse("VtsMultiDeviceTest runner fails to delete vtsRunnerLogDir",
-                    newTest.getVtsRunnerLogDir().exists());
-        }
-    }
-
-    /**
-     * Test the run method with Python runner returning CommandStatus.FAILED.
-     */
-    @Test
-    public void testRunWithPythonCommandStatusFailed() throws Exception {
-        class NewVtsMultiDeviceTest extends VtsMultiDeviceTest {
-            private File mVtsRunnerLogDir;
-            public File getVtsRunnerLogDir() {
-                return mVtsRunnerLogDir;
-            }
-            @Override
-            protected void updateVtsRunnerTestConfig(JSONObject jsonObject) {
-                return;
-            }
-            @Override
-            protected String createVtsRunnerTestConfigJsonFile(File vtsRunnerLogDir) {
-                mVtsRunnerLogDir = vtsRunnerLogDir;
-                return super.createVtsRunnerTestConfigJsonFile(vtsRunnerLogDir);
-            }
-            @Override
-            protected VtsPythonRunnerHelper createVtsPythonRunnerHelper(File workingDir) {
-                return createMockVtsPythonRunnerHelper(CommandStatus.FAILED, workingDir);
-            }
-        }
-        mMockInvocationListener.testLog(EasyMock.<String>anyObject(), EasyMock.eq(LogDataType.TEXT),
-                EasyMock.<FileInputStreamSource>anyObject());
-        EasyMock.expectLastCall().times(2);
-        mMockInvocationListener.testRunFailed((String) EasyMock.anyObject());
-        mMockInvocationListener.testRunEnded(
-                EasyMock.anyLong(), EasyMock.<HashMap<String, Metric>>anyObject());
-
-        NewVtsMultiDeviceTest newTest = new NewVtsMultiDeviceTest();
-        newTest.setInvocationContext(createMockInvocationContext());
-        newTest.setTestCasePath(TEST_CASE_PATH);
-        newTest.setTestConfigPath(VtsMultiDeviceTest.DEFAULT_TESTCASE_CONFIG_PATH);
-
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null BEGIN\""))
-                .andReturn("");
-        EasyMock.expect(mDevice.executeShellCommand(
-                                "log -p i -t \"VTS\" \"[Test Module] null END\""))
-                .andReturn("");
-        mDevice.waitForDeviceAvailable();
-
-        EasyMock.replay(mMockInvocationListener, mDevice);
-        newTest.run(mMockInvocationListener);
-        assertFalse("VtsMultiDeviceTest runner fails to delete vtsRunnerLogDir",
-                newTest.getVtsRunnerLogDir().exists());
-        EasyMock.verify(mMockInvocationListener, mDevice);
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/util/CmdUtilTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/util/CmdUtilTest.java
deleted file mode 100644
index 1713d03..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/util/CmdUtilTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
-
-import com.android.tradefed.device.ITestDevice;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.function.Predicate;
-import java.util.Vector;
-
-/**
- * Unit tests for {@link CmdUtil}.
- */
-@RunWith(JUnit4.class)
-public class CmdUtilTest {
-    static final String RUN_CMD = "run cmd";
-    static final String TEST_CMD = "test cmd";
-
-    class MockSleeper implements CmdUtil.ISleeper {
-        @Override
-        public void sleep(int seconds) throws InterruptedException {
-            return;
-        }
-    }
-
-    CmdUtil mCmdUtil = null;
-
-    // Predicates to stop retrying cmd.
-    private Predicate<String> mCheckEmpty = (String str) -> {
-        return str.isEmpty();
-    };
-
-    @Mock private ITestDevice mDevice;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        CmdUtil.ISleeper msleeper = new MockSleeper();
-        mCmdUtil = new CmdUtil();
-        mCmdUtil.setSleeper(msleeper);
-    }
-
-    @Test
-    public void testWaitCmdSuccess() throws Exception {
-        doReturn("").when(mDevice).executeShellCommand(TEST_CMD);
-        assertTrue(mCmdUtil.waitCmdResultWithDelay(mDevice, TEST_CMD, mCheckEmpty));
-    }
-
-    @Test
-    public void testWaitCmdSuccessWithRetry() throws Exception {
-        when(mDevice.executeShellCommand(TEST_CMD)).thenReturn("something").thenReturn("");
-        assertTrue(mCmdUtil.waitCmdResultWithDelay(mDevice, TEST_CMD, mCheckEmpty));
-    }
-
-    @Test
-    public void testWaitCmdSuccessFail() throws Exception {
-        doReturn("something").when(mDevice).executeShellCommand(TEST_CMD);
-        assertFalse(mCmdUtil.waitCmdResultWithDelay(mDevice, TEST_CMD, mCheckEmpty));
-    }
-
-    @Test
-    public void testRetrySuccess() throws Exception {
-        doReturn("").when(mDevice).executeShellCommand(TEST_CMD);
-        assertTrue(mCmdUtil.retry(mDevice, RUN_CMD, TEST_CMD, mCheckEmpty));
-        verify(mDevice, times(1)).executeShellCommand(eq(RUN_CMD));
-    }
-
-    @Test
-    public void testRetrySuccessWithRetry() throws Exception {
-        when(mDevice.executeShellCommand(TEST_CMD)).thenReturn("something").thenReturn("");
-        assertTrue(mCmdUtil.retry(mDevice, RUN_CMD, TEST_CMD, mCheckEmpty));
-        verify(mDevice, times(2)).executeShellCommand(eq(RUN_CMD));
-    }
-
-    @Test
-    public void testRetryFail() throws Exception {
-        doReturn("something").when(mDevice).executeShellCommand(TEST_CMD);
-        assertFalse(mCmdUtil.retry(mDevice, RUN_CMD, TEST_CMD, mCheckEmpty));
-        verify(mDevice, times(CmdUtil.MAX_RETRY_COUNT)).executeShellCommand(eq(RUN_CMD));
-    }
-
-    @Test
-    public void testRetryMultipleCommandsSuccess() throws Exception {
-        doReturn("").when(mDevice).executeShellCommand(TEST_CMD);
-        Vector<String> cmds = new Vector<String>();
-        int command_count = 5;
-        for (int i = 0; i < command_count; i++) {
-            cmds.add(RUN_CMD);
-        }
-        assertTrue(mCmdUtil.retry(mDevice, cmds, TEST_CMD, mCheckEmpty));
-        verify(mDevice, times(command_count)).executeShellCommand(eq(RUN_CMD));
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/util/OutputUtilTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/util/OutputUtilTest.java
deleted file mode 100644
index 78cfafc..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/util/OutputUtilTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import com.android.tradefed.log.ITestLogger;
-import com.android.tradefed.result.LogDataType;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-import org.mockito.MockitoAnnotations;
-
-import java.io.File;
-
-/**
- * Unit tests for {@link CmdUtil}.
- */
-@RunWith(JUnit4.class)
-public class OutputUtilTest {
-    OutputUtil mOutputUtil = null;
-
-    private ITestLogger mLogger;
-    private File mTestDir = null;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mLogger = EasyMock.createMock(ITestLogger.class);
-        mOutputUtil = new OutputUtil(mLogger);
-        mTestDir = FileUtil.createTempDir("output-util-test");
-    }
-
-    @After
-    public void tearDown() {
-        FileUtil.recursiveDelete(mTestDir);
-    }
-
-    /**
-     * Test using {@link OutputUtil#ZipVtsRunnerOutputDir(File)} on an empty dir. it shouldn't log
-     * anything.
-     */
-    @Test
-    public void testZipVtsRunnerOutputDir_emptyDir() {
-        EasyMock.replay(mLogger);
-        mOutputUtil.ZipVtsRunnerOutputDir(mTestDir);
-        EasyMock.verify(mLogger);
-    }
-
-    @Test
-    public void testZipVtsRunnerOutputDir() {
-        File latest = new File(mTestDir, "latest");
-        latest.mkdir();
-
-        mLogger.testLog(EasyMock.anyObject(), EasyMock.eq(LogDataType.ZIP), EasyMock.anyObject());
-        EasyMock.replay(mLogger);
-        mOutputUtil.ZipVtsRunnerOutputDir(mTestDir);
-        EasyMock.verify(mLogger);
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/util/ProcessHelperTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/util/ProcessHelperTest.java
deleted file mode 100644
index 70ff407..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/util/ProcessHelperTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2017 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 com.android.tradefed.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Test cases for {@link ProcessHelper}.
- */
-@RunWith(JUnit4.class)
-public class ProcessHelperTest {
-    private ProcessHelper mProcessHelper;
-
-    /**
-     * Return a mock process.
-     */
-    private Process createMockProcess(
-            String stdout, String stderr, int exitValue, long executionTimeMsecs) {
-        // No need to close OutputStream and ByteArrayInputStream because doing so has no effect.
-        OutputStream stdinStream = new OutputStream() {
-            @Override
-            public void write(int b) throws IOException {}
-        };
-        InputStream stdoutStream = new ByteArrayInputStream(stdout.getBytes());
-        InputStream stderrStream = new ByteArrayInputStream(stderr.getBytes());
-        long endTime = System.currentTimeMillis() + executionTimeMsecs;
-
-        return new Process() {
-            private boolean destroyed = false;
-
-            private boolean isRunning() {
-                return System.currentTimeMillis() <= endTime && !destroyed;
-            }
-
-            @Override
-            public void destroy() {
-                destroyed = true;
-            }
-
-            @Override
-            public int exitValue() {
-                if (isRunning()) {
-                    throw new IllegalThreadStateException();
-                }
-                return exitValue;
-            }
-
-            @Override
-            public InputStream getInputStream() {
-                return stdoutStream;
-            }
-
-            @Override
-            public OutputStream getOutputStream() {
-                return stdinStream;
-            }
-
-            @Override
-            public InputStream getErrorStream() {
-                return stderrStream;
-            }
-
-            @Override
-            public int waitFor() throws InterruptedException {
-                while (isRunning()) {
-                    Thread.sleep(50);
-                }
-                return exitValue;
-            }
-        };
-    }
-
-    /**
-     * Reset the ProcessHelper.
-     */
-    @Before
-    public void setUp() {
-        mProcessHelper = null;
-    }
-
-    /**
-     * Terminate the process, join threads and close IO streams.
-     */
-    @After
-    public void tearDown() {
-        if (mProcessHelper != null) {
-            mProcessHelper.cleanUp();
-        }
-    }
-
-    /**
-     * Test running a process that returns zero.
-     */
-    @Test
-    public void testSuccess() {
-        mProcessHelper = new ProcessHelper(createMockProcess("123\n", "456\n", 0, 10));
-        CommandStatus status = mProcessHelper.waitForProcess(10000);
-        assertEquals(CommandStatus.SUCCESS, status);
-        assertFalse(mProcessHelper.isRunning());
-        assertTrue(mProcessHelper.getStdout().equals("123\n"));
-        assertTrue(mProcessHelper.getStderr().equals("456\n"));
-    }
-
-    /**
-     * Test running a process that returns non-zero.
-     */
-    @Test
-    public void testFailure() {
-        mProcessHelper = new ProcessHelper(createMockProcess("123\n", "456\n", 1, 10));
-        CommandStatus status = mProcessHelper.waitForProcess(10000);
-        assertEquals(CommandStatus.FAILED, status);
-        assertFalse(mProcessHelper.isRunning());
-        assertTrue(mProcessHelper.getStdout().equals("123\n"));
-        assertTrue(mProcessHelper.getStderr().equals("456\n"));
-    }
-
-    /**
-     * Test running a process that times out.
-     */
-    @Test
-    public void testTimeout() {
-        mProcessHelper = new ProcessHelper(createMockProcess("", "", 1, 10000));
-        CommandStatus status = mProcessHelper.waitForProcess(100);
-        assertEquals(CommandStatus.TIMED_OUT, status);
-        assertTrue(mProcessHelper.isRunning());
-    }
-
-    /**
-     * Test running a process and being interrupted.
-     */
-    @Test
-    public void testInterrupt() throws InterruptedException {
-        mProcessHelper = new ProcessHelper(createMockProcess("", "", 1, 10000));
-        IRunUtil runUtil = RunUtil.getDefault();
-        Thread testThread = Thread.currentThread();
-
-        Thread timer = new Thread() {
-            @Override
-            public void run() {
-                try {
-                    Thread.sleep(50);
-                } catch (InterruptedException e) {
-                    fail();
-                }
-                runUtil.interrupt(testThread, "unit test");
-            }
-        };
-
-        runUtil.allowInterrupt(true);
-        timer.start();
-        try {
-            mProcessHelper.waitForProcess(100);
-            fail();
-        } catch (RunInterruptedException e) {
-            assertTrue(mProcessHelper.isRunning());
-        } finally {
-            timer.join(1000);
-        }
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsDashboardApiTransportTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsDashboardApiTransportTest.java
deleted file mode 100644
index 503039f..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsDashboardApiTransportTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import com.android.tradefed.build.IFolderBuildInfo;
-import com.google.api.client.http.HttpHeaders;
-import com.google.api.client.http.HttpRequest;
-import com.google.api.client.http.HttpRequestFactory;
-import com.google.api.client.http.HttpResponse;
-import com.google.api.client.http.HttpTransport;
-import com.google.api.client.http.LowLevelHttpRequest;
-import com.google.api.client.http.LowLevelHttpResponse;
-import com.google.api.client.json.Json;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.api.client.testing.http.HttpTesting;
-import com.google.api.client.testing.http.MockHttpTransport;
-import com.google.api.client.testing.http.MockLowLevelHttpRequest;
-import com.google.api.client.testing.http.MockLowLevelHttpResponse;
-import com.google.api.client.util.Key;
-import com.google.common.base.Preconditions;
-import java.io.File;
-import java.io.IOException;
-import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/**
- * Unit tests for {@link VtsDashboardApiTransportTest}.
- */
-@RunWith(JUnit4.class)
-public class VtsDashboardApiTransportTest {
-    private static final String SAMPLE = "123\u05D9\u05e0\u05D9\u05D1";
-
-    private HttpTransport mockHttpTransport = null;
-    private VtsDashboardApiTransport vtsDashboardApiTransport = null;
-
-    public static class RspResult {
-        @Key public int a;
-        @Key public int b;
-        @Key public String c;
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        this.mockHttpTransport = this.createMockHttpTransport(Json.MEDIA_TYPE, SAMPLE);
-        this.vtsDashboardApiTransport =
-                new VtsDashboardApiTransport(this.mockHttpTransport, HttpTesting.SIMPLE_URL);
-    }
-
-    /**
-     * Terminate the mockHttpTransport, join threads and close IO streams.
-     */
-    @After
-    public void tearDown() throws IOException {
-        if (this.mockHttpTransport != null) {
-            this.mockHttpTransport.shutdown();
-        }
-    }
-
-    /**
-     * Create a mock HttpTransport with returns the expected results.
-     */
-    private HttpTransport createMockHttpTransport(String mediaType, String content) {
-        HttpTransport transport = new MockHttpTransport() {
-            @Override
-            public LowLevelHttpRequest buildRequest(String method, String url) throws IOException {
-                return new MockLowLevelHttpRequest() {
-                    @Override
-                    public LowLevelHttpResponse execute() throws IOException {
-                        MockLowLevelHttpResponse result = new MockLowLevelHttpResponse();
-                        result.setContentType(mediaType);
-                        result.setContent(content);
-                        return result;
-                    }
-                };
-            }
-        };
-        return transport;
-    }
-
-    @Test
-    public void testBasicRequest() throws Exception {
-        HttpRequest request = mockHttpTransport.createRequestFactory().buildGetRequest(
-                HttpTesting.SIMPLE_GENERIC_URL);
-        HttpResponse response = request.execute();
-        assertEquals(SAMPLE, response.parseAsString());
-    }
-
-    @Test
-    public void testGetMethod() throws Exception {
-        String jsonContent = "{\"a\": 1234, \"b\": 5678, \"c\": \"getData\"}";
-        this.mockHttpTransport = this.createMockHttpTransport(Json.MEDIA_TYPE, jsonContent);
-        this.vtsDashboardApiTransport =
-                new VtsDashboardApiTransport(this.mockHttpTransport, HttpTesting.SIMPLE_URL);
-
-        RspResult rspResult = this.vtsDashboardApiTransport.get("", RspResult.class);
-        assertEquals(rspResult.a, 1234);
-        assertEquals(rspResult.b, 5678);
-        assertEquals(rspResult.c, "getData");
-    }
-
-    @Test
-    public void testPostMethod() throws Exception {
-        String jsonContent = "{\"a\": 4321, \"b\": 8765, \"c\": \"postData\"}";
-        this.mockHttpTransport = this.createMockHttpTransport(Json.MEDIA_TYPE, jsonContent);
-        this.vtsDashboardApiTransport =
-                new VtsDashboardApiTransport(this.mockHttpTransport, HttpTesting.SIMPLE_URL);
-
-        Map<String, Object> postData = new HashMap<>();
-        postData.put("a", "aData");
-        postData.put("z", 2343);
-        RspResult rspResult = this.vtsDashboardApiTransport.post("", postData, RspResult.class);
-        assertEquals(rspResult.a, 4321);
-        assertEquals(rspResult.b, 8765);
-        assertEquals(rspResult.c, "postData");
-    }
-
-    @Test
-    public void testPostFile() throws Exception {
-        String jsonContent = "{\"resultCode\": 1234, \"resultMsg\": \"success!\"}";
-        this.mockHttpTransport = this.createMockHttpTransport(Json.MEDIA_TYPE, jsonContent);
-        this.vtsDashboardApiTransport =
-                new VtsDashboardApiTransport(this.mockHttpTransport, HttpTesting.SIMPLE_URL);
-
-        File temp = File.createTempFile("temp-post-file", ".tmp");
-        String rsp = this.vtsDashboardApiTransport.postFile(
-                "", "application/octet-stream", temp.getAbsolutePath());
-        assertEquals(rsp, jsonContent);
-    }
-
-    @Test
-    public void testPostMultiFile() throws Exception {
-        String jsonContent = "{\"resultCode\": 1234, \"resultMsg\": \"success!\"}";
-        this.mockHttpTransport = this.createMockHttpTransport(Json.MEDIA_TYPE, jsonContent);
-        this.vtsDashboardApiTransport =
-                new VtsDashboardApiTransport(this.mockHttpTransport, HttpTesting.SIMPLE_URL);
-
-        Map<String, String> postFiles = new HashMap<>();
-        postFiles.put("application/octet-stream",
-                File.createTempFile("temp-post-file1", ".tmp").getAbsolutePath());
-        postFiles.put("application/json",
-                File.createTempFile("temp-post-file2", ".tmp").getAbsolutePath());
-        String rsp = this.vtsDashboardApiTransport.postMultiFiles("", postFiles);
-        assertEquals(rsp, jsonContent);
-    }
-}
diff --git a/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsPythonRunnerHelperTest.java b/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsPythonRunnerHelperTest.java
deleted file mode 100644
index 297b05f..0000000
--- a/harnesses/tradefed/tests/src/com/android/tradefed/util/VtsPythonRunnerHelperTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2018 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 com.android.tradefed.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-
-import com.android.tradefed.build.IFolderBuildInfo;
-import com.android.tradefed.log.LogUtil.CLog;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Unit tests for {@link VtsPythonRunnerHelper}.
- */
-@RunWith(JUnit4.class)
-public class VtsPythonRunnerHelperTest {
-    private static final String[] mPythonCmd = {"python"};
-    private static final long mTestTimeout = 1000 * 5;
-
-    private VtsPythonRunnerHelper mVtsPythonRunnerHelper = null;
-    private String mVirtualenvPath = "virtualenv_path_" + System.currentTimeMillis();
-
-    @Before
-    public void setUp() throws Exception {
-        IFolderBuildInfo buildInfo = EasyMock.createNiceMock(IFolderBuildInfo.class);
-        EasyMock.replay(buildInfo);
-    }
-
-    /**
-     * Create a mock runUtil with returns the expected results.
-     */
-    private IRunUtil createMockRunUtil() {
-        IRunUtil runUtil = new RunUtil() {
-            private String path = null;
-
-            @Override
-            public void setEnvVariable(String key, String value) {
-                super.setEnvVariable(key, value);
-                if (key.equals("PATH")) {
-                    path = value;
-                }
-            }
-
-            @Override
-            public CommandResult runTimedCmd(final long timeout, final String... command) {
-                CommandResult cmdRes = new CommandResult(CommandStatus.SUCCESS);
-                String out = "";
-                if (command.length == 2 && command[0].equals("which")
-                        && command[1].equals("python")) {
-                    if (path != null) {
-                        out = path.split(":")[0] + "/python";
-                    } else {
-                        out = "/usr/bin/python";
-                    }
-                }
-                cmdRes.setStdout(out);
-                return cmdRes;
-            }
-        };
-        return runUtil;
-    }
-
-    /**
-     * Create a mock runUtil with returns the expected command status.
-     */
-    private IRunUtil createMockRunUtil(CommandStatus status) {
-        IRunUtil runUtil = EasyMock.createMock(IRunUtil.class);
-        EasyMock.expect(runUtil.runTimedCmd(EasyMock.anyLong(), EasyMock.anyObject(),
-                                EasyMock.anyObject(), EasyMock.anyObject()))
-                .andReturn(new CommandResult(status));
-        runUtil.setWorkingDir(null);
-        return runUtil;
-    }
-
-    @Test
-    public void testProcessRunSuccess() {
-        IRunUtil runUtil = createMockRunUtil(CommandStatus.SUCCESS);
-        EasyMock.replay(runUtil);
-        mVtsPythonRunnerHelper =
-                new VtsPythonRunnerHelper(new File(mVirtualenvPath), null, runUtil);
-        CommandResult commandResult = new CommandResult();
-        String interruptMessage =
-                mVtsPythonRunnerHelper.runPythonRunner(mPythonCmd, commandResult, mTestTimeout);
-        assertEquals(interruptMessage, null);
-        assertEquals(commandResult.getStatus(), CommandStatus.SUCCESS);
-        EasyMock.verify(runUtil);
-    }
-
-    @Test
-    public void testProcessRunFailed() {
-        IRunUtil runUtil = createMockRunUtil(CommandStatus.FAILED);
-        EasyMock.replay(runUtil);
-        mVtsPythonRunnerHelper =
-                new VtsPythonRunnerHelper(new File(mVirtualenvPath), null, runUtil);
-        CommandResult commandResult = new CommandResult();
-        String interruptMessage =
-                mVtsPythonRunnerHelper.runPythonRunner(mPythonCmd, commandResult, mTestTimeout);
-        assertEquals(interruptMessage, null);
-        assertEquals(commandResult.getStatus(), CommandStatus.FAILED);
-        EasyMock.verify(runUtil);
-    }
-
-    @Test
-    public void testProcessRunTimeout() {
-        IRunUtil runUtil = createMockRunUtil(CommandStatus.TIMED_OUT);
-        EasyMock.replay(runUtil);
-        mVtsPythonRunnerHelper =
-                new VtsPythonRunnerHelper(new File(mVirtualenvPath), null, runUtil);
-        CommandResult commandResult = new CommandResult();
-        String interruptMessage =
-                mVtsPythonRunnerHelper.runPythonRunner(mPythonCmd, commandResult, mTestTimeout);
-        assertEquals(interruptMessage, null);
-        assertEquals(commandResult.getStatus(), CommandStatus.TIMED_OUT);
-        EasyMock.verify(runUtil);
-    }
-
-    @Test
-    public void testProcessRunInterrupted() {
-        IRunUtil runUtil = EasyMock.createMock(IRunUtil.class);
-        EasyMock.expect(runUtil.runTimedCmd(EasyMock.anyLong(), EasyMock.anyObject(),
-                                EasyMock.anyObject(), EasyMock.anyObject()))
-                .andThrow(new RunInterruptedException("abort"));
-        runUtil.setWorkingDir(null);
-        EasyMock.replay(runUtil);
-        mVtsPythonRunnerHelper =
-                new VtsPythonRunnerHelper(new File(mVirtualenvPath), null, runUtil);
-        CommandResult commandResult = new CommandResult();
-        String interruptMessage =
-                mVtsPythonRunnerHelper.runPythonRunner(mPythonCmd, commandResult, mTestTimeout);
-        assertNotEquals(interruptMessage, null);
-        assertEquals(commandResult.getStatus(), CommandStatus.TIMED_OUT);
-        EasyMock.verify(runUtil);
-    }
-
-    @Test
-    public void testActivateVirtualEnvNotExist() {
-        IRunUtil runUtil = createMockRunUtil();
-        assertEquals(null, VtsPythonRunnerHelper.getPythonBinDir(mVirtualenvPath));
-        VtsPythonRunnerHelper.activateVirtualenv(runUtil, mVirtualenvPath);
-        String pythonBinary = runUtil.runTimedCmd(1000, "which", "python").getStdout();
-        assertEquals(pythonBinary, "/usr/bin/python");
-    }
-
-    @Test
-    public void testActivateVirtualEnvExist() {
-        IRunUtil runUtil = createMockRunUtil();
-        String binDirName = EnvUtil.isOnWindows() ? "Scripts" : "bin";
-        File envDir = new File(mVirtualenvPath);
-        File binDir = new File(mVirtualenvPath, binDirName);
-        try {
-            CLog.d("%s", envDir.mkdir());
-            CLog.d("%s", binDir.mkdir());
-            assertTrue(binDir.exists());
-            assertEquals(binDir.getAbsolutePath(),
-                    VtsPythonRunnerHelper.getPythonBinDir(mVirtualenvPath));
-            VtsPythonRunnerHelper.activateVirtualenv(runUtil, mVirtualenvPath);
-            String pythonBinary = runUtil.runTimedCmd(1000, "which", "python").getStdout();
-            assertEquals(pythonBinary, new File(binDir, "python").getAbsolutePath());
-        } finally {
-            FileUtil.recursiveDelete(envDir);
-            FileUtil.recursiveDelete(binDir);
-        }
-    }
-
-}
diff --git a/tools/vts-tradefed/Android.bp b/tools/vts-tradefed/Android.bp
deleted file mode 100644
index 114ec19..0000000
--- a/tools/vts-tradefed/Android.bp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2016 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.
-
-tradefed_binary_host {
-    name: "vts10-tradefed",
-    wrapper: "etc/vts10-tradefed",
-    short_name: "VTS10",
-    full_name: "Vendor Test Suite V10",
-    version: "10_r1",
-    static_libs: [
-        "libvts_protos_host",
-        "gson-prebuilt-jar",
-        "google-api-java-client-min-repackaged",
-        "cts-tradefed-harness",
-        "vts10-tradefed-harness",
-    ],
-    libs: ["vts-core-tradefed-harness"],
-    manifest: "MANIFEST.mf",
-    java_resource_dirs: ["res"],
-}
diff --git a/tools/vts-tradefed/DynamicConfig.xml b/tools/vts-tradefed/DynamicConfig.xml
deleted file mode 100644
index 009e2aa..0000000
--- a/tools/vts-tradefed/DynamicConfig.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- Copyright (C) 2015 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.
--->
-
-<dynamicConfig>
-    <entry key="media_files_url">
-         <value>https://dl.google.com/dl/android/cts/android-cts-media-1.4.zip</value>
-    </entry>
-</dynamicConfig>
diff --git a/tools/vts-tradefed/MANIFEST.mf b/tools/vts-tradefed/MANIFEST.mf
deleted file mode 100644
index 4bd2094..0000000
--- a/tools/vts-tradefed/MANIFEST.mf
+++ /dev/null
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Implementation-Version: %BUILD_NUMBER%
diff --git a/tools/vts-tradefed/build/config.mk b/tools/vts-tradefed/build/config.mk
deleted file mode 100644
index 312eda9..0000000
--- a/tools/vts-tradefed/build/config.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2016 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.
-
-COMPATIBILITY_TESTCASES_OUT_vts10 := $(HOST_OUT)/vts10/android-vts10/testcases
diff --git a/tools/vts-tradefed/etc/Android.bp b/tools/vts-tradefed/etc/Android.bp
deleted file mode 100644
index 859b28e..0000000
--- a/tools/vts-tradefed/etc/Android.bp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2016 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.
-
-sh_binary_host {
-    name: "vtf",
-    src: "vtf",
-}
-
-sh_binary_host {
-    name: "vts10-tradefed_win",
-    src: "vts10-tradefed_win.bat",
-    filename_from_src: true,
-
-    target: {
-        not_windows: {
-            enabled: false,
-        },
-        windows: {
-            enabled: true,
-        },
-    },
-}
diff --git a/tools/vts-tradefed/etc/Android.mk b/tools/vts-tradefed/etc/Android.mk
deleted file mode 100644
index 69e85e8..0000000
--- a/tools/vts-tradefed/etc/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 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.
-
-.PHONY: vts10-tradefed-standalone
-vts10-tradefed-standalone: vts10-tradefed vts10-tradefed-tests loganalysis hosttestlib compatibility-host-util tradefed vts-tradefed
diff --git a/tools/vts-tradefed/etc/vtf b/tools/vts-tradefed/etc/vtf
deleted file mode 100755
index c4555f8..0000000
--- a/tools/vts-tradefed/etc/vtf
+++ /dev/null
@@ -1,2 +0,0 @@
-
-VTF_BUILD_TARGET_NAME=vtf vts10-tradefed
diff --git a/tools/vts-tradefed/etc/vts10-gce-tradefed b/tools/vts-tradefed/etc/vts10-gce-tradefed
deleted file mode 100755
index 197ab38..0000000
--- a/tools/vts-tradefed/etc/vts10-gce-tradefed
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2016 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.
-
-# launcher script for vts-tradefed harness
-# can be used from an Android build environment, or a standalone vts zip
-
-TF_GLOBAL_CONFIG=google/continuous/gce-global-config vts10-tradefed
diff --git a/tools/vts-tradefed/etc/vts10-tradefed b/tools/vts-tradefed/etc/vts10-tradefed
deleted file mode 100755
index c5ec8bf..0000000
--- a/tools/vts-tradefed/etc/vts10-tradefed
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2016 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.
-
-# launcher script for vts10-tradefed harness
-# can be used from an Android build environment, or a standalone vts zip
-#
-# Usage:
-#   # to test a device with system.img = v9.0 and vendor.img = v9.0
-#       $ vts10-tradefed
-#
-#   # to test a device with system.img = v9.0 and vendor.img = v8.1
-#       $ vts10-tradefed -v=8.1
-#
-#   # all other cases are unsupported
-#
-
-checkFile() {
-    if [ ! -f "$1" ]; then
-        echo "Unable to locate $1"
-        exit
-    fi;
-}
-
-checkPath() {
-    if ! type -P $1 &> /dev/null; then
-        echo "Unable to find $1 in path."
-        exit
-    fi;
-}
-
-checkPath adb
-checkPath java
-
-# check java version
-JAVA_VERSION=$(java -version 2>&1 | grep 'version [ "]\(1\.8\|9\|11\).*[ "]' | head -n 1)
-if [ "${JAVA_VERSION}" == "" ]; then
-    echo "Wrong java version. 1.8, 9, or 11 is required."
-    exit
-fi
-
-# check debug flag and set up remote debugging
-if [ -n "${TF_DEBUG}" ]; then
-  if [ -z "${TF_DEBUG_PORT}" ]; then
-    TF_DEBUG_PORT=10088
-  fi
-  RDBG_FLAG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${TF_DEBUG_PORT}
-fi
-
-# get OS
-HOST=`uname`
-if [ "$HOST" == "Linux" ]; then
-    OS="linux-x86"
-elif [ "$HOST" == "Darwin" ]; then
-    OS="darwin-x86"
-else
-    echo "Unrecognized OS"
-    exit
-fi
-
-if [ "$VTF_BUILD_TARGET_NAME" != "vtf" ]; then
-    VTF_BUILD_TARGET_NAME="vts10"
-fi
-
-# check if in Android build env
-if [ ! -z "${ANDROID_BUILD_TOP}" ]; then
-    if [ ! -z "${ANDROID_HOST_OUT}" ]; then
-      VTS10_ROOT=${ANDROID_HOST_OUT}/${VTF_BUILD_TARGET_NAME}
-    else
-      VTS10_ROOT=${ANDROID_BUILD_TOP}/${OUT_DIR:-out}/host/${OS}/${VTF_BUILD_TARGET_NAME}
-    fi
-    if [ ! -d ${VTS10_ROOT} ]; then
-        echo "Could not find $VTS10_ROOT in Android build environment. Try 'make ${VTF_BUILD_TARGET_NAME}'"
-        exit
-    fi;
-fi;
-
-if [ -z ${VTS10_ROOT} ]; then
-    # assume we're in an extracted vts install
-    VTS10_ROOT="$(dirname $(readlink -e $0))/../.."
-fi;
-
-VTS10_JAR_DIR=${VTS10_ROOT}/android-${VTF_BUILD_TARGET_NAME}/tools
-STANDALONE_JAR_DIR=${ANDROID_HOST_OUT}/framework
-JAR_DIRS="$VTS10_JAR_DIR
-  $STANDALONE_JAR_DIR"
-
-JAR_DIR=""
-# Wherever we find the tradefed jar is where we expect the other jars to be.
-TRADEFED_JAR="tradefed"
-for CHECK_JAR_DIR in $JAR_DIRS; do
-  if [ -f ${CHECK_JAR_DIR}/${TRADEFED_JAR}.jar ]; then
-    JAR_DIR=$CHECK_JAR_DIR
-    break
-  fi;
-done
-
-# If we didn't find the TF jar, resort to tf prebuilt in VTS_JAR_DIR.
-if [ -z $JAR_DIR ]; then
-  JAR_DIR=$VTS10_JAR_DIR
-  TRADEFED_JAR="tradefed-prebuilt"
-fi
-
-JARS="${TRADEFED_JAR}
-  loganalysis
-  hosttestlib
-  vts10-tradefed
-  vts10-tradefed-tests
-  compatibility-host-util
-  vts-core-tradefed-harness"
-
-for JAR in $JARS; do
-    checkFile ${JAR_DIR}/${JAR}.jar
-    JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}.jar
-done
-
-# to run in the lab.
-OPTIONAL_JARS="
-  android-${VTF_BUILD_TARGET_NAME}/tools/google-tradefed-vts-prebuilt
-  google-tradefed-prebuilt
-  google-tradefed-tests
-  google-tf-prod-tests
-  google-tradefed"
-
-for JAR in $OPTIONAL_JARS; do
-    for OPT_JAR_DIR in $VTS10_ROOT $JAR_DIR; do
-        if [ -f "${OPT_JAR_DIR}/${JAR}.jar" ]; then
-            echo "Including optional JAR: ${OPT_JAR_DIR}/${JAR}.jar"
-            JAR_PATH=${JAR_PATH}:${OPT_JAR_DIR}/${JAR}.jar
-            break
-        fi;
-    done
-done
-
-# load any shared libraries for host-side executables
-LIB_DIR=${VTS10_ROOT}/android-${VTF_BUILD_TARGET_NAME}/lib
-if [ "$HOST" == "Linux" ]; then
-    LD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${LD_LIBRARY_PATH}
-    export LD_LIBRARY_PATH
-elif [ "$HOST" == "Darwin" ]; then
-    DYLD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${DYLD_LIBRARY_PATH}
-    export DYLD_LIBRARY_PATH
-fi
-
-# include any host-side test jars
-for j in ${VTS10_ROOT}/android-${VTF_BUILD_TARGET_NAME}/testcases/*.jar; do
-    JAR_PATH=${JAR_PATH}:$j
-done
-
-ARGS=()
-for var in "$@"
-do
-case $var in
-    -v=*|--vendor-image=*)
-    VENDOR="${var#*=}"
-    if [ "${VENDOR}" == "9.0" ]; then
-        VENDOR=""
-    elif [ "${VENDOR}" != "8.1" ]; then
-        echo "Supports only --vendor-image=8.1."
-        echo "By default, 9.0 is the supported vendor.img version."
-        exit 1
-    fi
-    ;;
-    *)
-    ARGS+=("$var")
-    ;;
-esac
-done
-
-if [ -z "${VENDOR}" ]; then
-    VTS10_TESTCASES=${VTS10_ROOT}/android-${VTF_BUILD_TARGET_NAME}/testcases/
-else
-    VTS10_TESTCASES=${VTS10_ROOT}/android-${VTF_BUILD_TARGET_NAME}/${VENDOR}/testcases/
-fi
-
-cd ${VTS10_TESTCASES}; VTS10_TESTCASES=${VTS10_TESTCASES} java -Xmx4096m $RDBG_FLAG -cp ${JAR_PATH} -DVTS10_ROOT=${VTS10_ROOT} com.android.compatibility.common.tradefed.command.CompatibilityConsole "${ARGS[@]}"
diff --git a/tools/vts-tradefed/etc/vts10-tradefed_win.bat b/tools/vts-tradefed/etc/vts10-tradefed_win.bat
deleted file mode 100644
index 9e77b52..0000000
--- a/tools/vts-tradefed/etc/vts10-tradefed_win.bat
+++ /dev/null
@@ -1,107 +0,0 @@
-:: Copyright (C) 2017 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.

-

-:: Launcher script for vts10-tradefed harness

-:: Can be used from an Android build environment, or a standalone VTS zip

-:: Caution: Although this script can be used to run VTS on Windows,

-:: Windows host is not yet officially supported.

-

-@echo off

-setlocal ENABLEDELAYEDEXPANSION

-

-set ADB=adb.exe

-set JAVA=java.exe

-where %ADB% || (echo Unable to find %ADB% && goto:eof)

-where %JAVA% || (echo Unable to find %JAVA% && goto:eof)

-

-:: check java version

-%JAVA% -version 2>&1 | findstr /R "version\ \"1*\.*[89].*\"$" || (

-    echo Wrong java version. 1.8 or 9 is required.

-    goto:eof

-)

-

-:: check debug flag and set up remote debugging

-if not [%TF_DEBUG%] == [] (

-    if [%TF_DEBUG_PORT%] == [] (

-        set TF_DEBUG_PORT=10088

-    )

-    set RDBG_FLAG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=!TF_DEBUG_PORT!

-)

-

-:: assume built on Linux; running on Windows.

-:: find VTS_ROOT directory by location of this script

-echo %~dp0 | findstr /R \\out\\host\\windows-x86\\bin && (

-    set VTS_ROOT=%~dp0\..\..\linux-x86\vts

-)

-

-if [%VTS_ROOT%] == [] (

-    :: assume in an extracted VTS installation package

-    set VTS_ROOT=%~dp0\..\..

-)

-echo VTS_ROOT=%VTS_ROOT%

-

-:: java classpath

-set JAR_DIR=%VTS_ROOT%\android-vts\tools

-

-:: tradefed.jar

-set TRADEFED_JAR=%JAR_DIR%\tradefed.jar

-if not exist "%TRADEFED_JAR%" (

-    echo Unable to locate %TRADEFED_JAR%. Try prebuilt jar.

-    set TRADEFED_JAR=%JAR_DIR%\tradefed-prebuilt.jar

-)

-if not exist "%TRADEFED_JAR%" (

-    echo Unable to locate %TRADEFED_JAR%

-    goto:eof

-)

-set JAR_PATH=%TRADEFED_JAR%

-

-:: other required jars

-set JARS=^

-  loganalysis^

-  hosttestlib^

-  vts10-tradefed^

-  vts10-tradefed-tests^

-  compatibility-host-util

-for %%J in (%JARS%) do (

-    set JAR=%JAR_DIR%\%%J.jar

-    if not exist "!JAR!" ( echo Unable to locate !JAR! && goto:eof )

-    set JAR_PATH=!JAR_PATH!;!JAR!

-)

-

-:: to run in the lab.

-set OPTIONAL_JARS=^

-  android-vts\tools\google-tradefed-vts-prebuilt^

-  google-tradefed-prebuilt^

-  google-tradefed-tests^

-  google-tf-prod-tests

-

-for %%J in (%OPTIONAL_JARS%) do (

-    set JAR=%VTS_ROOT%\%%J.jar

-    if exist "!JAR!" (

-        echo Including optional JAR: !JAR!

-        set JAR_PATH=!JAR_PATH!;!JAR!

-    ) else (

-        echo Optional JAR not found: !JAR!

-    )

-)

-

-:: skip loading shared libraries for host-side executables

-

-:: include any host-side test jars

-set JAR_PATH=%JAR_PATH%;%VTS_ROOT%\android-vts\testcases\*

-echo JAR_PATH=%JAR_PATH%

-

-cd %VTS_ROOT%/android-vts/testcases

-%JAVA% %RDBG_FLAG% -cp "%JAR_PATH%" "-DVTS_ROOT=%VTS_ROOT%" com.android.compatibility.common.tradefed.command.CompatibilityConsole %*

-

diff --git a/tools/vts-tradefed/res/config/common-preparers.xml b/tools/vts-tradefed/res/config/common-preparers.xml
deleted file mode 100644
index cebe6af..0000000
--- a/tools/vts-tradefed/res/config/common-preparers.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Common preparer for both vts and cts-on-gsi">
-  <multi_target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer">
-        <option name="dep-module" value="pip>=9.0.0" />
-        <option name="dep-module" value="enum" />
-        <option name="dep-module" value="future" />
-        <option name="dep-module" value="futures" />
-        <option name="dep-module" value="google-api-python-client" />
-        <option name="dep-module" value="google-auth>=1.4.2" />
-        <option name="dep-module" value="google-cloud-storage" />
-        <option name="dep-module" value="httplib2" />
-        <option name="dep-module" value="oauth2client" />
-        <option name="dep-module" value="protobuf" />
-        <option name="dep-module" value="pyasn1>=0.4.1" />
-        <option name="dep-module" value="pyserial" />
-        <option name="dep-module" value="requests" />
-  </multi_target_preparer>
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-base-common.xml b/tools/vts-tradefed/res/config/cts-base-common.xml
deleted file mode 100644
index 89df8d2..0000000
--- a/tools/vts-tradefed/res/config/cts-base-common.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Base test plan for running CTS test modules with VTS10">
-
-    <option name="dynamic-sharding" value="true" />
-    <device_recovery class="com.android.tradefed.device.WaitDeviceRecovery" />
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider">
-        <option name="url-suite-name-override" value="CTS" />
-    </build_provider>
-
-    <option name="compatibility:test-arg" value="com.android.tradefed.testtype.AndroidJUnitTest:rerun-from-file:true" />
-    <option name="compatibility:test-arg" value="com.android.tradefed.testtype.AndroidJUnitTest:fallback-to-serial-rerun:false" />
-    <option name="compatibility:test-arg" value="com.android.compatibility.testtype.LibcoreTest:rerun-from-file:true" />
-    <option name="compatibility:test-arg" value="com.android.compatibility.testtype.LibcoreTest:fallback-to-serial-rerun:false" />
-
-    <logger class="com.android.tradefed.log.FileLogger">
-        <option name="log-level-display" value="WARN" />
-    </logger>
-    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
-    <result_reporter class="com.android.compatibility.common.tradefed.result.VtsResultReporter" />
-    <result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
-
-    <include name="cts-preconditions" />
-    <option name="dynamic-config-pusher:dynamic-resource-name" value="vts10-tradefed" />
-    <include name="cts-system-checkers" />
-    <include name="cts-known-failures" />
-
-    <option name="test-tag" value="cts" />
-
-    <option name="enable-root" value="true" />
-    <!-- retain 200MB of host log -->
-    <option name="max-log-size" value="200" />
-    <!--  retain 200MB of logcat -->
-    <option name="max-tmp-logcat-file" value="209715200" />
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="settings put global package_verifier_enable 0" />
-        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
-    </target_preparer>
-
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.PropertyCheck">
-        <option name="property-name" value="ro.build.type" />
-        <option name="expected-value" value="user"/> <!-- Device should have user build -->
-        <option name="throw-error" value="false"/> <!-- Only print warning if not user build -->
-    </target_preparer>
-
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.PropertyCheck">
-        <option name="property-name" value="ro.product.locale" />
-        <option name="expected-value" value="en-US"/> <!-- Device locale should be US English -->
-        <option name="throw-error" value="false"/> <!-- Only print warning if not en-US -->
-    </target_preparer>
-    <template-include name="reporters" default="basic-reporters" />
-
-    <!-- Include additional test metadata output. -->
-    <template-include name="metadata-reporters" default="empty" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-
-    <option name="compatibility:primary-abi-only" value="true" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-base-filters.xml b/tools/vts-tradefed/res/config/cts-base-filters.xml
deleted file mode 100644
index 2aff2bc..0000000
--- a/tools/vts-tradefed/res/config/cts-base-filters.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<configuration description="Base test filters for CTS based tests">
-    <!-- Specialization to be able to run CTS inside android-vts10.zip -->
-    <option name="compatibility-build-provider:url-suite-name-override" value="CTS" />
-    <option name="dynamic-config-pusher:dynamic-resource-name" value="vts10-tradefed" />
-    <option name="compatibility:primary-abi-only" value="true" />
-    <option name="compatibility:config-patterns" value="Cts.*\.config" />
-
-    <!-- Explicitly include CTS components listed in CtsConfigLoadingTest.java -->
-    <option name="compatibility:module-metadata-include-filter" key="component" value="abuse" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="art" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="auth" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="auto" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="backup" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="bionic" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="bluetooth" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="camera" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="deqp" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="devtools" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="framework" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="graphics" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="inputmethod" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="libcore" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="location" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="media" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="metrics" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="misc" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="networking" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="neuralnetworks" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="renderscript" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="security" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="statsd" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="systems" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="sysui" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="telecom" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="tv" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="uitoolkit" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="vr" />
-    <option name="compatibility:module-metadata-include-filter" key="component" value="webview" />
-
-    <!-- Exclude vts-hal-adapter tests -->
-    <option name="compatibility:module-metadata-exclude-filter" key="plan" value="vts-hal-adapter" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-base.xml b/tools/vts-tradefed/res/config/cts-base.xml
deleted file mode 100644
index 26db51c..0000000
--- a/tools/vts-tradefed/res/config/cts-base.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Base test plan for CTS based tests">
-
-    <!-- include base cts -->
-    <include name="cts" />
-
-    <!-- Filters to run a CTS-like command within VTS. For example: cts-on-gsi -->
-    <include name="cts-base-filters" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-gsi-validation.xml b/tools/vts-tradefed/res/config/cts-gsi-validation.xml
deleted file mode 100644
index d62bc65..0000000
--- a/tools/vts-tradefed/res/config/cts-gsi-validation.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Runs a subset of CTS tests for GSI validation">
-
-    <include name="cts" />
-    <option name="compatibility-build-provider:url-suite-name-override" value="CTS" />
-    <option name="dynamic-config-pusher:dynamic-resource-name" value="vts10-tradefed" />
-
-
-    <option name="plan" value="cts-gsi-validation" />
-
-    <!-- Include test modules -->
-    <option name="compatibility:include-filter" value="CtsBionicCases" />
-    <option name="compatibility:include-filter" value="CtsOsHostTestCases" />
-    <option name="compatibility:include-filter" value="CtsOsTestCases" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-hal-coverage.xml b/tools/vts-tradefed/res/config/cts-hal-coverage.xml
deleted file mode 100644
index b00f665..0000000
--- a/tools/vts-tradefed/res/config/cts-hal-coverage.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-
-<configuration description="Running CTS test modules with coverage measurment">
-    <include name="cts-base" />
-    <option name="plan" value="cts-coverage" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsCoveragePreparer" >
-        <option name="coverage-report-dir" value="vts-coverage" />
-    </target_preparer>
-    <metrics_collector class="com.android.tradefed.device.metric.VtsCoverageCollector" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-hal-profiling.xml b/tools/vts-tradefed/res/config/cts-hal-profiling.xml
deleted file mode 100644
index 1c865a8..0000000
--- a/tools/vts-tradefed/res/config/cts-hal-profiling.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-
-<configuration description="Running CTS test modules with hal trace profiling">
-    <include name="cts-base" />
-    <option name="plan" value="cts-profiling" />
-    <option name="enable-root" value="true" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsTraceCollectPreparer" />
-    <metrics_collector class="com.android.tradefed.device.metric.VtsHalTraceCollector" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/cts-vendor-interface.xml b/tools/vts-tradefed/res/config/cts-vendor-interface.xml
deleted file mode 100644
index 042859a..0000000
--- a/tools/vts-tradefed/res/config/cts-vendor-interface.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="Runs a subset of CTS tests that can heavily exercise HALs">
-
-    <include name="cts" />
-    <option name="compatibility-build-provider:url-suite-name-override" value="CTS" />
-    <option name="dynamic-config-pusher:dynamic-resource-name" value="vts10-tradefed" />
-
-    <option name="plan" value="cts-vendor-interface" />
-
-    <!-- Include test modules -->
-    <option name="compatibility:include-filter" value="CtsAccessibilityServiceTestCases" />
-    <option name="compatibility:include-filter" value="CtsAccountManagerTestCases" />
-    <option name="compatibility:include-filter" value="CtsAnimationTestCases" />
-    <option name="compatibility:include-filter" value="CtsAppTestCases" />
-    <option name="compatibility:include-filter" value="CtsAtraceHostTestCases" />
-    <option name="compatibility:include-filter" value="CtsAutoFillServiceTestCases" />
-    <option name="compatibility:include-filter" value="CtsCameraTestCases" />
-    <option name="compatibility:include-filter" value="CtsContentTestCases" />
-    <option name="compatibility:include-filter" value="CtsDeqpTestCases" />
-    <option name="compatibility:include-filter" value="CtsFragmentTestCases" />
-    <option name="compatibility:include-filter" value="CtsGraphicsTestCases" />
-    <option name="compatibility:include-filter" value="CtsHostsideNetworkTests" />
-    <option name="compatibility:include-filter" value="CtsIcuTestCases" />
-    <option name="compatibility:include-filter" value="CtsKeystoreTestCases" />
-    <option name="compatibility:include-filter" value="CtsLibcoreOjTestCases" />
-    <option name="compatibility:include-filter" value="CtsLibcoreTestCases" />
-    <option name="compatibility:include-filter" value="CtsLocationTestCases" />
-    <option name="compatibility:include-filter" value="CtsMediaStressTestCases" />
-    <option name="compatibility:include-filter" value="CtsMidiTestCases" />
-    <option name="compatibility:include-filter" value="CtsMonkeyTestCases" />
-    <option name="compatibility:include-filter" value="CtsNetTestCases" />
-    <option name="compatibility:include-filter" value="CtsOsTestCases" />
-    <option name="compatibility:include-filter" value="CtsPdfTestCases" />
-    <option name="compatibility:include-filter" value="CtsPreference2TestCases" />
-    <option name="compatibility:include-filter" value="CtsPrintTestCases" />
-    <option name="compatibility:include-filter" value="CtsProviderTestCases" />
-    <option name="compatibility:include-filter" value="CtsRsBlasTestCases" />
-    <option name="compatibility:include-filter" value="CtsSecurityHostTestCases" />
-    <option name="compatibility:include-filter" value="CtsSecurityTestCases" />
-    <option name="compatibility:include-filter" value="CtsSensorTestCases" />
-    <option name="compatibility:include-filter" value="CtsShortcutHostTestCases" />
-    <option name="compatibility:include-filter" value="CtsSignatureTestCases" />
-    <option name="compatibility:include-filter" value="CtsSignatureTestCases" />
-    <option name="compatibility:include-filter" value="CtsSustainedPerformanceHostTestCases" />
-    <option name="compatibility:include-filter" value="CtsTelephonyTestCases" />
-    <option name="compatibility:include-filter" value="CtsTextTestCases" />
-    <option name="compatibility:include-filter" value="CtsUiRenderingTestCases" />
-    <option name="compatibility:include-filter" value="CtsViewTestCases" />
-    <option name="compatibility:include-filter" value="CtsWebkitTestCases" />
-    <option name="compatibility:include-filter" value="CtsWidgetTestCases" />
-    <option name="compatibility:include-filter" value="CtsWindowManagerDeviceTestCases" />
-
-    <option name="compatibility:test-arg" value="com.android.tradefed.testtype.AndroidJUnitTest:include-annotation:com.android.compatibility.common.util.VendorInterfaceTest" />
-    <option name="compatibility:test-arg" value="com.android.compatibility.common.tradefed.testtype.JarHostTest:include-annotation:com.android.compatibility.common.util.VendorInterfaceTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/plans.md b/tools/vts-tradefed/res/config/plans.md
deleted file mode 100644
index 197310e..0000000
--- a/tools/vts-tradefed/res/config/plans.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# VTS Test Plans
-
-A VTS test plan consists of a set of VTS tests. Typically the tests within a
-plan are for the same target component or testing the same or similar aspect
-(e.g., functionality, performance, robustness, or power). There are three kinds
-of plans in VTS:
-
-## 1. Official Plans
-
-Official plans contain only verified tests, and are for all Android developers
-and partners.
-
- * __vts__: For all default VTS tests.
- * __vts-firmware__: For all default VTS System Firmware tests.
- * __vts-fuzz__: For all default VTS fuzz tests.
- * __vts-hal__: For all default VTS HAL (hardware abstraction layer) module tests.
- * __vts-hal-profiling__: For all default VTS HAL performance profiling tests.
- * __vts-hal-replay__: For all default VTS HAL replay tests.
- * __vts-kernel__: For all default VTS kernel tests.
- * __vts-library__: For all default VTS library tests.
- * __vts-performance__: For all default VTS performance tests
-
-## 2. Staging Plans
-
-Serving plans contain experimental tests, and are for Android
-partners to use as part of their continuous integration infrastructure. The
-name of a serving plan always starts with 'vts-staging-'.
-
-## 3. Other Plans
-
-The following plans are also available for development purposes.
-
- * __vts-camera-its__: For camera ITS (Image Test Suite) tests ported to VTS.
- * __vts-codelab__: For VTS codelab.
- * __vts-codelab-multi-device__: For VTS codelab of multi-device testing.
- * __vts-gce__: For VTS tests which can be run on Google Compute Engine (GCE)
- * __vts-hal-auto__: For VTS automotive vehicle HAL test.
- * __vts-hal-tv__: For VTS tv HAL test.
- * __vts-host__: For VTS host-driven tests.
- * __vts-performance-systrace__: For VTS performance tests with systrace
-   enabled.
- * __vts-presubmit__: For VTS pre-submit time tests.
- * __vts-security__: For VTS security tests.
- * __vts-system__: For VTS system tests.
- * __vts-vndk__: for VTS vndk tests.
diff --git a/tools/vts-tradefed/res/config/reporters/empty.xml b/tools/vts-tradefed/res/config/reporters/empty.xml
deleted file mode 100644
index 105644e..0000000
--- a/tools/vts-tradefed/res/config/reporters/empty.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<!-- Configuration with no result reporters. -->
-<configuration description="Configuration with no result reporters" >
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-app-multi.xml b/tools/vts-tradefed/res/config/vts-app-multi.xml
deleted file mode 100644
index 37489f4..0000000
--- a/tools/vts-tradefed/res/config/vts-app-multi.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS App Multi-Device Test Plan">
-  <include name="vts-base-multi-device" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-app-multi" />
-
-  <!-- First target Android device in camera ITS-in-a-box -->
-  <device name="device1">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="true"/>
-        <option name="push-group" value="HalHidlHostTest.push"/>
-        <option name="cleanup" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-        <option name="test-file-name" value="DATA/app/sl4a/sl4a.apk" />
-        <option name="cleanup-apks" value="true" />
-        <option name="install-arg" value="-r" />
-    </target_preparer>
-  </device>
-
-  <!-- Second target Android device in camera ITS-in-a-box -->
-  <device name="device2">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="true"/>
-        <option name="push-group" value="HalHidlHostTest.push"/>
-        <option name="cleanup" value="true"/>
-        <!--  <option name="push-group" value="HostDrivenTest.push" /> -->
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-        <option name="test-file-name" value="DATA/app/sl4a/sl4a.apk" />
-        <option name="cleanup-apks" value="true" />
-        <option name="install-arg" value="-r" />
-    </target_preparer>
-  </device>
-
-  <option name="compatibility:include-filter" value="VtsAppWifiAwarePerformanceLatency" />
-  <!-- <option name="compatibility:include-filter" value="VtsAppWifiAwarePerformanceThroughput" /> -->
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-app.xml b/tools/vts-tradefed/res/config/vts-app.xml
deleted file mode 100644
index 00c38f0..0000000
--- a/tools/vts-tradefed/res/config/vts-app.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS App Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-app" />
-
-  <option name="compatibility:include-filter" value="VtsAppWifiNativeTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-base-common.xml b/tools/vts-tradefed/res/config/vts-base-common.xml
deleted file mode 100644
index b02a16f..0000000
--- a/tools/vts-tradefed/res/config/vts-base-common.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Main Test Plan">
-  <include name="common-preparers" />
-  <device_recovery class="com.android.tradefed.device.WaitDeviceRecovery" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.AndroidJUnitTest:rerun-from-file:true" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.AndroidJUnitTest:fallback-to-serial-rerun:false" />
-  <logger class="com.android.tradefed.log.FileLogger">
-    <option name="log-level-display" value="INFO" />
-  </logger>
-  <option name="compatibility:skip-all-system-status-check" value="true" />
-  <option name="enable-root" value="true" />
-  <option name="max-log-size" value="200" />
-  <object type="vts-vendor-config" class="com.android.tradefed.util.VtsVendorConfigFileUtil" />
-  <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
-  <result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
-  <result_reporter class="com.android.compatibility.common.tradefed.result.suite.CertificationSuiteResultReporter" />
-  <template-include name="reporters" default="basic-reporters" />
-  <target_preparer class="com.android.tradefed.targetprep.VtsTestPlanResultReporter" />
-
-  <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite">
-    <option name="config-patterns" value="Vts.*\.config" />
-  </test>
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-base-multi-device.xml b/tools/vts-tradefed/res/config/vts-base-multi-device.xml
deleted file mode 100644
index 600a917..0000000
--- a/tools/vts-tradefed/res/config/vts-base-multi-device.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Base Config for Multi-device Test Plans">
-  <include name="vts-base-common" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-base-presubmit.xml b/tools/vts-tradefed/res/config/vts-base-presubmit.xml
deleted file mode 100644
index 737d13b..0000000
--- a/tools/vts-tradefed/res/config/vts-base-presubmit.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Main Test Plan Simplified Base Config for Presubmit Tests">
-  <include name="vts-base-single-device" />
-
-  <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-    <option name="enable-adb-root" value="true"/>
-    <option name="start-framework" value="true"/>
-    <option name="restore-framework" value="true"/>
-  </target_preparer>
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:enable-dashboard-uploading:false" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:enable-log-uploading:false" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:bug-report-on-failure:false" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:logcat-on-failure:false" />
-
-  <option name="compatibility:primary-abi-only" value="true" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-base-single-device.xml b/tools/vts-tradefed/res/config/vts-base-single-device.xml
deleted file mode 100644
index a7356d0..0000000
--- a/tools/vts-tradefed/res/config/vts-base-single-device.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Base Config for Single-device Test Plans">
-  <include name="vts-base-common" />
-
-  <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-  <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-base.xml b/tools/vts-tradefed/res/config/vts-base.xml
deleted file mode 100644
index ed0e9ab..0000000
--- a/tools/vts-tradefed/res/config/vts-base.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Main Test Plan">
-  <!-- VtsDevicePreparer needs to run first to set root -->
-  <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-    <option name="enable-adb-root" value="true"/>
-    <option name="start-framework" value="true"/>
-    <option name="restore-framework" value="true"/>
-  </target_preparer>
-
-  <include name="vts-base-single-device" />
-
-  <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DeviceInfoCollector">
-    <option name="apk" value="CtsDeviceInfo.apk"/>
-    <option name="package" value="com.android.compatibility.common.deviceinfo"/>
-    <option name="src-dir" value="/sdcard/device-info-files/"/>
-    <option name="dest-dir" value="device-info-files/"/>
-    <option name="temp-dir" value="temp-device-info-files/"/>
-    <option name="throw-error" value="false"/>
-  </target_preparer>
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-camera-its.xml b/tools/vts-tradefed/res/config/vts-camera-its.xml
deleted file mode 100644
index 1a154b2..0000000
--- a/tools/vts-tradefed/res/config/vts-camera-its.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Camera ITS (Image Test Suite) Multi-Device Test Plan">
-  <include name="vts-base-multi-device" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-camera-its" />
-
-  <!-- First target Android device in camera ITS-in-a-box -->
-  <device name="device1">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-      <option name="test-file-name" value="DATA/app/CtsVerifier/CtsVerifier.apk" />
-      <option name="cleanup-apks" value="true" />
-    </target_preparer>
-  </device>
-
-  <!-- Second target Android device in camera ITS-in-a-box -->
-  <device name="device2">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-      <option name="test-file-name" value="DATA/app/CtsVerifier/CtsVerifier.apk" />
-      <option name="cleanup-apks" value="true" />
-    </target_preparer>
-  </device>
-
-  <!-- Display device e.g., Pixel C, in camera ITS-in-a-box -->
-  <device name="device3" >
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-  </device>
-
-  <option name="compatibility:include-filter" value="CameraITSTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-codelab-multi-device.xml b/tools/vts-tradefed/res/config/vts-codelab-multi-device.xml
deleted file mode 100644
index 74328e9..0000000
--- a/tools/vts-tradefed/res/config/vts-codelab-multi-device.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Codelab Plan">
-  <include name="vts-base-multi-device" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts" />
-  <option name="vts-plan-result:plan-name" value="vts" />
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <device name="device1">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-  </device>
-
-  <device name="device2" >
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-  </device>
-
-  <option name="compatibility:include-filter" value="VtsCodelabHelloWorldMultiDeviceTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-codelab.xml b/tools/vts-tradefed/res/config/vts-codelab.xml
deleted file mode 100644
index 95fe5bf..0000000
--- a/tools/vts-tradefed/res/config/vts-codelab.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Codelab Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-codelab" />
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-codelab" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-device-health.xml b/tools/vts-tradefed/res/config/vts-device-health.xml
deleted file mode 100644
index cdabad9..0000000
--- a/tools/vts-tradefed/res/config/vts-device-health.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Device Health Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-device-health" />
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <option name="compatibility:include-filter" value="VtsDeviceHealth" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-firmware.xml b/tools/vts-tradefed/res/config/vts-firmware.xml
deleted file mode 100644
index 5afb79d..0000000
--- a/tools/vts-tradefed/res/config/vts-firmware.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS System Firmware Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-firmware" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-firmware" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-flaky.xml b/tools/vts-tradefed/res/config/vts-flaky.xml
deleted file mode 100644
index 5740da5..0000000
--- a/tools/vts-tradefed/res/config/vts-flaky.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Known flaky tests in vts plans">
-
-    <!-- b/118130933: on cuttlefish -->
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetCapabilities" />
-
-    <!-- b/118129083: on sailfish -->
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.cve.cve-2016-7117_64bit" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.syscalls.epoll_wait02_64bit" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.syscalls.sighold02_64bit" />
-
-    <!-- b/118133456: on sailfish -->
-    <option name="compatibility:exclude-filter" value="VtsKernelProcFileApi VtsKernelProcFileApi.testProcPagetypeinfo" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-fuzz-kernel.xml b/tools/vts-tradefed/res/config/vts-fuzz-kernel.xml
deleted file mode 100644
index 340f529..0000000
--- a/tools/vts-tradefed/res/config/vts-fuzz-kernel.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Fuzz-Kernel Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-fuzz-kernel" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-fuzz-kernel" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-fuzz.xml b/tools/vts-tradefed/res/config/vts-fuzz.xml
deleted file mode 100644
index 4e3cfdf..0000000
--- a/tools/vts-tradefed/res/config/vts-fuzz.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Fuzz Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-fuzz" />
-
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-fuzz" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-gce.xml b/tools/vts-tradefed/res/config/vts-gce.xml
deleted file mode 100644
index 171d7ec..0000000
--- a/tools/vts-tradefed/res/config/vts-gce.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS GCE (Google Compute Engine) Test Plan (Experimental)">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-gce" />
-
-  <option name="compatibility:include-filter" value="VtsCodelabHelloWorldStagingTest" />
-  <option name="compatibility:include-filter" value="VtsCodelabHelloWorldTest" />
-  <option name="compatibility:include-filter" value="VtsCodelabHidlMemoryTest" />
-  <option name="compatibility:include-filter" value="VtsCodelabTargetBinary" />
-  <option name="compatibility:include-filter" value="VtsFirmwareBootHeaderVerification" />
-  <option name="compatibility:include-filter" value="VtsFirmwareDtboVerification" />
-  <option name="compatibility:include-filter" value="VtsHalAuthSecretV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBaseV1_0TargetTest" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFaceV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_1TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalBluetoothV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBootV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBroadcastradioV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalCameraProviderV2_4Target" />
-  <option name="compatibility:include-filter" value="VtsHalCasV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalConfigstoreV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalDumpstateV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGatekeeperV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV3_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalInputClassifierV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalIrV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalKeymasterV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalMediaOmxStoreV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalMemtrackV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalMemtrackV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalNeuralnetworksV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalNeuralnetworksV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalOemLockV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_3Target" />
-  <option name="compatibility:include-filter" value="VtsHalRenderscriptV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSapV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSoundtriggerV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSoundtriggerV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalThermalV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalThermalV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_3Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_4Target" />
-  <option name="compatibility:include-filter" value="VtsHalVrV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalVrV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalWeaverV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiNanV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiOffloadV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHidlAllocatorV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsKernelBinderTest" />
-  <option name="compatibility:include-filter" value="VtsKernelDeviceTreeEarlyMount" />
-  <option name="compatibility:include-filter" value="VtsKernelHwBinder" />
-  <option name="compatibility:include-filter" value="VtsKernelLibcutilsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftestPresubmit" />
-  <option name="compatibility:include-filter" value="VtsKernelNetBpfTest" />
-  <option name="compatibility:include-filter" value="CtsOnGsiTrebleFrameworkVintfTest SystemVendorTest.KernelCompatibility"/>
-
-  <!-- Temporailly excluded due to their incompatibility with cuttlefish
-
-  <option name="compatibility:include-filter" value="VtsHalAudioEffectV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioEffectV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalDrmV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalDrmV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalDrmV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalDrmV1_3Target" />
-  <option name="compatibility:include-filter" value="VtsHalGnssV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGnssV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsComposerV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsComposerV2_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalHealthV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalHealthV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalKeymasterV3_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsKernelApiSysfsTest" />
-
-  -->
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-adapter.xml b/tools/vts-tradefed/res/config/vts-hal-adapter.xml
deleted file mode 100644
index 571bdbc..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-adapter.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS HAL Adapter Test Plan">
-  <include name="cts-base-common" />
-  <option name="plan" value="vts-hal-adapter" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-adapter" />
-
-  <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite">
-    <option name="run-suite-tag" value="cts" />
-  </test>
-
-  <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-    <option name="abort-on-push-failure" value="true"/>
-    <option name="push" value="script/target/vts_adapter.sh->/data/local/tmp/vts_adapter.sh"/>
-  </target_preparer>
-
-  <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
-    <option name="test-file-name" value="DeviceHealthTests.apk" />
-    <option name="cleanup-apks" value="true" />
-  </target_preparer>
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-auto.xml b/tools/vts-tradefed/res/config/vts-hal-auto.xml
deleted file mode 100644
index 7bc6dcc..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-auto.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Serving Plan for HALs - Auto">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-auto" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-auto" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-profiling-auto.xml b/tools/vts-tradefed/res/config/vts-hal-profiling-auto.xml
deleted file mode 100644
index 87ef7c7..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-profiling-auto.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Profiling Plan for Auto HALs">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-profiling-auto" />
-
-  <target_preparer class="com.android.tradefed.targetprep.VtsTraceCollectPreparer" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:enable-profiling:true" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-auto" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-profiling-tv.xml b/tools/vts-tradefed/res/config/vts-hal-profiling-tv.xml
deleted file mode 100644
index 6d681d1..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-profiling-tv.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Profiling Plan for TV HALs">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-profiling-tv" />
-
-  <target_preparer class="com.android.tradefed.targetprep.VtsTraceCollectPreparer" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:enable-profiling:true" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-tv" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-profiling.xml b/tools/vts-tradefed/res/config/vts-hal-profiling.xml
deleted file mode 100644
index 6a56e86..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-profiling.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS HAL Profiling Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-profiling" />
-
-  <target_preparer class="com.android.tradefed.targetprep.VtsTraceCollectPreparer" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:enable-profiling:true" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-replay.xml b/tools/vts-tradefed/res/config/vts-hal-replay.xml
deleted file mode 100644
index 2bfffe6..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-replay.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS HAL Replay Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-replay" />
-
-  <target_preparer class="com.android.tradefed.targetprep.VtsCoveragePreparer" >
-    <option name="coverage-report-dir" value="vts-coverage" />
-  </target_preparer>
-
-  <!-- For Hidl Hal replay tests -->
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0TargetReplay" />
-
-  <!-- For Hidl Hal replay tests: Internal Only -->
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_1TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalKeymasterV3_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalMemtrackV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_0TargetReplay" />
-  <option name="compatibility:include-filter" value="VtsHalVrV1_0TargetReplay" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal-tv.xml b/tools/vts-tradefed/res/config/vts-hal-tv.xml
deleted file mode 100644
index 6ebd9d5..0000000
--- a/tools/vts-tradefed/res/config/vts-hal-tv.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Serving Plan for HALs - TV/x86">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal-tv" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-tv" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:gtest-batch-mode:true" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-hal.xml b/tools/vts-tradefed/res/config/vts-hal.xml
deleted file mode 100644
index 5ee4d3b..0000000
--- a/tools/vts-tradefed/res/config/vts-hal.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS HAL Test Plan">
-  <include name="vts-base" />
-  <target_preparer class="com.android.tradefed.targetprep.VtsCoveragePreparer" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-hal" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-host.xml b/tools/vts-tradefed/res/config/vts-host.xml
deleted file mode 100644
index 599d274..0000000
--- a/tools/vts-tradefed/res/config/vts-host.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Host-Driven Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-host" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-host" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-host" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-kernel.xml b/tools/vts-tradefed/res/config/vts-kernel.xml
deleted file mode 100644
index d19e171..0000000
--- a/tools/vts-tradefed/res/config/vts-kernel.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Kernel Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-kernel" />
-
-  <option name="compatibility:include-filter" value="VtsKernelBinderTest" />
-  <option name="compatibility:include-filter" value="VtsKernelNetBpfTest" />
-  <option name="compatibility:include-filter" value="VtsKernelDeviceTreeEarlyMount" />
-  <option name="compatibility:include-filter" value="VtsKernelHwBinder" />
-  <option name="compatibility:include-filter" value="VtsKernelLibcutilsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelNetTest" />
-  <option name="compatibility:include-filter" value="VtsKernelProcFileApi" />
-  <option name="compatibility:include-filter" value="VtsKernelQtaguidTest" />
-  <option name="compatibility:include-filter" value="VtsKernelSelinuxFileApi" />
-  <option name="compatibility:include-filter" value="VtsKernelApiSysfsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelSystemAsRoot" />
-  <option name="compatibility:include-filter" value="VtsKernelTunTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftestPresubmit" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftest" />
-  <option name="compatibility:include-filter" value="VtsKernelLtp" />
-  <option name="compatibility:include-filter" value="CtsOnGsiTrebleFrameworkVintfTest SystemVendorTest.KernelCompatibility"/>
-  <option name="compatibility:include-filter" value="VtsKernelLiblpTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLibdmTest" />
-  <option name="compatibility:include-filter" value="VtsKernelDynamicPartitionsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLibIonTest" />
-  <option name="compatibility:include-filter" value="VtsKernelEncryptionTest" />
-  <option name="compatibility:include-filter" value="VtsLibsnapshotTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-library.xml b/tools/vts-tradefed/res/config/vts-library.xml
deleted file mode 100644
index 82b3262..0000000
--- a/tools/vts-tradefed/res/config/vts-library.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Library Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-library" />
-
-  <option name="compatibility:include-filter" value="CpuProfilingTest" />
-  <option name="compatibility:include-filter" value="LibcTest" />
-  <option name="compatibility:include-filter" value="VtsFmqUnitTests" />
-  <option name="compatibility:include-filter" value="VtsHidlUnitTests" />
-  <option name="compatibility:include-filter" value="VtsVndkHidlBufferpoolV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsVndkHidlBufferpoolV2_0Target" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-local.xml b/tools/vts-tradefed/res/config/vts-local.xml
deleted file mode 100644
index fccf23f..0000000
--- a/tools/vts-tradefed/res/config/vts-local.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Serving Plan for local development test runs">
-    <include name="vts-base-presubmit" />
-
-    <option name="vts-plan-result:plan-name" value="vts-local" />
-
-    <option name="compatibility:include-filter" value="VtsCodelabHelloWorldTest" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-p2p.xml b/tools/vts-tradefed/res/config/vts-p2p.xml
deleted file mode 100644
index b7d8b48..0000000
--- a/tools/vts-tradefed/res/config/vts-p2p.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Pair to Pair Test Plan">
-  <include name="vts-base-multi-device" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-p2p" />
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <device name="device1">
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <!-- TODO(yuexima): The following preparer should be moved to module level when supported. -->
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-        <option name="test-file-name" value="DATA/app/nbu/android_snippet.apk" />
-        <option name="cleanup-apks" value="true" />
-        <option name="install-arg" value="-r" />
-        <option name="install-arg" value="-g" />
-    </target_preparer>
-  </device>
-
-  <device name="device2" >
-    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
-    <target_preparer class="com.android.tradefed.targetprep.VtsDevicePreparer">
-      <option name="enable-adb-root" value="true"/>
-      <option name="start-framework" value="true"/>
-      <option name="restore-framework" value="true"/>
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="push-group" value="HostDrivenTest.push" />
-    </target_preparer>
-    <!-- TODO(yuexima): The following preparer should be moved to module level when supported. -->
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ApkInstaller">
-        <option name="test-file-name" value="DATA/app/nbu/android_snippet.apk" />
-        <option name="cleanup-apks" value="true" />
-        <option name="install-arg" value="-r" />
-        <option name="install-arg" value="-g" />
-    </target_preparer>
-  </device>
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-p2p" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-performance-systrace.xml b/tools/vts-tradefed/res/config/vts-performance-systrace.xml
deleted file mode 100644
index 7eaea6c..0000000
--- a/tools/vts-tradefed/res/config/vts-performance-systrace.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Performance Plan with Systrac">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-performance-systrace" />
-
-  <option name="compatibility:include-filter" value="HwBinderBinderizeLatencySystraceTest" />
-  <option name="compatibility:include-filter" value="HwBinderBinderizePerformanceSystraceTest" />
-  <option name="compatibility:include-filter" value="HwBinderBinderizeThroughputSystraceTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughLatencySystraceTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughPerformanceSystraceTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughThroughputSystraceTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-performance.xml b/tools/vts-tradefed/res/config/vts-performance.xml
deleted file mode 100644
index 4b58566..0000000
--- a/tools/vts-tradefed/res/config/vts-performance.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Performance Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-performance" />
-
-  <!-- For Kernel HwBinder and Binder Profiling -->
-  <option name="compatibility:include-filter" value="BinderPerformanceTest" />
-  <option name="compatibility:include-filter" value="BinderThroughputBenchmark" />
-  <option name="compatibility:include-filter" value="HwBinderBinderizeLatencyTest" />
-  <option name="compatibility:include-filter" value="HwBinderBinderizePerformanceTest" />
-  <option name="compatibility:include-filter" value="HwBinderBinderizeThroughputTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughLatencyTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughPerformanceTest" />
-  <option name="compatibility:include-filter" value="HwBinderPassthroughThroughputTest" />
-
-  <!-- For FMQ -->
-  <option name="compatibility:include-filter" value="FmqPerformanceTest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-presubmit-connectivity.xml b/tools/vts-tradefed/res/config/vts-presubmit-connectivity.xml
deleted file mode 100644
index 7057329..0000000
--- a/tools/vts-tradefed/res/config/vts-presubmit-connectivity.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Presubmit Test Plan for Connectivity Modules">
-  <include name="vts-base-presubmit" />
-  <option name="vts-plan-result:plan-name" value="vts-presubmit-connectivity" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:max-retry-count:2" />
-
-  <include name="vts-presubmit-exclude" />
-
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalSapV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiNanV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiNanV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiOffloadV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_1Target" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-presubmit-exclude.xml b/tools/vts-tradefed/res/config/vts-presubmit-exclude.xml
deleted file mode 100644
index d71398d..0000000
--- a/tools/vts-tradefed/res/config/vts-presubmit-exclude.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Excluded tests from vts-presubmit plan runs">
-
-    <!-- Excludes known flaky test cases. -->
-    <include name="vts-flaky" />
-
-    <!-- b/116450442: known incompatibility with cuttlefish -->
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target AudioPrimaryHidlTest.GetMicrophonesTest" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target FloatAccessorPrimaryHidlTest.MasterVolumeTest" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RequiredOutputStreamConfigSupport/OutputStreamTest.SupportedFormat/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RequiredOutputStreamConfigSupport/OutputStreamTest.GetNextWriteTimestamp/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RecommendedOutputStreamConfigSupport/OutputStreamTest.SupportedFormat/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RecommendedOutputStreamConfigSupport/OutputStreamTest.GetNextWriteTimestamp/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RequiredInputStreamConfigSupport/InputStreamTest.SupportedFormat/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RequiredInputStreamConfigSupport/InputStreamTest.getNonExistingParameter/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RequiredInputStreamConfigSupport/InputStreamTest.GetAudioSource/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RecommendedInputStreamConfigSupport/InputStreamTest.SupportedFormat/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RecommendedInputStreamConfigSupport/InputStreamTest.getNonExistingParameter/.*)" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target r(RecommendedInputStreamConfigSupport/InputStreamTest.GetAudioSource/.*)" />
-
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.DumpDebugInfo" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.CreateClientSingleton" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.CreateVirtualDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.DestroyVirtualDisplayBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.CreateLayer" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.CreateLayerBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.DestroyLayerBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.DestroyLayerBadLayerError" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetActiveConfigBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDisplayConfig" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDisplayConfigBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDisplayName" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDisplayType" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetClientTargetSupport" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetClientTargetSupportBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDisplayAttribute" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetHdrCapabilities" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetClientTargetSlotCount" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetActiveConfig" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetActiveConfigPowerCycle" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetColorModes" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetColorMode" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetColorModeBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetColorModeBadParameter" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.GetDozeSupportBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetPowerMode" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetPowerModeVariations" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetPowerModeBadDisplay" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetPowerModeUnsupported" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetPowerModeBadParameter" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlTest.SetVsyncEnabled" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_COLOR_TRANSFORM" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_CLIENT_TARGET" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_OUTPUT_BUFFER" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.VALIDATE_DISPLAY" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.ACCEPT_DISPLAY_CHANGES" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.PRESENT_DISPLAY" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.PRESENT_DISPLAY_NO_LAYER_STATE_CHANGES" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_CURSOR_POSITION" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_BUFFER" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_SURFACE_DAMAGE" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_BLEND_MODE" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_COLOR" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_COMPOSITION_TYPE" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_DATASPACE" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_DISPLAY_FRAME" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_PLANE_ALPHA" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_SIDEBAND_STREAM" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_SOURCE_CROP" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_TRANSFORM" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_VISIBLE_REGION" />
-    <option name="compatibility:exclude-filter" value="VtsHalGraphicsComposerV2_1Target GraphicsComposerHidlCommandTest.SET_LAYER_Z_ORDER" />
-
-    <option name="compatibility:exclude-filter" value="VtsHalMediaOmxV1_0Host AudioDecHidlTest.FlushTest_OMX.google.vorbis.decoder_audio_decoder.vorbis" />
-
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.getDataRegistrationState" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.supplyIccPinForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.supplyIccPukForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.supplyIccPin2ForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.supplyIccPuk2ForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.changeIccPinForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.changeIccPin2ForApp" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.iccCloseLogicalChannel" />
-
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiChipHidlTest.CreateRttController" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiStaIfaceHidlTest.LinkLayerStatsCollection" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiChipHidlTest.GetDebugRingBuffersStatus" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiChipHidlTest.StartLoggingToDebugRingBuffer" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiChipHidlTest.ForceDumpToDebugRingBuffer" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_0Target WifiChipHidlTest.GetDebugHostWakeReasonStats" />
-
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_1Target WifiChipHidlTest.SelectTxPowerScenario" />
-    <option name="compatibility:exclude-filter" value="VtsHalWifiV1_1Target WifiChipHidlTest.ResetTxPowerScenario" />
-
-    <!-- b/117936821: known incompatibility with Pixel 1 -->
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.mm.mmapstress07" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.syscalls.ptrace05" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.syscalls.sighold02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelProcFileApi VtsKernelProcFileApi.testProcSysrqTrigger" />
-    <option name="compatibility:exclude-filter" value="VtsKernelProcFileApi VtsKernelProcFileApi.testProcUidProcstatSet" />
-
-    <!-- VtsKernelLtp test cases taking longer than 15 seconds -->
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.cve.cve-2011-0999" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.fs.linker01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.nptl.nptl01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.mm.mmapstress06" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.fs.fs_di" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp VtsKernelLtp.dio.dio23" />
-
-    <!-- b/118683028: tests recently become flaky -->
-    <option name="compatibility:exclude-filter" value="VtsHalMediaOmxV1_0Host VideoDecHidlTest.AdaptivePlaybackTest_OMX.google.hevc.decoder_video_decoder.hevc" />
-    <option name="compatibility:exclude-filter" value="VtsHalMediaOmxV1_0Host ComponentHidlTest.PortEnableDisable_Idle_OMX.google.opus.decoder_audio_decoder.opus" />
-    <option name="compatibility:exclude-filter" value="VtsHalAudioV4_0Target RequiredOutputStreamConfigSupport/OutputStreamTest.GetRenderPosition/11__44100_MONO" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.deactivateDataCall" />
-    <option name="compatibility:exclude-filter" value="VtsHalRadioV1_0Target RadioHidlTest.setRadioCapability" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.mtest06_2" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.mtest06_3" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.mem01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.mem03" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.page01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.page02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.umount02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp fs.fs_fill" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.linkat02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.mount01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.ioctl05" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.umount2_02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.umount2_03" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.mknod07" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.utime06" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.umount2_01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.fallocate04" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.mknodat02" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp fs.fs_inod01" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.ftruncate04_64" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp syscalls.poll02" />
-
-    <!-- b/122260771: temporally disable kernel test cases that seems to cause device reboot -->
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp fs.inode02" />
-
-    <!-- b/118340949: temporally disable kernel test cases that takes 2+ minutes to finish -->
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio16" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio17" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio20" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio21" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio24" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio25" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio27" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp dio.dio28" />
-    <option name="compatibility:exclude-filter" value="VtsKernelLtp mm.mtest06" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-presubmit-kernel.xml b/tools/vts-tradefed/res/config/vts-presubmit-kernel.xml
deleted file mode 100644
index b33a1f1..0000000
--- a/tools/vts-tradefed/res/config/vts-presubmit-kernel.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Presubmit Kernel Test Plan">
-  <include name="vts-base-presubmit" />
-
-  <option name="vts-plan-result:plan-name" value="vts-presubmit-kernel" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:max-retry-count:2" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:ltp-number-of-threads:1" />
-
-  <include name="vts-presubmit-exclude" />
-
-  <option name="compatibility:include-filter" value="VtsKernelBinderTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLibcutilsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelLtp" />
-  <option name="compatibility:include-filter" value="VtsKernelProcFileApi" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-presubmit.xml b/tools/vts-tradefed/res/config/vts-presubmit.xml
deleted file mode 100644
index 1f38646..0000000
--- a/tools/vts-tradefed/res/config/vts-presubmit.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Presubmit Test Plan">
-  <include name="vts-base-presubmit" />
-
-  <option name="vts-plan-result:plan-name" value="vts-presubmit" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:max-retry-count:2" />
-
-  <include name="vts-presubmit-exclude" />
-
-  <option name="compatibility:include-filter" value="SampleShellTest" />
-  <option name="compatibility:include-filter" value="VtsHalAudioV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsComposerV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalMediaOmxV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalMediaOmxStoreV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalMediaC2V1_0Host" />
-  <option name="compatibility:include-filter" value="VtsTrebleVendorVintfTest" />
-  <option name="compatibility:include-filter" value="VtsHidlUnitTests" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-remote-manager.xml b/tools/vts-tradefed/res/config/vts-remote-manager.xml
deleted file mode 100644
index 6ee28ef..0000000
--- a/tools/vts-tradefed/res/config/vts-remote-manager.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Remote Manager Configuration">
-  <object type="vts-remote-manager" class="com.android.tradefed.command.remote.RemoteManager">
-    <option name="start-remote-mgr" value="true" />
-  </object>
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-security.xml b/tools/vts-tradefed/res/config/vts-security.xml
deleted file mode 100644
index 4d41ca2..0000000
--- a/tools/vts-tradefed/res/config/vts-security.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="Run VTS Security Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-security" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-security" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-selftest.xml b/tools/vts-tradefed/res/config/vts-selftest.xml
deleted file mode 100644
index f250fe4..0000000
--- a/tools/vts-tradefed/res/config/vts-selftest.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Self Test Plan">
-  <include name="vts-base-presubmit" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-selftest" />
-  <option name="compatibility:primary-abi-only" value="true" />
-
-  <!-- VTS self test modules -->
-  <!--option name="compatibility:include-filter" value="VtsSelfTestBaseTest" />
-  <option name="compatibility:include-filter" value="VtsSelfTestPythonVirtualenvPreparerTestPart0" />
-  <option name="compatibility:include-filter" value="VtsSelfTestPythonVirtualenvPreparerTestPart1" />
-  <option name="compatibility:include-filter" value="VtsSelfTestPythonVirtualenvPreparerTestPart2" /-->
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:run-as-vts-self-test:true" />
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:max-retry-count:2" />
-
-  <!-- Regular test modules running in vts self test mode -->
-  <option name="compatibility:include-filter" value="ShellBinaryCrashTest" />
-
-  <!-- For Treble-specific validations -->
-  <!-- option name="compatibility:include-filter" value="VtsTreblePlatformVersionTest" />
-  <option name="compatibility:include-filter" value="VtsTrebleVintfTest" /-->
-
-  <!-- From vts-hal-hidl.xml -->
-  <!-- option name="compatibility:include-filter" value="VtsHalBluetoothV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBootV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalIrV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0Target" /-->
-
-  <!-- From vts-kernel.xml -->
-  <!-- option name="compatibility:include-filter" value="VtsKernelLtp" />
-  <option name="compatibility:include-filter" value="VtsKernelProcFileApi" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftest" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftestPresubmit" />
-  <option name="compatibility:include-filter" value="VtsKernelApiSysfsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelBinderTest" />
-  <option name="compatibility:include-filter" value="VtsKernelHwBinder" />
-  <option name="compatibility:include-filter" value="VtsKernelLibcutilsTest" />
-  <option name="compatibility:include-filter" value="VtsKernelNetdTest" />
-  <option name="compatibility:include-filter" value="VtsKernelSelinuxFileApi" />
-  <option name="compatibility:include-filter" value="VtsKernelTunTest" />
-  <option name="compatibility:include-filter" value="VtsKernelQtaguidTest" />
-  <option name="compatibility:include-filter" value="CtsOnGsiTrebleFrameworkVintfTest SystemVendorTest.KernelCompatibility"/-->
-
-  <!--  From vts-vndk.xml -->
-  <!-- option name="compatibility:include-filter" value="VtsVndkDependency" /-->
-
-  <!-- For Hidl Hal replay tests -->
-  <!-- option name="compatibility:include-filter" value="VtsHalNfcV1_0TargetReplay" /-->
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-default.xml b/tools/vts-tradefed/res/config/vts-staging-default.xml
deleted file mode 100644
index 16c3178..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-default.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Serving Plan for Staging(new) tests">
-
-    <include name="vts-base" />
-    <option name="plan" value="vts" />
-    <option name="test-tag" value="vts-star" />
-    <option name="vts-plan-result:plan-name" value="vts-staging-default" />
-
-    <!-- for System -->
-    <option name="compatibility:include-filter" value="MemorySystemStressTest" />
-    <!-- b/66012102 -->
-    <!-- <option name="compatibility:include-filter" value="VtsAppCameraStressTest" /> -->
-
-    <!-- for Hal -->
-    <option name="compatibility:include-filter" value="VtsHalAudioEffectV2_0TargetReplay" />
-    <option name="compatibility:include-filter" value="VtsHalBluetoothV1_0TargetReplay" />
-    <option name="compatibility:include-filter" value="VtsHalThermalV1_0TargetReplay" />
-
-    <!-- for HAL adapter tests -->
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-        <option name="abort-on-push-failure" value="true"/>
-        <option name="push" value="script/target/vts_adapter.sh->/data/local/tmp/vts_adapter.sh"/>
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
-        <option name="test-file-name" value="DeviceHealthTests.apk" />
-        <option name="cleanup-apks" value="true" />
-    </target_preparer>
-
-    <option name="compatibility:include-filter" value="VtsHalThermalV1_1Adapter" />
-    <option name="compatibility:include-filter" value="VtsHalUsbV1_2Adapter" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-fuzz.xml b/tools/vts-tradefed/res/config/vts-staging-fuzz.xml
deleted file mode 100644
index 0f80da7..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-fuzz.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Serving Plan for Fuzzing (Staging)">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-staging-fuzz" />
-
-  <option name="compatibility:primary-abi-only" value="true" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_1IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalBluetoothV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalCasNativeV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalCasV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_1IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalGnssV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsComposerV2_1IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_1IfaceFuzzer" />
-  <!--option name="compatibility:include-filter" value="VtsHalKeymasterV3_0IfaceFuzzer" /--><!-- can brick device -->
-  <option name="compatibility:include-filter" value="VtsHalMediaOmxV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalNeuralnetworksV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalOemlockV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_1IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalRenderscriptV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalSensorsV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalSoundtriggerV2_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalTetheroffloadConfigV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalTetheroffloadControlV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_1IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalWeaverV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalWifiOffloadV1_0IfaceFuzzer" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_0IfaceFuzzer" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-kernel.xml b/tools/vts-tradefed/res/config/vts-staging-kernel.xml
deleted file mode 100644
index f28d005..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-kernel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Serving Plan for Kernel Staging Tests">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-staging-kernel" />
-
-  <option name="compatibility:include-filter" value="SecurityPoCKernelTestStaging" />
-  <option name="compatibility:include-filter" value="VtsKernelLinuxKselftestStaging" />
-  <option name="compatibility:include-filter" value="VtsKernelLtpStaging" />
-
-  <!-- TODO(bowgotsai): move this into compliance test list -->
-  <option name="compatibility:include-filter" value="VtsKernelRootDir" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-presubmit.xml b/tools/vts-tradefed/res/config/vts-staging-presubmit.xml
deleted file mode 100644
index d94b1ea..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-presubmit.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Serving Plan for Presubmit (Staging)">
-  <include name="vts-base" />
-  <option name="compatibility:primary-abi-only" value="true" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-staging-presubmit" />
-  <option name="vts-plan-result:default-type" value="staging" />
-
-  <!-- For vts-hal-hidl -->
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:gtest-batch-mode:true" />
-  <!-- option name="compatibility:include-filter" value="BinderThroughputBenchmark" / -->
-  <!-- option name="compatibility:include-filter" value="BinderPerformanceTest" / -->
-
-  <!-- For vts-library -->
-  <!-- option name="compatibility:include-filter" value="CpuProfilingTest" / -->
-
-  <!-- For vts-security -->
-
-  <!-- For vts-system -->
-  <option name="compatibility:include-filter" value="VtsCodelabHelloWorldTest" />
-  <!-- option name="compatibility:include-filter" value="SampleShellTest" / -->
-  <!-- option name="compatibility:include-filter" value="VtsHalLightV2_0Target" / -->
-  <!-- option name="compatibility:include-filter" value="VtsHalNfcV1_0HostBinderize" / -->
-
-  <!-- For vts-kernel -->
-  <!-- option name="compatibility:include-filter" value="KernelLtpTest" / -->
-  <!-- option name="compatibility:include-filter" value="LinuxKselftestTestPresubmit" / -->
-  <!-- option name="compatibility:include-filter" value="ShellBinaryCrashTest" / -->
-  <!-- option name="compatibility:include-filter" value="LibcTest" / -->
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-sancov.xml b/tools/vts-tradefed/res/config/vts-staging-sancov.xml
deleted file mode 100644
index f4697fd..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-sancov.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Staging Plan for Sancov on HALs">
-  <include name="vts-base" />
-  <target_preparer class="com.android.tradefed.targetprep.VtsCoveragePreparer" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:default-type" value="staging" />
-  <option name="vts-plan-result:plan-name" value="vts-staging-sancov" />
-
-  <option name="compatibility:include-filter" value="VtsHalBluetoothV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBootV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalIrV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalNeuralnetworksV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0HostBinderize" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0HostPassthrough" />
-  <option name="compatibility:include-filter" value="VtsHalNfcV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalRadioV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalRenderscriptV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSapV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiHostapdV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiHostapdV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiHostapdV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiNanV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiOffloadV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_1Host" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantP2pV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantP2pV1_2Target" />
-  <option name="compatibility:include-filter" value="VtsHalWifiSupplicantV1_3Host" />
-
-  <option name="compatibility:include-filter" value="VtsHalAudioV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioEffectV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalAudioEffectV4_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalBiometricsFingerprintV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalBroadcastradioV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalCameraProviderV2_4Target" />
-  <option name="compatibility:include-filter" value="VtsHalConfigstoreV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalContexthubV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGatekeeperV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGnssV1_0HostBinderize" />
-  <option name="compatibility:include-filter" value="VtsHalGnssV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsComposerV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalGraphicsMapperV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalHealthV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalKeymasterV3_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalMemtrackV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalMediaC2V1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalMediaOmxV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalPowerV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalSensorsV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalSensorsV2_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalSensorsV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSensorsV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSoundtriggerV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalSoundtriggerV2_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalStatsV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalTetherOffloadConfigV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalTetherOffloadControlV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalThermalV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalUsbV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalVibratorV1_1Target" />
-  <option name="compatibility:include-filter" value="VtsHalVrV1_0Host" />
-  <option name="compatibility:include-filter" value="VtsHalVrV1_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalWeaverV1_0Target" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-selftest.xml b/tools/vts-tradefed/res/config/vts-staging-selftest.xml
deleted file mode 100644
index 272ce93..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-selftest.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 Google Inc.
-
-     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.
--->
-<configuration description="VTS Serving Plan for SelfTest (Staging)">
-  <include name="vts-base" />
-  <option name="compatibility:primary-abi-only" value="true" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-staging-selftest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-staging-web.xml b/tools/vts-tradefed/res/config/vts-staging-web.xml
deleted file mode 100644
index b9a0631..0000000
--- a/tools/vts-tradefed/res/config/vts-staging-web.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS Staging Plan for VTS Dashboard">
-  <include name="vts-base" />
-  <target_preparer class="com.android.tradefed.targetprep.VtsCoveragePreparer" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-staging-web" />
-  <option name="vts-plan-result:default-type" value="staging" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:gtest-batch-mode:true" />
-  <option name="compatibility:include-filter" value="LibcTest" />
-  <option name="compatibility:include-filter" value="SampleShellTest" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0Target" />
-  <option name="compatibility:include-filter" value="VtsHalLightV2_0TargetProfiling" />
- </configuration>
diff --git a/tools/vts-tradefed/res/config/vts-star.xml b/tools/vts-tradefed/res/config/vts-star.xml
deleted file mode 100644
index 5a89dbe..0000000
--- a/tools/vts-tradefed/res/config/vts-star.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS-* Main Test Plan Excluding VTS">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-star" />
-
-  <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
-    <option name="abort-on-push-failure" value="true"/>
-    <option name="push" value="script/target/vts_adapter.sh->/data/local/tmp/vts_adapter.sh"/>
-  </target_preparer>
-
-  <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
-    <option name="test-file-name" value="DeviceHealthTests.apk" />
-    <option name="cleanup-apks" value="true" />
-  </target_preparer>
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-app" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-codelab" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-device-health" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-fuzz" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-profiling" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-host" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-library" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-performance" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-selftest" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-systems.xml b/tools/vts-tradefed/res/config/vts-systems.xml
deleted file mode 100644
index 0f74451..0000000
--- a/tools/vts-tradefed/res/config/vts-systems.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="VTS Systems Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-systems" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-systems" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-unit-tests.xml b/tools/vts-tradefed/res/config/vts-unit-tests.xml
deleted file mode 100644
index 22c09d8..0000000
--- a/tools/vts-tradefed/res/config/vts-unit-tests.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<configuration description="Executes the VTS unit tests">
-    <option name="null-device" value="true" />
-    <build_provider class="com.android.tradefed.build.StubBuildProvider" />
-    <test class="com.android.tradefed.testtype.HostTest" >
-        <option name="class" value="com.android.tradefed.VtsUnitTests" />
-        <option name="class" value="com.android.compatibility.common.tradefed.VtsUnitTests" />
-    </test>
-    <logger class="com.android.tradefed.log.FileLogger" />
-
-    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter">
-        <option name="suppress-passed-tests" value="true" />
-    </result_reporter>
-    <template-include name="reporters" default="empty" />
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts-vndk.xml b/tools/vts-tradefed/res/config/vts-vndk.xml
deleted file mode 100644
index dc31f12..0000000
--- a/tools/vts-tradefed/res/config/vts-vndk.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-<configuration description="VTS VNDK (Vendor NDK) Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts-star" />
-  <option name="vts-plan-result:plan-name" value="vts-vndk" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-vndk" />
-
-</configuration>
diff --git a/tools/vts-tradefed/res/config/vts10.xml b/tools/vts-tradefed/res/config/vts10.xml
deleted file mode 100644
index e6ba2bc..0000000
--- a/tools/vts-tradefed/res/config/vts10.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-<configuration description="VTS Main Test Plan">
-  <include name="vts-base" />
-  <option name="plan" value="vts" />
-  <option name="test-tag" value="vts" />
-  <option name="vts-plan-result:plan-name" value="vts" />
-
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-firmware" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-hal-replay" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-kernel" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-security" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-treble" />
-  <option name="compatibility:module-metadata-include-filter" key="plan" value="vts-vndk" />
-
-  <option name="compatibility:test-arg" value="com.android.tradefed.testtype.VtsMultiDeviceTest:ltp-number-of-threads:1" />
-
-  <!-- Unapproved vts-security Tests -->
-  <option name="compatibility:exclude-filter" value="SecurityPoCKernelTest" />
-  <option name="compatibility:exclude-filter" value="VtsSecuritySelinuxPolicyHost" />
-
-  <!-- VtsTrebleVintfTest is deprecated, run VtsTrebleVendorVintfTest instead -->
-  <option name="compatibility:exclude-filter" value="VtsTrebleVintfTest" />
-  <option name="compatibility:exclude-filter" value="VtsTrebleVintfTestOMr1" />
-
-  <!-- Tests for libraries not on GSI -->
-  <option name="compatibility:exclude-filter" value="VtsHalBufferHubV1_0Target" />
-</configuration>
diff --git a/tools/vts-tradefed/res/default/DefaultTestCase.runner_conf b/tools/vts-tradefed/res/default/DefaultTestCase.runner_conf
deleted file mode 100644
index f66d732..0000000
--- a/tools/vts-tradefed/res/default/DefaultTestCase.runner_conf
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "test_bed": [],
-    "log_path": "/tmp/logs",
-    "test_paths": ["./"],
-    "enable_web": true
-}
diff --git a/tools/vts-tradefed/res/push_groups/FuncFuzzerTest.push b/tools/vts-tradefed/res/push_groups/FuncFuzzerTest.push
deleted file mode 100644
index 1dbaa9f..0000000
--- a/tools/vts-tradefed/res/push_groups/FuncFuzzerTest.push
+++ /dev/null
@@ -1,5 +0,0 @@
-DATA/lib/libclang_rt.asan-arm-android.so->/data/local/tmp/32/libclang_rt.asan-arm-android.so
-DATA/lib64/libclang_rt.asan-aarch64-android.so->/data/local/tmp/64/libclang_rt.asan-aarch64-android.so
-
-DATA/asan/system/lib/libvts_func_fuzzer_utils.so->/data/local/tmp/32/libvts_func_fuzzer_utils.so
-DATA/asan/system/lib64/libvts_func_fuzzer_utils.so->/data/local/tmp/64/libvts_func_fuzzer_utils.so
diff --git a/tools/vts-tradefed/res/push_groups/HalHidlHostTest.push b/tools/vts-tradefed/res/push_groups/HalHidlHostTest.push
deleted file mode 100644
index f4a27e3..0000000
--- a/tools/vts-tradefed/res/push_groups/HalHidlHostTest.push
+++ /dev/null
@@ -1,2 +0,0 @@
-VtsDriverHal.push
-VtsDriverShell.push
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/HalHidlTargetTest.push b/tools/vts-tradefed/res/push_groups/HalHidlTargetTest.push
deleted file mode 100644
index d1ad9b6..0000000
--- a/tools/vts-tradefed/res/push_groups/HalHidlTargetTest.push
+++ /dev/null
@@ -1 +0,0 @@
-VtsDriverShell.push
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/HostDrivenTest.push b/tools/vts-tradefed/res/push_groups/HostDrivenTest.push
deleted file mode 100644
index f4a27e3..0000000
--- a/tools/vts-tradefed/res/push_groups/HostDrivenTest.push
+++ /dev/null
@@ -1,2 +0,0 @@
-VtsDriverHal.push
-VtsDriverShell.push
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/IfaceFuzzerTest.push b/tools/vts-tradefed/res/push_groups/IfaceFuzzerTest.push
deleted file mode 100644
index ef7d58c..0000000
--- a/tools/vts-tradefed/res/push_groups/IfaceFuzzerTest.push
+++ /dev/null
@@ -1,36 +0,0 @@
-DATA/asan/system/lib/libvts_datatype.so->/data/local/tmp/32/libvts_datatype.so
-DATA/asan/system/lib64/libvts_datatype.so->/data/local/tmp/64/libvts_datatype.so
-
-DATA/asan/system/lib/libvts_measurement.so->/data/local/tmp/32/libvts_measurement.so
-DATA/asan/system/lib64/libvts_measurement.so->/data/local/tmp/64/libvts_measurement.so
-
-DATA/asan/system/lib/libvts_interfacespecification.so->/data/local/tmp/32/libvts_interfacespecification.so
-DATA/asan/system/lib64/libvts_interfacespecification.so->/data/local/tmp/64/libvts_interfacespecification.so
-
-DATA/asan/system/lib/libvts_common.so->/data/local/tmp/32/libvts_common.so
-DATA/asan/system/lib64/libvts_common.so->/data/local/tmp/64/libvts_common.so
-
-DATA/asan/system/lib/libvts_multidevice_proto.so->/data/local/tmp/32/libvts_multidevice_proto.so
-DATA/asan/system/lib64/libvts_multidevice_proto.so->/data/local/tmp/64/libvts_multidevice_proto.so
-
-DATA/asan/system/lib/libvts_drivercomm.so->/data/local/tmp/32/libvts_drivercomm.so
-DATA/asan/system/lib64/libvts_drivercomm.so->/data/local/tmp/64/libvts_drivercomm.so
-
-DATA/asan/system/lib/libprotobuf-cpp-full.so->/data/local/tmp/32/libprotobuf-cpp-full.so
-DATA/asan/system/lib64/libprotobuf-cpp-full.so->/data/local/tmp/64/libprotobuf-cpp-full.so
-
-DATA/asan/system/lib/libvts_codecoverage.so->/data/local/tmp/32/libvts_codecoverage.so
-DATA/asan/system/lib64/libvts_codecoverage.so->/data/local/tmp/64/libvts_codecoverage.so
-
-DATA/lib/libclang_rt.asan-arm-android.so->/data/local/tmp/32/libclang_rt.asan-arm-android.so
-DATA/lib64/libclang_rt.asan-aarch64-android.so->/data/local/tmp/64/libclang_rt.asan-aarch64-android.so
-DATA/lib64/libclang_rt.asan-x86_64-android.so->/data/local/tmp/64/libclang_rt.asan-x86_64-android.so
-
-DATA/asan/system/lib/libvts_proto_fuzzer.so->/data/local/tmp/32/libvts_proto_fuzzer.so
-DATA/asan/system/lib64/libvts_proto_fuzzer.so->/data/local/tmp/64/libvts_proto_fuzzer.so
-
-DATA/asan/system/lib/libvts_proto_fuzzer_proto.so->/data/local/tmp/32/libvts_proto_fuzzer_proto.so
-DATA/asan/system/lib64/libvts_proto_fuzzer_proto.so->/data/local/tmp/64/libvts_proto_fuzzer_proto.so
-
-DATA/bin/vts_hal_agent32->/data/local/tmp/32/vts_hal_agent32
-DATA/bin/vts_hal_agent64->/data/local/tmp/64/vts_hal_agent64
diff --git a/tools/vts-tradefed/res/push_groups/LLVMFuzzerTest.push b/tools/vts-tradefed/res/push_groups/LLVMFuzzerTest.push
deleted file mode 100644
index 217a5c0..0000000
--- a/tools/vts-tradefed/res/push_groups/LLVMFuzzerTest.push
+++ /dev/null
@@ -1,5 +0,0 @@
-HostDrivenTest.push
-
-DATA/lib/libclang_rt.asan-arm-android.so->/data/local/tmp/32/libclang_rt.asan-arm-android.so
-DATA/lib64/libclang_rt.asan-aarch64-android.so->/data/local/tmp/64/libclang_rt.asan-aarch64-android.so
-
diff --git a/tools/vts-tradefed/res/push_groups/README.md b/tools/vts-tradefed/res/push_groups/README.md
deleted file mode 100644
index 167157e..0000000
--- a/tools/vts-tradefed/res/push_groups/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# VTS File Push Groups
-
-As part of the test setup procedure, a VTS test can push a set of files to
-a target device. A list of files can be defined as a push group (i.e., a `.push`
-file in this directory).
-
-A list of the predefined, basic push groups is as follows:
-
-- VtsAgent.push: VTS agent files.
-- VtsDriverShell.push: VTS shell driver files.
-- VtsDriverHal.push: VTS HAL driver files.
-- VtsProfilerHal.push: VTS HAL profiler files.
-- VtsSpec.push: VTS specification files for all HIDL HALs.
-
-Based on those, the following push groups are defined where each group is for a
-particular test type:
-
-- HalHidlTargetTest.push: For target-side HIDL HAL test.
-- HalHidlHostTest.push: For host-driven HIDL HAL test.
-- HostDrivenTest.push: For host-driven test (both HIDL HAL and other system-level components).
-
-The other push groups are fuzzing and record-and-replay tests:
-
-- FuncFuzzerTest.push
-- LLVMFuzzerTest.push
-- IfaceFuzzerTest.push
-- VtsHalReplayTest.push
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/VtsAgent.push b/tools/vts-tradefed/res/push_groups/VtsAgent.push
deleted file mode 100644
index 9857ee9..0000000
--- a/tools/vts-tradefed/res/push_groups/VtsAgent.push
+++ /dev/null
@@ -1,28 +0,0 @@
-DATA/lib/libvts_common.so->/data/local/tmp/32/libvts_common.so
-DATA/lib64/libvts_common.so->/data/local/tmp/64/libvts_common.so
-
-DATA/lib/libvts_resource_driver.so->/data/local/tmp/32/libvts_resource_driver.so
-DATA/lib64/libvts_resource_driver.so->/data/local/tmp/64/libvts_resource_driver.so
-
-DATA/lib/libvts_resource_manager.so->/data/local/tmp/32/libvts_resource_manager.so
-DATA/lib64/libvts_resource_manager.so->/data/local/tmp/64/libvts_resource_manager.so
-
-DATA/lib/libvts_multidevice_proto.so->/data/local/tmp/32/libvts_multidevice_proto.so
-DATA/lib64/libvts_multidevice_proto.so->/data/local/tmp/64/libvts_multidevice_proto.so
-
-DATA/lib/libvts_drivercomm.so->/data/local/tmp/32/libvts_drivercomm.so
-DATA/lib64/libvts_drivercomm.so->/data/local/tmp/64/libvts_drivercomm.so
-
-DATA/lib/libprotobuf-cpp-full.so->/data/local/tmp/32/libprotobuf-cpp-full.so
-DATA/lib64/libprotobuf-cpp-full.so->/data/local/tmp/64/libprotobuf-cpp-full.so
-
-DATA/lib/libvts_codecoverage.so->/data/local/tmp/32/libvts_codecoverage.so
-DATA/lib64/libvts_codecoverage.so->/data/local/tmp/64/libvts_codecoverage.so
-
-DATA/bin/vts_hal_agent32->/data/local/tmp/32/vts_hal_agent32
-DATA/bin/vts_hal_agent64->/data/local/tmp/64/vts_hal_agent64
-
-DATA/bin/vts_testability_checker32->/data/local/tmp/vts_testability_checker32
-DATA/bin/vts_testability_checker64->/data/local/tmp/vts_testability_checker64
-
-DATA/app/VtsAgentApp/VtsAgentApp.apk->/data/local/tmp/VtsAgentApp.apk
diff --git a/tools/vts-tradefed/res/push_groups/VtsDriverHal.push b/tools/vts-tradefed/res/push_groups/VtsDriverHal.push
deleted file mode 100644
index 1b2dcde..0000000
--- a/tools/vts-tradefed/res/push_groups/VtsDriverHal.push
+++ /dev/null
@@ -1,13 +0,0 @@
-VtsAgent.push
-
-DATA/lib/libvts_datatype.so->/data/local/tmp/32/libvts_datatype.so
-DATA/lib64/libvts_datatype.so->/data/local/tmp/64/libvts_datatype.so
-
-DATA/lib/libvts_measurement.so->/data/local/tmp/32/libvts_measurement.so
-DATA/lib64/libvts_measurement.so->/data/local/tmp/64/libvts_measurement.so
-
-DATA/lib/libvts_interfacespecification.so->/data/local/tmp/32/libvts_interfacespecification.so
-DATA/lib64/libvts_interfacespecification.so->/data/local/tmp/64/libvts_interfacespecification.so
-
-DATA/bin/vts_hal_driver32->/data/local/tmp/32/vts_hal_driver32
-DATA/bin/vts_hal_driver64->/data/local/tmp/64/vts_hal_driver64
diff --git a/tools/vts-tradefed/res/push_groups/VtsDriverShell.push b/tools/vts-tradefed/res/push_groups/VtsDriverShell.push
deleted file mode 100644
index 14b9ca3..0000000
--- a/tools/vts-tradefed/res/push_groups/VtsDriverShell.push
+++ /dev/null
@@ -1,4 +0,0 @@
-VtsAgent.push
-
-DATA/bin/vts_shell_driver32->/data/local/tmp/32/vts_shell_driver32
-DATA/bin/vts_shell_driver64->/data/local/tmp/64/vts_shell_driver64
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/VtsHalReplayTest.push b/tools/vts-tradefed/res/push_groups/VtsHalReplayTest.push
deleted file mode 100644
index f087463..0000000
--- a/tools/vts-tradefed/res/push_groups/VtsHalReplayTest.push
+++ /dev/null
@@ -1,8 +0,0 @@
-VtsDriverHal.push
-VtsDriverShell.push
-
-DATA/lib/libvts_profiling_utils.so->/data/local/tmp/32/libvts_profiling_utils.so
-DATA/lib64/libvts_profiling_utils.so->/data/local/tmp/64/libvts_profiling_utils.so
-
-DATA/bin/vts_hal_replayer32->/data/local/tmp/32/vts_hal_replayer32
-DATA/bin/vts_hal_replayer64->/data/local/tmp/64/vts_hal_replayer64
\ No newline at end of file
diff --git a/tools/vts-tradefed/res/push_groups/VtsSpec.push b/tools/vts-tradefed/res/push_groups/VtsSpec.push
deleted file mode 100644
index 14a5924..0000000
--- a/tools/vts-tradefed/res/push_groups/VtsSpec.push
+++ /dev/null
@@ -1,31 +0,0 @@
-spec/hardware/interfaces/thermal/1.0/vts/Thermal.vts->/data/local/tmp/spec/thermal/Thermal.vts
-spec/hardware/interfaces/thermal/1.0/vts/types.vts->/data/local/tmp/spec/thermal/types.vts
-spec/hardware/interfaces/vibrator/1.0/vts/Vibrator.vts->/data/local/tmp/spec/vibrator/Vibrator.vts
-spec/hardware/interfaces/vibrator/1.0/vts/types.vts->/data/local/tmp/spec/vibrator/types.vts
-spec/hardware/interfaces/sensors/1.0/vts/Sensors.vts->/data/local/tmp/spec/sensors/Sensors.vts
-spec/hardware/interfaces/sensors/1.0/vts/types.vts->/data/local/tmp/spec/sensors/types.vts
-spec/hardware/interfaces/graphics/mapper/2.0/vts/Mapper.vts->/data/local/tmp/spec/graphics/mapper/Mapper.vts
-spec/hardware/interfaces/graphics/mapper/2.0/vts/types.vts->/data/local/tmp/spec/graphics/mapper/types.vts
-spec/hardware/interfaces/graphics/allocator/2.0/vts/Allocator.vts->/data/local/tmp/spec/graphics/allocator/Allocator.vts
-spec/hardware/interfaces/graphics/allocator/2.0/vts/AllocatorClient.vts->/data/local/tmp/spec/graphics/allocator/AllocatorClient.vts
-spec/hardware/interfaces/graphics/allocator/2.0/vts/types.vts->/data/local/tmp/spec/graphics/allocator/types.vts
-spec/hardware/interfaces/tv/input/1.0/vts/TvInputCallback.vts->/data/local/tmp/spec/tv/input/TvInputCallback.vts
-spec/hardware/interfaces/tv/input/1.0/vts/TvInput.vts->/data/local/tmp/spec/tv/input/TvInput.vts
-spec/hardware/interfaces/tv/input/1.0/vts/types.vts->/data/local/tmp/spec/tv/input/types.vts
-spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCec.vts->/data/local/tmp/spec/tv/cec/HdmiCec.vts
-spec/hardware/interfaces/tv/cec/1.0/vts/HdmiCecCallback.vts->/data/local/tmp/spec/tv/cec/HdmiCecCallback.vts
-spec/hardware/interfaces/tv/cec/1.0/vts/types.vts->/data/local/tmp/spec/tv/cec/types.vts
-spec/hardware/interfaces/automotive/vehicle/2.0/vts/Vehicle.vts->/data/local/tmp/spec/vehicle/Vehicle.vts
-spec/hardware/interfaces/automotive/vehicle/2.0/vts/VehicleCallback.vts->/data/local/tmp/spec/vehicle/VehicleCallback.vts
-spec/hardware/interfaces/automotive/vehicle/2.0/vts/types.vts->/data/local/tmp/spec/vehicle/types.vts
-spec/hardware/interfaces/vr/1.0/vts/Vr.vts->/data/local/tmp/spec/vr/Vr.vts
-spec/hardware/interfaces/nfc/1.0/vts/NfcClientCallback.vts->/data/local/tmp/spec/nfc/NfcClientCallback.vts
-spec/hardware/interfaces/nfc/1.0/vts/Nfc.vts->/data/local/tmp/spec/nfc/Nfc.vts
-spec/hardware/interfaces/nfc/1.0/vts/types.vts->/data/local/tmp/spec/nfc/types.vts
-spec/hardware/interfaces/light/2.0/vts/Light.vts->/data/local/tmp/spec/light/Light.vts
-spec/hardware/interfaces/light/2.0/vts/types.vts->/data/local/tmp/spec/light/types.vts
-spec/hardware/interfaces/power/1.0/vts/Power.vts->/data/local/tmp/spec/power/Power.vts
-spec/hardware/interfaces/power/1.0/vts/types.vts->/data/local/tmp/spec/power/types.vts
-spec/hardware/interfaces/memtrack/1.0/vts/Memtrack.vts->/data/local/tmp/spec/memtrack/Memtrack.vts
-spec/hardware/interfaces/memtrack/1.0/vts/types.vts->/data/local/tmp/spec/memtrack/types.vts
-
diff --git a/tools/vts-tradefed/res/report/VTS-logo.png b/tools/vts-tradefed/res/report/VTS-logo.png
deleted file mode 100644
index 7f72441..0000000
--- a/tools/vts-tradefed/res/report/VTS-logo.png
+++ /dev/null
Binary files differ