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