Add 64bit support to tests and runners in CTS
Change-Id: I9a676e19d3ef88f76d8cd862b6fb78917a227159
diff --git a/development/ide/eclipse/.classpath b/development/ide/eclipse/.classpath
index b95d52a..fafcc32 100644
--- a/development/ide/eclipse/.classpath
+++ b/development/ide/eclipse/.classpath
@@ -1,25 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="lib" path="prebuilt/common/ddmlib/ddmlib-prebuilt.jar"/>
- <classpathentry kind="lib" path="prebuilt/common/tradefed/tradefed-prebuilt.jar"/>
+ <classpathentry kind="lib" path="prebuilts/misc/common/ddmlib/ddmlib-prebuilt.jar"/>
+ <classpathentry kind="lib" path="prebuilts/misc/common/tradefed/tradefed-prebuilt.jar"/>
<classpathentry kind="src" path="cts/apps/CtsVerifier/src"/>
- <classpathentry kind="src" path="cts/apps/CtsVerifier/tests/src"/>
<classpathentry kind="src" path="cts/hostsidetests/appsecurity/src"/>
<classpathentry kind="src" path="cts/hostsidetests/appsecurity/test-apps/AppWithData/src"/>
<classpathentry kind="src" path="cts/hostsidetests/monkey/src"/>
<classpathentry kind="src" path="cts/hostsidetests/monkey/test-apps/CtsMonkeyApp/src"/>
<classpathentry kind="src" path="cts/hostsidetests/monkey/test-apps/CtsMonkeyApp2/src"/>
+ <classpathentry kind="src" path="cts/hostsidetests/sample/src"/>
+ <classpathentry kind="src" path="cts/hostsidetests/sample/app/src"/>
+ <classpathentry kind="src" path="cts/hostsidetests/theme/src"/>
+ <classpathentry kind="src" path="cts/hostsidetests/theme/app/src"/>
+ <classpathentry kind="src" path="cts/hostsidetests/usb/src"/>
<classpathentry kind="src" path="cts/libs/vogar-expect/src"/>
- <classpathentry kind="src" path="cts/tests/ApiDemosReferenceTest/src"/>
+ <classpathentry kind="src" path="cts/libs/commonutil/src"/>
+ <classpathentry kind="src" path="cts/libs/deviceutil/src"/>
+ <classpathentry kind="src" path="cts/libs/json/src"/>
+ <classpathentry kind="src" path="cts/libs/testserver/src"/>
+ <classpathentry kind="src" path="cts/libs/wrappedgtest/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/browserbench/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/dram/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/filesystemperf/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/opengl/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/simplecpu/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/ui/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/deviceTests/videoperf/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/jank/app/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/jank/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/uihost/appA/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/uihost/appB/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/uihost/control/src"/>
+ <classpathentry kind="src" path="cts/suite/cts/hostTests/uihost/src"/>
<classpathentry kind="src" path="cts/tests/ProcessTest/src"/>
<classpathentry kind="src" path="cts/tests/ProcessTest/NoShareUidApp/src"/>
<classpathentry kind="src" path="cts/tests/ProcessTest/ShareUidApp/src"/>
<classpathentry kind="src" path="cts/tests/SignatureTest/src"/>
<classpathentry kind="src" path="cts/tests/SignatureTest/tests/src"/>
<classpathentry kind="src" path="cts/tests/acceleration/src"/>
- <classpathentry kind="src" path="cts/tests/accessibilityservice/src"/>
<classpathentry kind="src" path="cts/tests/core/runner/src"/>
<classpathentry kind="src" path="cts/tests/deviceadmin/src"/>
+ <classpathentry kind="src" path="cts/tests/sample/src"/>
<classpathentry kind="src" path="cts/tests/src"/>
<classpathentry kind="src" path="cts/tests/tests/acceleration/src"/>
<classpathentry kind="src" path="cts/tests/tests/accessibility/src"/>
@@ -34,12 +55,10 @@
<classpathentry kind="src" path="cts/tests/tests/dpi/src"/>
<classpathentry kind="src" path="cts/tests/tests/dpi2/src"/>
<classpathentry kind="src" path="cts/tests/tests/drm/src"/>
- <classpathentry kind="src" path="cts/tests/tests/example/src"/>
<classpathentry kind="src" path="cts/tests/tests/gesture/src"/>
<classpathentry kind="src" path="cts/tests/tests/graphics/src"/>
<classpathentry kind="src" path="cts/tests/tests/graphics2/src"/>
<classpathentry kind="src" path="cts/tests/tests/hardware/src"/>
- <classpathentry kind="src" path="cts/tests/tests/holo/src"/>
<classpathentry kind="src" path="cts/tests/tests/jni/src"/>
<classpathentry kind="src" path="cts/tests/tests/location/src"/>
<classpathentry kind="src" path="cts/tests/tests/media/src"/>
@@ -48,11 +67,6 @@
<classpathentry kind="src" path="cts/tests/tests/opengl/src"/>
<classpathentry kind="src" path="cts/tests/tests/openglperf/src"/>
<classpathentry kind="src" path="cts/tests/tests/os/src"/>
- <classpathentry kind="src" path="cts/tests/tests/performance/src"/>
- <classpathentry kind="src" path="cts/tests/tests/performance2/src"/>
- <classpathentry kind="src" path="cts/tests/tests/performance3/src"/>
- <classpathentry kind="src" path="cts/tests/tests/performance4/src"/>
- <classpathentry kind="src" path="cts/tests/tests/performance5/src"/>
<classpathentry kind="src" path="cts/tests/tests/permission/src"/>
<classpathentry kind="src" path="cts/tests/tests/permission2/src"/>
<classpathentry kind="src" path="cts/tests/tests/preference/src"/>
@@ -64,7 +78,6 @@
<classpathentry kind="src" path="cts/tests/tests/telephony/src"/>
<classpathentry kind="src" path="cts/tests/tests/text/src"/>
<classpathentry kind="src" path="cts/tests/tests/textureview/src"/>
- <classpathentry kind="src" path="cts/tests/tests/theme/src"/>
<classpathentry kind="src" path="cts/tests/tests/util/src"/>
<classpathentry kind="src" path="cts/tests/tests/view/src"/>
<classpathentry kind="src" path="cts/tests/tests/webkit/src"/>
@@ -78,19 +91,11 @@
<classpathentry kind="src" path="cts/tools/dasm/src"/>
<classpathentry kind="src" path="cts/tools/device-setup/TestDeviceSetup/src"/>
<classpathentry kind="src" path="cts/tools/dex-tools/src"/>
- <classpathentry kind="src" path="cts/tools/dx-tests/src"/>
- <classpathentry kind="src" path="cts/tools/host/src"/>
- <classpathentry kind="src" path="cts/tools/host/test"/>
<classpathentry kind="src" path="cts/tools/signature-tools/src"/>
<classpathentry kind="src" path="cts/tools/signature-tools/test"/>
<classpathentry kind="src" path="cts/tools/tradefed-host/src"/>
<classpathentry kind="src" path="cts/tools/tradefed-host/tests/src"/>
<classpathentry kind="src" path="cts/tools/utils"/>
- <classpathentry kind="src" path="cts/tools/vm-tests/src"/>
+ <classpathentry kind="src" path="cts/tools/vm-tests-tf/src"/>
<classpathentry kind="src" path="external/easymock/src"/>
- <classpathentry kind="src" path="out/target/common/obj/APPS/CtsAccessibilityServiceTestCases_intermediates/src/src"/>
- <classpathentry kind="src" path="out/target/common/obj/APPS/CtsTestStubs_intermediates/src/src"/>
- <classpathentry kind="src" path="out/target/common/obj/APPS/CtsTestStubs_intermediates/src/renderscript/src"/>
- <classpathentry kind="src" path="out/target/common/obj/APPS/CtsVerifier_intermediates/src"/>
- <classpathentry kind="src" path="out/target/common/obj/APPS/CtsVerifierTests_intermediates/src"/>
</classpath>
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
index 702002c..a0590d9 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
@@ -17,6 +17,7 @@
package com.android.cts.appsecurity;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.Log;
import com.android.ddmlib.testrunner.InstrumentationResultParser;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
@@ -29,6 +30,8 @@
import com.android.tradefed.result.TestResult.TestStatus;
import com.android.tradefed.result.TestRunResult;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
@@ -38,7 +41,7 @@
/**
* Set of tests that verify various security checks involving multiple apps are properly enforced.
*/
-public class AppSecurityTests extends DeviceTestCase implements IBuildReceiver {
+public class AppSecurityTests extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String RUNNER = "android.support.test.runner.AndroidJUnitRunner";
@@ -104,8 +107,14 @@
private static final String LOG_TAG = "AppSecurityTests";
+ private IAbi mAbi;
private CtsBuildHelper mCtsBuild;
+ @Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
/**
* {@inheritDoc}
*/
@@ -136,12 +145,13 @@
getDevice().uninstallPackage(SHARED_UI_PKG);
getDevice().uninstallPackage(SHARED_UI_DIFF_CERT_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(getTestAppFile(SHARED_UI_APK),
- false);
+ false, options);
assertNull(String.format("failed to install shared uid app, Reason: %s", installResult),
installResult);
installResult = getDevice().installPackage(getTestAppFile(SHARED_UI_DIFF_CERT_APK),
- false);
+ false, options);
assertNotNull("shared uid app with different cert than existing app installed " +
"successfully", installResult);
assertEquals("INSTALL_FAILED_SHARED_USER_INCOMPATIBLE", installResult);
@@ -162,12 +172,13 @@
// cleanup test app that might be installed from previous partial test run
getDevice().uninstallPackage(SIMPLE_APP_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(getTestAppFile(SIMPLE_APP_APK),
- false);
+ false, options);
assertNull(String.format("failed to install simple app. Reason: %s", installResult),
installResult);
installResult = getDevice().installPackage(getTestAppFile(SIMPLE_APP_DIFF_CERT_APK),
- true /* reinstall */);
+ true /* reinstall */, options);
assertNotNull("app upgrade with different cert than existing app installed " +
"successfully", installResult);
assertEquals("INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES", installResult);
@@ -187,8 +198,9 @@
getDevice().uninstallPackage(APP_WITH_DATA_PKG);
getDevice().uninstallPackage(APP_ACCESS_DATA_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
- false);
+ false, options);
assertNull(String.format("failed to install app with data. Reason: %s", installResult),
installResult);
// run appwithdata's tests to create private data
@@ -196,7 +208,7 @@
APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD));
installResult = getDevice().installPackage(getTestAppFile(APP_ACCESS_DATA_APK),
- false);
+ false, options);
assertNull(String.format("failed to install app access data. Reason: %s",
installResult), installResult);
// run appaccessdata's tests which attempt to access appwithdata's private data
@@ -216,8 +228,9 @@
wipePrimaryExternalStorage(getDevice());
getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
assertNull(getDevice()
- .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false, options));
assertTrue("Failed external storage with no permissions",
runDeviceTests(EXTERNAL_STORAGE_APP_PKG));
} finally {
@@ -235,8 +248,9 @@
wipePrimaryExternalStorage(getDevice());
getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
assertNull(getDevice()
- .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false, options));
assertTrue("Failed external storage with read permissions",
runDeviceTests(READ_EXTERNAL_STORAGE_APP_PKG));
} finally {
@@ -254,8 +268,9 @@
wipePrimaryExternalStorage(getDevice());
getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
assertNull(getDevice()
- .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false, options));
assertTrue("Failed external storage with write permissions",
runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG));
} finally {
@@ -274,12 +289,13 @@
getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
assertNull(getDevice()
- .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false, options));
assertNull(getDevice()
- .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false, options));
assertNull(getDevice()
- .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false));
+ .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false, options));
assertTrue("Failed to write gifts", runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG,
WRITE_EXTERNAL_STORAGE_APP_CLASS, "doWriteGifts"));
@@ -305,8 +321,9 @@
// cleanup test app that might be installed from previous partial test run
getDevice().uninstallPackage(APP_WITH_DATA_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
- false);
+ false, options);
assertNull(String.format("failed to install app with data. Reason: %s", installResult),
installResult);
// run appwithdata's tests to create private data
@@ -316,7 +333,7 @@
getDevice().uninstallPackage(APP_WITH_DATA_PKG);
installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
- false);
+ false, options);
assertNull(String.format("failed to install app with data second time. Reason: %s",
installResult), installResult);
// run appwithdata's 'check if file exists' test
@@ -339,14 +356,15 @@
getDevice().uninstallPackage(TARGET_INSTRUMENT_PKG);
getDevice().uninstallPackage(INSTRUMENT_DIFF_CERT_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(
- getTestAppFile(TARGET_INSTRUMENT_APK), false);
+ getTestAppFile(TARGET_INSTRUMENT_APK), false, options);
assertNull(String.format("failed to install target instrumentation app. Reason: %s",
installResult), installResult);
// the app will install, but will get error at runtime when starting instrumentation
installResult = getDevice().installPackage(getTestAppFile(INSTRUMENT_DIFF_CERT_APK),
- false);
+ false, options);
assertNull(String.format(
"failed to install instrumentation app with diff cert. Reason: %s",
installResult), installResult);
@@ -374,19 +392,20 @@
getDevice().uninstallPackage(DECLARE_PERMISSION_COMPAT_PKG);
getDevice().uninstallPackage(PERMISSION_DIFF_CERT_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installResult = getDevice().installPackage(
- getTestAppFile(DECLARE_PERMISSION_APK), false);
+ getTestAppFile(DECLARE_PERMISSION_APK), false, options);
assertNull(String.format("failed to install declare permission app. Reason: %s",
installResult), installResult);
installResult = getDevice().installPackage(
- getTestAppFile(DECLARE_PERMISSION_COMPAT_APK), false);
+ getTestAppFile(DECLARE_PERMISSION_COMPAT_APK), false, options);
assertNull(String.format("failed to install declare permission compat app. Reason: %s",
installResult), installResult);
// the app will install, but will get error at runtime
installResult = getDevice().installPackage(getTestAppFile(PERMISSION_DIFF_CERT_APK),
- false);
+ false, options);
assertNull(String.format("failed to install permission app with diff cert. Reason: %s",
installResult), installResult);
// run PERMISSION_DIFF_CERT_PKG tests which try to access the permission
@@ -421,8 +440,9 @@
// Install our test app
getDevice().uninstallPackage(MULTIUSER_STORAGE_PKG);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
final String installResult = getDevice()
- .installPackage(getTestAppFile(MULTIUSER_STORAGE_APK), false);
+ .installPackage(getTestAppFile(MULTIUSER_STORAGE_APK), false, options);
assertNull("Failed to install: " + installResult, installResult);
// Clear data from previous tests
diff --git a/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java b/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
index 9c27b62..9e04274 100644
--- a/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
+++ b/hostsidetests/monkey/src/com/android/cts/monkey/AbstractMonkeyTest.java
@@ -1,28 +1,37 @@
package com.android.cts.monkey;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
-abstract class AbstractMonkeyTest extends DeviceTestCase implements IBuildReceiver {
+abstract class AbstractMonkeyTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
static final String[] PKGS = {"com.android.cts.monkey", "com.android.cts.monkey2"};
static final String[] APKS = {"CtsMonkeyApp.apk", "CtsMonkeyApp2.apk"};
- /**
+ /**
* Base monkey command with flags to avoid side effects like airplane mode.
*/
static final String MONKEY_CMD = "monkey --pct-touch 0 --pct-motion 0 --pct-majornav 0 --pct-syskeys 0 --pct-anyevent 0 --pct-rotation 0";
+ IAbi mAbi;
CtsBuildHelper mBuild;
ITestDevice mDevice;
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
}
@@ -31,10 +40,11 @@
protected void setUp() throws Exception {
super.setUp();
mDevice = getDevice();
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
for (int i = 0; i < PKGS.length; i++) {
mDevice.uninstallPackage(PKGS[i]);
File app = mBuild.getTestApp(APKS[i]);
- mDevice.installPackage(app, false);
+ mDevice.installPackage(app, false, options);
}
clearLogCat();
}
diff --git a/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java b/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java
index a3bc08f..24f4803 100644
--- a/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java
+++ b/hostsidetests/sample/src/android/sample/cts/SampleHostResultTest.java
@@ -29,6 +29,7 @@
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.util.CommandResult;
import com.android.tradefed.util.CommandStatus;
@@ -41,7 +42,7 @@
/**
* Test to measure the transfer time of a file from the host to the device.
*/
-public class SampleHostResultTest extends DeviceTestCase implements IBuildReceiver {
+public class SampleHostResultTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String TAG = SampleHostResultTest.class.getSimpleName();
@@ -67,6 +68,15 @@
*/
private ITestDevice mDevice;
+ private String mAbiName;
+ private String mAbiBitness;
+
+ @Override
+ public void setAbi(String name, String bitness) {
+ mAbiName = name;
+ mAbiBitness = bitness;
+ }
+
@Override
public void setBuild(IBuildInfo buildInfo) {
// Get the build, this is used to access the APK.
@@ -122,7 +132,7 @@
// Compute the stats.
Stat.StatResult stat = Stat.getStat(result);
// Get the report for this test and add the results to record.
- HostReportLog report = new HostReportLog(mDevice.getSerialNumber(),
+ HostReportLog report = new HostReportLog(mDevice.getSerialNumber(), mAbiName,
ReportLog.getClassMethodNames());
report.printArray("Times", result, ResultType.LOWER_BETTER, ResultUnit.MS);
report.printValue("Min", stat.mMin, ResultType.LOWER_BETTER, ResultUnit.MS);
diff --git a/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java b/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java
index 7ccde0e..a261c1e 100644
--- a/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java
+++ b/hostsidetests/sample/src/android/sample/cts/SampleHostTest.java
@@ -17,9 +17,12 @@
package android.sample.cts;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
@@ -29,11 +32,11 @@
/**
* Test to check the APK logs to Logcat.
*
- * When this test builds, it also builds {@see android.sample.app.SampleDeviceActivity} into an APK
+ * When this test builds, it also builds {@link android.sample.app.SampleDeviceActivity} into an APK
* which it then installs at runtime and starts. The activity simply prints a message to Logcat and
* then gets uninstalled.
*/
-public class SampleHostTest extends DeviceTestCase implements IBuildReceiver {
+public class SampleHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
/**
* The package name of the APK.
@@ -62,6 +65,11 @@
private static final String TEST_STRING = "SampleTestString";
/**
+ * The ABI to use.
+ */
+ private String mAbi;
+
+ /**
* A reference to the build.
*/
private CtsBuildHelper mBuild;
@@ -72,6 +80,11 @@
private ITestDevice mDevice;
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
// Get the build, this is used to access the APK.
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
@@ -86,8 +99,10 @@
mDevice.uninstallPackage(PACKAGE);
// Get the APK from the build.
File app = mBuild.getTestApp(APK);
+ // Get the ABI flag.
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
// Install the APK on the device.
- mDevice.installPackage(app, false);
+ mDevice.installPackage(app, false, options);
}
@Override
diff --git a/hostsidetests/theme/src/android/theme/cts/ComparisonTask.java b/hostsidetests/theme/src/android/theme/cts/ComparisonTask.java
index 19c37c0..33e67e5 100644
--- a/hostsidetests/theme/src/android/theme/cts/ComparisonTask.java
+++ b/hostsidetests/theme/src/android/theme/cts/ComparisonTask.java
@@ -49,7 +49,6 @@
private final String mStoragePath;
-
public ComparisonTask(ITestDevice device, File reference, String name) {
mDevice = device;
mReference = reference;
diff --git a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
index c88fb44..fded180 100644
--- a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
+++ b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
@@ -17,16 +17,18 @@
package android.theme.cts;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
+import com.android.cts.util.TimeoutReq;
import com.android.ddmlib.Log;
import com.android.ddmlib.Log.LogLevel;
import com.android.ddmlib.IShellOutputReceiver;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.cts.util.TimeoutReq;
-
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
@@ -46,7 +48,7 @@
/**
* Test to check the Holo theme has not been changed.
*/
-public class ThemeHostTest extends DeviceTestCase implements IBuildReceiver {
+public class ThemeHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String TAG = ThemeHostTest.class.getSimpleName();
@@ -172,6 +174,9 @@
private final HashMap<String, File> mReferences = new HashMap<String, File>();
+ /** The ABI to use. */
+ private IAbi mAbi;
+
/** A reference to the build. */
private CtsBuildHelper mBuild;
@@ -183,6 +188,11 @@
private ExecutorCompletionService<Boolean> mCompletionService;
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
// Get the build, this is used to access the APK.
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
@@ -197,8 +207,10 @@
mDevice.uninstallPackage(PACKAGE);
// Get the APK from the build.
File app = mBuild.getTestApp(APK);
+ // Get the ABI flag.
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
// Install the APK on the device.
- mDevice.installPackage(app, false);
+ mDevice.installPackage(app, false, options);
final String densityProp;
@@ -328,6 +340,7 @@
}
}
}
+ in.close();
}
return success;
diff --git a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
index a8ac3e0..2a69e39 100644
--- a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
+++ b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
@@ -16,6 +16,7 @@
package com.android.cts.usb;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
@@ -29,6 +30,8 @@
import com.android.tradefed.result.InputStreamSource;
import com.android.tradefed.result.TestRunResult;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.util.CommandResult;
import com.android.tradefed.util.CommandStatus;
@@ -48,16 +51,23 @@
/**
* Functional tests for usb connection
*/
-public class TestUsbTest extends DeviceTestCase implements IBuildReceiver {
+public class TestUsbTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String LOG_TAG = "TestUsbTest";
private static final String CTS_RUNNER = "android.support.test.runner.AndroidJUnitRunner";
private static final String PACKAGE_NAME = "com.android.cts.usb.serialtest";
private static final String APK_NAME="CtsUsbSerialTestApp.apk";
private ITestDevice mDevice;
+ private IAbi mAbi;
+ private String mAbiBitness;
private CtsBuildHelper mBuild;
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
}
@@ -68,7 +78,8 @@
mDevice = getDevice();
mDevice.uninstallPackage(PACKAGE_NAME);
File app = mBuild.getTestApp(APK_NAME);
- mDevice.installPackage(app, false);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ mDevice.installPackage(app, false, options);
}
@Override
diff --git a/libs/commonutil/src/com/android/cts/util/AbiUtils.java b/libs/commonutil/src/com/android/cts/util/AbiUtils.java
new file mode 100644
index 0000000..f28237c
--- /dev/null
+++ b/libs/commonutil/src/com/android/cts/util/AbiUtils.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.cts.util;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Utility class for handling device ABIs
+ */
+public class AbiUtils {
+
+ /**
+ * The set of 32Bit ABIs.
+ */
+ private static final Set<String> ABIS_32BIT = new HashSet<String>();
+
+ /**
+ * The set of 64Bit ABIs.
+ */
+ private static final Set<String> ABIS_64BIT = new HashSet<String>();
+
+ /**
+ * The set of ARM ABIs.
+ */
+ private static final Set<String> ARM_ABIS = new HashSet<String>();
+
+ /**
+ * The set of Intel ABIs.
+ */
+ private static final Set<String> INTEL_ABIS = new HashSet<String>();
+
+ /**
+ * The set of Mips ABIs.
+ */
+ private static final Set<String> MIPS_ABIS = new HashSet<String>();
+
+ /**
+ * The set of ABI names which CTS supports.
+ */
+ private static final Set<String> ABIS_SUPPORTED_BY_CTS = new HashSet<String>();
+
+ /**
+ * The map of architecture to ABI.
+ */
+ private static final Map<String, Set<String>> ARCH_TO_ABIS = new HashMap<String, Set<String>>();
+ static {
+ ABIS_32BIT.add("armeabi-v7a");
+ ABIS_32BIT.add("x86");
+ ABIS_32BIT.add("mips");
+
+ ABIS_64BIT.add("arm64-v8a");
+ ABIS_64BIT.add("x86_64");
+ ABIS_64BIT.add("mips64");
+
+ ARM_ABIS.add("armeabi-v7a");
+ ARM_ABIS.add("arm64-v8a");
+
+ INTEL_ABIS.add("x86");
+ INTEL_ABIS.add("x86_64");
+
+ MIPS_ABIS.add("mips");
+ MIPS_ABIS.add("mips64");
+
+ ARCH_TO_ABIS.put("arm", ARM_ABIS);
+ ARCH_TO_ABIS.put("arm64", ARM_ABIS);
+ ARCH_TO_ABIS.put("x86", INTEL_ABIS);
+ ARCH_TO_ABIS.put("x86_64", INTEL_ABIS);
+ ARCH_TO_ABIS.put("mips", MIPS_ABIS);
+ ARCH_TO_ABIS.put("mips64", MIPS_ABIS);
+
+ ABIS_SUPPORTED_BY_CTS.addAll(ARM_ABIS);
+ ABIS_SUPPORTED_BY_CTS.addAll(INTEL_ABIS);
+ ABIS_SUPPORTED_BY_CTS.addAll(MIPS_ABIS);
+ }
+
+ /**
+ * Private constructor to avoid instantiation.
+ */
+ private AbiUtils() {}
+
+ /**
+ * Returns the set of ABIs associated with the given architecture.
+ * @param arch The architecture to look up.
+ * @return a new Set containing the ABIs.
+ */
+ public static Set<String> getAbisForArch(String arch) {
+ return new HashSet<String>(ARCH_TO_ABIS.get(arch));
+ }
+
+ /**
+ * Returns the set of ABIs supported by CTS.
+ * @return a new Set containing the supported ABIs.
+ */
+ public static Set<String> getAbisSupportedByCts() {
+ return new HashSet<String>(ABIS_SUPPORTED_BY_CTS);
+ }
+
+ /**
+ * @param abi The ABI name to test.
+ * @return true if the given ABI is supported by CTS.
+ */
+ public static boolean isAbiSupportedByCts(String abi) {
+ return ABIS_SUPPORTED_BY_CTS.contains(abi);
+ }
+
+ /**
+ * Creates a flag for the given ABI.
+ * @param abi the ABI to create the flag for.
+ * @return a string which can be add to a command sent to ADB.
+ */
+ public static String createAbiFlag(String abi) {
+ if (abi == null || abi.isEmpty() || !isAbiSupportedByCts(abi)) {
+ return "";
+ }
+ return String.format("--abi %s ", abi);
+ }
+
+ /**
+ * Creates a unique id from the given ABI and name.
+ * @param abi The ABI to use.
+ * @param name The name to use.
+ * @return a string which uniquely identifies a run.
+ */
+ public static String createId(String abi, String name) {
+ return String.format("%s %s", abi, name);
+ }
+
+ /**
+ * Parses a unique id into the ABI and name.
+ * @param id The id to parse.
+ * @return a string array containing the ABI and name.
+ */
+ public static String[] parseId(String id) {
+ if (id == null || !id.contains(" ")) {
+ return new String[] {"", ""};
+ }
+ return id.split(" ");
+ }
+
+ /**
+ * @param name The name of the ABI.
+ * @return The bitness of the ABI with the given name
+ */
+ public static String getBitness(String name) {
+ return ABIS_32BIT.contains(name) ? "32" : "64";
+ }
+}
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java
index f8c7ec1..e196bfb 100644
--- a/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/CtsHostJankTest.java
@@ -23,16 +23,19 @@
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
import java.util.HashMap;
import java.util.Scanner;
-public class CtsHostJankTest extends DeviceTestCase implements IBuildReceiver {
+public class CtsHostJankTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String TAG = CtsHostJankTest.class.getSimpleName();
private static final String DEVICE_LOCATION = "/data/local/tmp/";
+ // FIXME uiautomator is deprecated and does not support --abi flag
private static final String RUN_UI_AUTOMATOR_CMD = "uiautomator runtest %s -c %s";
private final String mHostTestClass;
private final String mDeviceTestClass;
@@ -40,6 +43,7 @@
private final String mJarPath;
protected ITestDevice mDevice;
protected CtsBuildHelper mBuild;
+ protected IAbi mAbi;
public CtsHostJankTest(String jarName, String deviceTestClass, String hostTestClass) {
this.mHostTestClass = hostTestClass;
@@ -49,6 +53,11 @@
}
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
}
@@ -80,6 +89,7 @@
new IShellOutputReceiver() {
private StringBuilder sb = new StringBuilder();
+ @Override
public void addOutput(byte[] data, int offset, int length) {
byte[] raw = new byte[length];
for (int i = 0; i < length; i++) {
@@ -88,10 +98,12 @@
sb.append(new String(raw));
}
+ @Override
public void flush() {
Log.logAndDisplay(LogLevel.INFO, TAG, sb.toString());
}
+ @Override
public boolean isCancelled() {
return false;
}
@@ -109,6 +121,7 @@
results.put(parts[0], Double.parseDouble(parts[1]));
}
}
+ in.close();
Log.logAndDisplay(LogLevel.INFO, TAG, "Results: " + results);
assertEquals("Could not parse the results file: ", 4, results.size());
@@ -118,8 +131,8 @@
double avgMaxAccFrames = results.get("average of max accumulated frames");
// Create and deliver the report.
- HostReportLog report =
- new HostReportLog(mDevice.getSerialNumber(), mHostTestClass + "#" + testName);
+ HostReportLog report = new HostReportLog(mDevice.getSerialNumber(), mAbi.getName(),
+ mHostTestClass + "#" + testName);
report.printValue(
"Average Frame Rate", avgFrameRate, ResultType.HIGHER_BETTER, ResultUnit.COUNT);
report.printValue("Average of Maximum Accumulated Frames", avgMaxAccFrames,
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java
index ebd5bfa..2942ecf 100644
--- a/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/opengl/CtsHostJankOpenGl.java
@@ -14,7 +14,7 @@
package com.android.cts.jank.opengl;
import com.android.cts.jank.CtsHostJankTest;
-
+import com.android.cts.util.AbiUtils;
import java.io.File;
public class CtsHostJankOpenGl extends CtsHostJankTest {
@@ -36,7 +36,8 @@
// Install the app.
mDevice.uninstallPackage(APK_PACKAGE);
File app = mBuild.getTestApp(APK);
- mDevice.installPackage(app, false);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ mDevice.installPackage(app, false, options);
}
@Override
diff --git a/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java b/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java
index 3027899..a07171e 100644
--- a/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java
+++ b/suite/cts/hostTests/jank/src/com/android/cts/jank/ui/CtsHostJankUi.java
@@ -14,7 +14,7 @@
package com.android.cts.jank.ui;
import com.android.cts.jank.CtsHostJankTest;
-
+import com.android.cts.util.AbiUtils;
import java.io.File;
public class CtsHostJankUi extends CtsHostJankTest {
@@ -36,7 +36,8 @@
// Install the app.
mDevice.uninstallPackage(APK_PACKAGE);
File app = mBuild.getTestApp(APK);
- mDevice.installPackage(app, false);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ mDevice.installPackage(app, false, options);
}
@Override
diff --git a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java
index 63c2d84..75a2e92 100644
--- a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java
+++ b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/InstallTimeTest.java
@@ -18,6 +18,7 @@
import com.android.cts.tradefed.build.CtsBuildHelper;
import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.AbiUtils;
import com.android.cts.util.MeasureRun;
import com.android.cts.util.MeasureTime;
import com.android.cts.util.ResultType;
@@ -28,6 +29,8 @@
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
@@ -36,9 +39,10 @@
/**
* Test to measure installation time of a APK.
*/
-public class InstallTimeTest extends DeviceTestCase implements IBuildReceiver {
+public class InstallTimeTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private CtsBuildHelper mBuild;
private ITestDevice mDevice;
+ private IAbi mAbi;
private static final String TAG = "InstallTimeTest";
static final String PACKAGE = "com.replica.replicaisland";
@@ -46,6 +50,11 @@
private static final double OUTLIER_THRESHOLD = 0.1;
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
}
@@ -64,8 +73,8 @@
}
public void testInstallTime() throws Exception {
- HostReportLog report =
- new HostReportLog(mDevice.getSerialNumber(), ReportLog.getClassMethodNames());
+ HostReportLog report = new HostReportLog(mDevice.getSerialNumber(), mAbi.getName(),
+ ReportLog.getClassMethodNames());
final int NUMBER_REPEAT = 10;
final CtsBuildHelper build = mBuild;
final ITestDevice device = mDevice;
@@ -77,7 +86,8 @@
@Override
public void run(int i) throws Exception {
File app = build.getTestApp(APK);
- device.installPackage(app, false);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ device.installPackage(app, false, options);
}
});
report.printArray("install time", result, ResultType.LOWER_BETTER,
diff --git a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java
index 50a2047..9ccff10 100644
--- a/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java
+++ b/suite/cts/hostTests/uihost/src/com/android/cts/uihost/TaskSwitchingTest.java
@@ -17,9 +17,9 @@
package com.android.cts.uihost;
import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.cts.tradefed.result.CtsReportUtil;
import com.android.cts.tradefed.util.CtsHostStore;
import com.android.cts.tradefed.util.HostReportLog;
+import com.android.cts.util.AbiUtils;
import com.android.cts.util.ReportLog;
import com.android.cts.util.TimeoutReq;
import com.android.ddmlib.Log;
@@ -34,6 +34,8 @@
import com.android.tradefed.result.TestResult;
import com.android.tradefed.result.TestRunResult;
import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import java.io.File;
@@ -45,12 +47,13 @@
* Actual test is done in device, but this host side code installs all necessary APKs
* and starts device test which is in CtsDeviceTaskswitchingControl.
*/
-public class TaskSwitchingTest extends DeviceTestCase implements IBuildReceiver {
+public class TaskSwitchingTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
private static final String TAG = "TaskSwitchingTest";
private final static String RUNNER = "android.support.test.runner.AndroidJUnitRunner";
private CtsBuildHelper mBuild;
private ITestDevice mDevice;
private String mCtsReport = null;
+ private IAbi mAbi;
static final String[] PACKAGES = {
"com.android.cts.taskswitching.control",
@@ -64,6 +67,11 @@
};
@Override
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ @Override
public void setBuild(IBuildInfo buildInfo) {
mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
}
@@ -72,10 +80,11 @@
protected void setUp() throws Exception {
super.setUp();
mDevice = getDevice();
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
for (int i = 0; i < PACKAGES.length; i++) {
mDevice.uninstallPackage(PACKAGES[i]);
File app = mBuild.getTestApp(APKS[i]);
- mDevice.installPackage(app, false);
+ mDevice.installPackage(app, false, options);
}
}
@@ -90,8 +99,9 @@
@TimeoutReq(minutes = 30)
public void testTaskswitching() throws Exception {
- HostReportLog report =
- new HostReportLog(mDevice.getSerialNumber(), ReportLog.getClassMethodNames());
+ // TODO is this used?
+ HostReportLog report = new HostReportLog(mDevice.getSerialNumber(), mAbi.getName(),
+ ReportLog.getClassMethodNames());
RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(PACKAGES[0], RUNNER,
mDevice.getIDevice());
LocalListener listener = new LocalListener();
@@ -101,7 +111,7 @@
fail(result.getRunFailureMessage());
}
assertNotNull("no performance data", mCtsReport);
- CtsHostStore.storeCtsResult(mDevice.getSerialNumber(),
+ CtsHostStore.storeCtsResult(mDevice.getSerialNumber(), mAbi.getName(),
ReportLog.getClassMethodNames(), mCtsReport);
}
@@ -110,7 +120,7 @@
@Override
public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
// necessary as testMetrics passed from CollectingTestListerner is empty
- mCtsReport = CtsReportUtil.getCtsResultFromMetrics(testMetrics);
+ mCtsReport = testMetrics.get("CTS_TEST_REPORT");
super.testEnded(test, testMetrics);
}
}
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
index ed82b08..00845bd 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
@@ -57,6 +57,7 @@
final CountDownLatch done = new CountDownLatch(1);
final int version = i;
DeviceInfoActivity.this.runOnUiThread(new Runnable() {
+ @Override
public void run() {
setContentView(new GLESSurfaceView(DeviceInfoActivity.this, version, done));
}
@@ -121,6 +122,7 @@
ConfigurationInfo info = am.getDeviceConfigurationInfo();
final int glVersion = (info.reqGlEsVersion & 0xffff0000) >> 16;
new Thread() {
+ @Override
public void run() {
runIterations(glVersion);
}
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
index d77a44c..1eb4acb 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
@@ -51,6 +51,9 @@
public static final String VERSION_RELEASE = "buildVersion";
public static final String BUILD_ABI = "build_abi";
public static final String BUILD_ABI2 = "build_abi2";
+ public static final String BUILD_ABIS = "build_abis";
+ public static final String BUILD_ABIS_32 = "build_abis_32";
+ public static final String BUILD_ABIS_64 = "build_abis_64";
public static final String BUILD_FINGERPRINT = "build_fingerprint";
public static final String BUILD_TYPE = "build_type";
public static final String BUILD_MODEL = "build_model";
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
index cdf1df3..19349e5 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
@@ -28,6 +28,7 @@
import android.os.Environment;
import android.os.UserManager;
import android.telephony.TelephonyManager;
+import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
@@ -38,6 +39,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
@@ -71,6 +73,9 @@
addResult(BUILD_FINGERPRINT, Build.FINGERPRINT);
addResult(BUILD_ABI, Build.CPU_ABI);
addResult(BUILD_ABI2, Build.CPU_ABI2);
+ addResult(BUILD_ABIS, TextUtils.join(",", Build.SUPPORTED_ABIS));
+ addResult(BUILD_ABIS_32, TextUtils.join(",", Build.SUPPORTED_32_BIT_ABIS));
+ addResult(BUILD_ABIS_64, TextUtils.join(",", Build.SUPPORTED_64_BIT_ABIS));
addResult(SERIAL_NUMBER, Build.SERIAL);
addResult(VERSION_RELEASE, Build.VERSION.RELEASE);
@@ -163,7 +168,7 @@
* @param key the string of the key name.
* @param value integer value.
*/
- private void addResult(final String key, final int value){
+ static void addResult(final String key, final int value){
mResults.putInt(key, value);
}
@@ -173,7 +178,7 @@
* @param key the string of the key name.
* @param value float value.
*/
- private void addResult(final String key, final float value){
+ static void addResult(final String key, final float value){
mResults.putFloat(key, value);
}
@@ -361,7 +366,6 @@
count, getContext().getExternalFilesDirs(Environment.DIRECTORY_PICTURES).length);
count = Math.max(count, getContext().getObbDirs().length);
- final String result;
if (Environment.isExternalStorageEmulated()) {
if (count == 1) {
return "1 emulated";
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
index 1d3bf7f..04289e9 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
@@ -16,7 +16,6 @@
package android.tests.getinfo;
-import android.content.Context;
import android.opengl.GLES20;
import android.opengl.GLES30;
import android.opengl.GLSurfaceView;
@@ -89,7 +88,7 @@
}
}
}
-
+ scanner.close();
mDone.countDown();
}
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
index fefff99..d8018a1 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/RootProcessScanner.java
@@ -146,13 +146,13 @@
try {
scanner = new Scanner(status);
- scanner = findToken(scanner, "Name:");
+ findToken(scanner, "Name:");
String name = scanner.next();
- scanner = findToken(scanner, "Uid:");
+ findToken(scanner, "Uid:");
boolean rootUid = hasRootId(scanner);
- scanner = findToken(scanner, "Gid:");
+ findToken(scanner, "Gid:");
boolean rootGid = hasRootId(scanner);
return !ROOT_PROCESS_WHITELIST_PATTERN.matcher(name).matches()
@@ -182,13 +182,12 @@
*
* @param scanner to call next() until the token is found
* @param token to find like "Name:"
- * @return scanner after finding token
*/
- private static Scanner findToken(Scanner scanner, String token) {
+ private static void findToken(Scanner scanner, String token) {
while (true) {
String next = scanner.next();
if (next.equals(token)) {
- return scanner;
+ return;
}
}
@@ -214,7 +213,7 @@
File status = getProcessStatus(processDir);
Scanner scanner = new Scanner(status);
try {
- scanner = findToken(scanner, "Name:");
+ findToken(scanner, "Name:");
return scanner.next();
} finally {
scanner.close();
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java b/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
index 3aa57a0..903ac74 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
@@ -15,6 +15,7 @@
*/
package com.android.cts.tradefed.device;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.Log;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
@@ -22,6 +23,8 @@
import com.android.tradefed.testtype.InstrumentationTest;
import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
/**
* Collects info from device under test.
@@ -36,16 +39,22 @@
private static final String APK_NAME = "TestDeviceSetup";
public static final String APP_PACKAGE_NAME = "android.tests.devicesetup";
private static final String INSTRUMENTATION_NAME = "android.tests.getinfo.DeviceInfoInstrument";
+ public static final Set<String> IDS = new HashSet<String>();
+ static {
+ for (String abi : AbiUtils.getAbisSupportedByCts()) {
+ IDS.add(AbiUtils.createId(abi, APP_PACKAGE_NAME));
+ }
+ }
/**
* Installs and runs the device info collector instrumentation, and forwards results
- * to the <var>listener</var>
+ * to the listener.
*
* @param device
* @param listener
* @throws DeviceNotAvailableException
*/
- public static void collectDeviceInfo(ITestDevice device, File testApkDir,
+ public static void collectDeviceInfo(ITestDevice device, String abi, File testApkDir,
ITestInvocationListener listener) throws DeviceNotAvailableException {
File apkFile = new File(testApkDir, String.format("%s.apk", APK_NAME));
if (!apkFile.exists()) {
@@ -59,6 +68,7 @@
// no need to collect tests and re-run
instrTest.setRerunMode(false);
instrTest.setPackageName(APP_PACKAGE_NAME);
+ instrTest.setRunName(AbiUtils.createId(abi, APP_PACKAGE_NAME));
instrTest.setRunnerName(INSTRUMENTATION_NAME);
instrTest.run(listener);
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
index 956f1b1..5357588 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
@@ -272,7 +272,7 @@
String perfResult = CtsReportUtil.getCtsResultFromMetrics(testMetrics);
// host test should be checked in CtsHostStore.
if (perfResult == null) {
- perfResult = CtsHostStore.removeCtsResult(mDeviceSerial, test.toString());
+ perfResult = CtsHostStore.removeCtsResult(mDeviceSerial, "armeabi-v7a", test.toString());
}
if (perfResult != null) {
// CTS result is passed in Summary++++Details format.
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/Abi.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/Abi.java
new file mode 100644
index 0000000..926e14b
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/Abi.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.cts.tradefed.testtype;
+
+import com.android.tradefed.testtype.IAbi;
+/**
+ * A class representing an ABI.
+ */
+public class Abi implements IAbi {
+
+ private String mName;
+ private String mBitness;
+
+ public Abi(String name, String bitness) {
+ mName = name;
+ mBitness = bitness;
+ }
+
+ @Override
+ public String getName() {
+ return mName;
+ }
+
+ @Override
+ public String getBitness() {
+ return mBitness;
+ }
+
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
index 4cfd263..17391ed 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
@@ -16,8 +16,8 @@
package com.android.cts.tradefed.testtype;
-import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
+import com.android.cts.util.AbiUtils;
+import com.android.ddmlib.Log;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.result.ITestInvocationListener;
import com.android.tradefed.util.FileUtil;
@@ -39,7 +39,10 @@
* maintained so cts-tradefed can run against older CTS builds that still
* require this class.
*/
-public class AccessibilityServiceTestRunner extends InstrumentationApkTest {
+@Deprecated
+public class AccessibilityServiceTestRunner extends CtsInstrumentationApkTest {
+
+ private static final String LOG_TAG = AccessibilityServiceTestRunner.class.getSimpleName();
private static final String DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME =
"android.accessibilityservice.delegate";
@@ -50,14 +53,6 @@
private static final String DELEGATING_ACCESSIBLITY_SERVICE_APK =
"CtsDelegatingAccessibilityService.apk";
- private CtsBuildHelper mCtsBuild;
-
- @Override
- public void setBuild(IBuildInfo build) {
- super.setBuild(build);
- mCtsBuild = CtsBuildHelper.createBuildHelper(build);
- }
-
@Override
public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
beforeTest();
@@ -77,7 +72,9 @@
private void installApkAndAssert(String apkName) throws DeviceNotAvailableException {
File file = FileUtil.getFileForPath(mCtsBuild.getTestCasesDir(), apkName);
- String errorMessage = getDevice().installPackage(file, true);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ Log.d(LOG_TAG, "installPackage options: " + options);
+ String errorMessage = getDevice().installPackage(file, true, options);
TestCase.assertNull("Error installing: " + apkName, errorMessage);
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
index 2a4239a..932a8a1 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
@@ -16,9 +16,9 @@
package com.android.cts.tradefed.testtype;
-import com.android.cts.tradefed.build.CtsBuildHelper;
import com.android.cts.tradefed.targetprep.SettingsToggler;
-import com.android.tradefed.build.IBuildInfo;
+import com.android.cts.util.AbiUtils;
+import com.android.ddmlib.Log;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.result.ITestInvocationListener;
@@ -37,7 +37,9 @@
* these services, running the tests, disabling the services, and removing
* the accessibility services package.
*/
-public class AccessibilityTestRunner extends InstrumentationApkTest {
+public class AccessibilityTestRunner extends CtsInstrumentationApkTest {
+
+ private static final String LOG_TAG = AccessibilityTestRunner.class.getSimpleName();
private static final String SOME_ACCESSIBLITY_SERVICES_PACKAGE_NAME =
"android.view.accessibility.services";
@@ -51,14 +53,6 @@
private static final String SOME_ACCESSIBLITY_SERVICES_APK =
"CtsSomeAccessibilityServices.apk";
- private CtsBuildHelper mCtsBuild;
-
- @Override
- public void setBuild(IBuildInfo build) {
- super.setBuild(build);
- mCtsBuild = CtsBuildHelper.createBuildHelper(build);
- }
-
@Override
public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
beforeTest();
@@ -78,7 +72,9 @@
private void installApkAndAssert(String apkName) throws DeviceNotAvailableException {
File file = FileUtil.getFileForPath(mCtsBuild.getTestCasesDir(), apkName);
- String errorMessage = getDevice().installPackage(file, true);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ Log.d(LOG_TAG, "installPackage options: " + options);
+ String errorMessage = getDevice().installPackage(file, true, options);
TestCase.assertNull("Error installing: " + apkName, errorMessage);
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsInstrumentationApkTest.java
similarity index 75%
rename from tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java
rename to tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsInstrumentationApkTest.java
index 4195dda..1e42f3b 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsInstrumentationApkTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,18 +16,15 @@
package com.android.cts.tradefed.testtype;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.Log;
import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.Option.Importance;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.InstrumentationTest;
-import com.android.tradefed.util.AbiFormatter;
-
-import junit.framework.Assert;
import java.io.File;
import java.io.FileNotFoundException;
@@ -35,25 +32,32 @@
import java.util.Collection;
/**
- * A {@link InstrumentationTest} that will install CTS apks
+ * An {@link InstrumentationTest} that will install CTS apks
* before test execution, and uninstall on execution completion.
*/
-public class InstrumentationApkTest extends InstrumentationTest implements IBuildReceiver {
+public class CtsInstrumentationApkTest extends InstrumentationTest implements IBuildReceiver {
- private static final String LOG_TAG = "InstrumentationApkTest";
+ private static final String LOG_TAG = "CtsInstrumentationApkTest";
/** the file names of the CTS apks to install */
private Collection<String> mInstallFileNames = new ArrayList<String>();
private Collection<String> mUninstallPackages = new ArrayList<String>();
+ protected CtsBuildHelper mCtsBuild = null;
+ protected IAbi mAbi = null;
- private CtsBuildHelper mCtsBuild = null;
+ /**
+ * @param abi the ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
/**
* {@inheritDoc}
*/
@Override
public void setBuild(IBuildInfo build) {
- mCtsBuild = CtsBuildHelper.createBuildHelper(build);
+ mCtsBuild = CtsBuildHelper.createBuildHelper(build);
}
/**
@@ -76,11 +80,11 @@
ITestDevice mTestDevice = getDevice();
if (mTestDevice == null) {
- Log.e(LOG_TAG, String.format("Missing device."));
+ Log.e(LOG_TAG, "Missing device.");
return;
}
if (mCtsBuild == null) {
- Log.e(LOG_TAG, String.format("Missing build %s", mCtsBuild));
+ Log.e(LOG_TAG, "Missing build");
return;
}
@@ -90,14 +94,7 @@
try {
File apkFile = mCtsBuild.getTestApp(apkFileName);
String errorCode = null;
- String[] options = {};
- String forceAbi = getForceAbi();
- if (forceAbi != null) {
- String abi = AbiFormatter.getDefaultAbi(mTestDevice, forceAbi);
- if (abi != null) {
- options = new String[]{String.format("--abi %s ", abi)};
- }
- }
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
Log.d(LOG_TAG, "installPackage options: " + options);
errorCode = mTestDevice.installPackage(apkFile, true, options);
if (errorCode != null) {
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
index 2e3fadc..5917479 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
@@ -487,8 +487,8 @@
if (test instanceof InstrumentationTest) {
((InstrumentationTest)test).setForceAbi(mForceAbi);
}
- if (test instanceof DeqpTest) {
- ((DeqpTest)test).setCollectLogs(mCollectDeqpLogs);
+ if (test instanceof DeqpTestRunner) {
+ ((DeqpTestRunner)test).setCollectLogs(mCollectDeqpLogs);
}
forwardPackageDetails(knownTests.getPackageDef(), listener);
@@ -821,7 +821,7 @@
void collectDeviceInfo(ITestDevice device, CtsBuildHelper ctsBuild,
ITestInvocationListener listener) throws DeviceNotAvailableException {
if (!mSkipDeviceInfo) {
- DeviceInfoCollector.collectDeviceInfo(device, ctsBuild.getTestCasesDir(), listener);
+ DeviceInfoCollector.collectDeviceInfo(device, "armeabi-v7a", ctsBuild.getTestCasesDir(), listener);
}
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
similarity index 93%
rename from tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTest.java
rename to tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
index 5149695..6c6267f 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
@@ -1,28 +1,18 @@
package com.android.cts.tradefed.testtype;
-import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.ddmlib.IShellOutputReceiver;
import com.android.ddmlib.MultiLineReceiver;
import com.android.ddmlib.testrunner.ITestRunListener;
import com.android.ddmlib.testrunner.TestIdentifier;
-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;
import com.android.tradefed.result.ByteArrayInputStreamSource;
import com.android.tradefed.result.ITestInvocationListener;
import com.android.tradefed.result.LogDataType;
-import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.lang.Thread;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -35,7 +25,7 @@
*
* Supports running drawElements Quality Program tests found under external/deqp.
*/
-public class DeqpTest implements IDeviceTest, IRemoteTest {
+public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
final private int TESTCASE_BATCH_LIMIT = 1000;
private boolean mLogData;
@@ -45,6 +35,7 @@
private final String mUri;
private final String mName;
private Collection<TestIdentifier> mTests;
+ private IAbi mAbi;
private TestIdentifier mCurrentTestId;
private boolean mGotTestResult;
@@ -52,7 +43,7 @@
private ITestInvocationListener mListener;
- public DeqpTest(String uri, String name, Collection<TestIdentifier> tests) {
+ public DeqpTestRunner(String uri, String name, Collection<TestIdentifier> tests) {
mUri = uri;
mName = name;
mTests = tests;
@@ -60,6 +51,13 @@
}
/**
+ * @param abi the ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ /**
* Enable or disable raw dEQP test log collection.
*/
public void setCollectLogs(boolean logData) {
@@ -70,14 +68,14 @@
* dEQP instrumentation parser
*/
class InstrumentationParser extends MultiLineReceiver {
- private DeqpTest mDeqpTests;
+ private DeqpTestRunner mDeqpTests;
private Map<String, String> mValues;
private String mCurrentName;
private String mCurrentValue;
- public InstrumentationParser(DeqpTest tests) {
+ public InstrumentationParser(DeqpTestRunner tests) {
mDeqpTests = tests;
}
@@ -86,8 +84,7 @@
*/
@Override
public void processNewLines(String[] lines) {
- for (String line : lines)
- {
+ for (String line : lines) {
if (mValues == null) mValues = new HashMap<String, String>();
if (line.startsWith("INSTRUMENTATION_STATUS_CODE: ")) {
@@ -151,8 +148,7 @@
/**
* Converts dEQP testcase path to TestIdentifier.
*/
- private TestIdentifier pathToIdentifier(String testPath)
- {
+ private TestIdentifier pathToIdentifier(String testPath) {
String[] components = testPath.split("\\.");
String name = components[components.length - 1];
String className = null;
@@ -286,8 +282,9 @@
public void handleStatus(Map<String, String> values) {
String eventType = values.get("dEQP-EventType");
- if (eventType == null)
+ if (eventType == null) {
return;
+ }
if (eventType.compareTo("BeginSession") == 0) {
handleBeginSession(values);
@@ -330,7 +327,7 @@
}
if (!tests.isEmpty()) {
- HashMap<String, ArrayList<String> > testGroups = new HashMap();
+ HashMap<String, ArrayList<String> > testGroups = new HashMap<>();
// Collect all sub testgroups
for (String test : tests) {
@@ -338,7 +335,7 @@
ArrayList<String> testGroup = testGroups.get(components[0]);
if (testGroup == null) {
- testGroup = new ArrayList();
+ testGroup = new ArrayList<String>();
testGroups.put(components[0], testGroup);
}
@@ -360,10 +357,10 @@
}
/**
- * Generates testacase trie from TestIdentifiers.
+ * Generates testcase trie from TestIdentifiers.
*/
private String generateTestCaseTrie(Collection<TestIdentifier> tests) {
- ArrayList<String> testPaths = new ArrayList();
+ ArrayList<String> testPaths = new ArrayList<String>();
for (TestIdentifier test : tests) {
testPaths.add(test.getClassName() + "." + test.getTestName());
@@ -391,6 +388,7 @@
String instrumentationName =
"com.drawelements.deqp/com.drawelements.deqp.testercore.DeqpInstrumentation";
+ // TODO run the test with the given ABI
String command = "am instrument -w -e deqpLogFileName \"" + logFileName
+ "\" -e deqpCmdLine \"--deqp-caselist-file=" + caseListFileName + " "
+ "--deqp-gl-config-name=rgba8888d24s8\" "
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DisplayTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DisplayTestRunner.java
index 4c83aa9..59bfcf8 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DisplayTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DisplayTestRunner.java
@@ -25,7 +25,7 @@
* Secure settings cannot be changed from device CTS tests since system signature permission is
* required. Such settings can be modified by the shell user, so a host side test is used.
*/
-public class DisplayTestRunner extends InstrumentationApkTest {
+public class DisplayTestRunner extends CtsInstrumentationApkTest {
private static final String OVERLAY_DISPLAY_DEVICES_SETTING_NAME = "overlay_display_devices";
// Use a non-standard pattern, must match values in tests/tests/display/.../DisplayTest.java
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/GeeTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/GeeTest.java
index 035b4a2..9bfe151 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/GeeTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/GeeTest.java
@@ -23,6 +23,7 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
@@ -47,6 +48,7 @@
private CtsBuildHelper mCtsBuild;
private ITestDevice mDevice;
+ private IAbi mAbi;
private final String mPackageName;
private final String mExeName;
@@ -56,6 +58,13 @@
mExeName = exeName;
}
+ /**
+ * @param abi The ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
@Override
public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
if (installTest()) {
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JUnitDeviceTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JUnitDeviceTest.java
index 4adcb0b..5efa7cd 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JUnitDeviceTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JUnitDeviceTest.java
@@ -25,6 +25,7 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
@@ -52,10 +53,6 @@
private static final String TMP_DIR = "/data/local/tmp/";
- @Option(name = AbiFormatter.FORCE_ABI_STRING, description = AbiFormatter.FORCE_ABI_DESCRIPTION,
- importance = Importance.IF_UNSET)
- private String mForceAbi = null;
-
@Option(name = "junit-device-runtime",
description = "The name of the runtime to use on the device",
importance = Importance.ALWAYS)
@@ -79,12 +76,19 @@
private String mRuntimeArgs;
-
+ private IAbi mAbi;
private static final String JUNIT_JAR = "cts-junit.jar";
private Set<String> mTestJars = new HashSet<String>(Arrays.asList(JUNIT_JAR));
+ /**
+ * @param abi The ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
@Override
public ITestDevice getDevice() {
return mDevice;
@@ -127,7 +131,7 @@
"com.android.cts.junit.SingleJUnitTestRunner %s#%s",
mDeviceTestTmpPath, mRuntimePath, jarPath, mRuntimeArgs,
testId.getClassName(), testId.getTestName());
- String cmd = AbiFormatter.formatCmdForAbi(cmdLine, mForceAbi);
+ String cmd = AbiFormatter.formatCmdForAbi(cmdLine, mAbi.getBitness());
CLog.d("Running %s", cmd);
listener.testStarted(testId);
mDevice.executeShellCommand(cmd, resultParser, mMaxTimeToOutputResponse,
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
index 22a016a..9d9596e 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
@@ -23,8 +23,9 @@
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.result.ITestInvocationListener;
-
import com.android.tradefed.testtype.DeviceTestResult.RuntimeDeviceNotAvailableException;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
@@ -59,10 +60,17 @@
private String mRunName;
private CtsBuildHelper mCtsBuild = null;
private IBuildInfo mBuildInfo = null;
-
+ private IAbi mAbi;
private ClassLoader mClassLoader;
/**
+ * @param abi the ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
@@ -133,7 +141,7 @@
* Tests that take longer than this amount will be failed with a {@link TestTimeoutException}
* as the cause.
*
- * @param testTimeout
+ * @param testTimeoutMs
*/
void setTimeout(long testTimeoutMs) {
mTimeoutMs = testTimeoutMs;
@@ -190,14 +198,6 @@
}
/**
- * setOptions sets options to the tests invoked from this test.
- * It is used to passing options from JarHostTest to the tests started by JarHostTest.
- * The default implementation does nothing.
- */
- protected void setOptions(Test junitTest) throws ConfigurationException {
- }
-
- /**
* Run test with timeout support.
*/
private void runTest(TestIdentifier testId, final Test junitTest, final TestResult junitResult) {
@@ -210,14 +210,12 @@
deviceTest.setDevice(getDevice().getIDevice());
deviceTest.setTestAppPath(mCtsBuild.getTestCasesDir().getAbsolutePath());
}
+ if (junitTest instanceof IAbiReceiver) {
+ ((IAbiReceiver)junitTest).setAbi(mAbi);
+ }
if (junitTest instanceof IBuildReceiver) {
((IBuildReceiver)junitTest).setBuild(mBuildInfo);
}
- try {
- setOptions(junitTest);
- } catch (ConfigurationException e) {
- Log.e(LOG_TAG, e.toString());
- }
TestRunnable testRunnable = new TestRunnable(junitTest, junitResult);
CommandStatus status = RunUtil.getDefault().runTimed(mTimeoutMs, testRunnable, true);
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/PrintTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/PrintTestRunner.java
index a7a6ccc..44d2d3a 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/PrintTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/PrintTestRunner.java
@@ -18,12 +18,14 @@
import com.android.cts.tradefed.build.CtsBuildHelper;
import com.android.cts.tradefed.targetprep.SettingsToggler;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.testrunner.IRemoteAndroidTestRunner;
import com.android.ddmlib.testrunner.IRemoteAndroidTestRunner.TestSize;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
@@ -65,6 +67,7 @@
private CtsBuildHelper mCtsBuild;
+ private IAbi mAbi;
private String mPackageName;
private String mRunnerName = "android.test.InstrumentationTestRunner";
private String mTestClassName;
@@ -75,6 +78,13 @@
private String mRunName = null;
private Map<String, String> mInstrArgMap = new HashMap<String, String>();
+ /**
+ * @param abi The ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
@Override
public void setBuild(IBuildInfo buildInfo) {
mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
@@ -191,8 +201,9 @@
private void installTestsAndServicesApk() throws DeviceNotAvailableException {
try {
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
String installCode = getDevice().installPackage(mCtsBuild.getTestApp(
- PRINT_TEST_AND_SERVICES_APP_NAME), true);
+ PRINT_TEST_AND_SERVICES_APP_NAME), true, options);
if (installCode != null) {
throw new IllegalArgumentException("Failed to install "
+ PRINT_TEST_AND_SERVICES_APP_NAME + " on " + getDevice().getSerialNumber()
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index 7a9756c..863a7a7 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -235,7 +235,7 @@
mDigest = generateDigest(testCaseDir, mJarPath);
return vmHostTest;
} else if (DEQP_TEST.equals(mTestType)) {
- return new DeqpTest(mUri, mName, mTests);
+ return new DeqpTestRunner(mUri, mName, mTests);
} else if (NATIVE_TEST.equals(mTestType)) {
return new GeeTest(mUri, mName);
} else if (WRAPPED_NATIVE_TEST.equals(mTestType)) {
@@ -261,7 +261,7 @@
// specialized instrumentation. Eventually this special case for signatureTest can be
// removed, and it can be treated just like a normal InstrumentationTest
CLog.d("Creating signature test %s", mName);
- InstrumentationApkTest instrTest = new InstrumentationApkTest();
+ CtsInstrumentationApkTest instrTest = new CtsInstrumentationApkTest();
instrTest.setPackageName(mAppNameSpace);
instrTest.setRunnerName("android.test.InstrumentationTestRunner");
instrTest.setClassName(SIGNATURE_TEST_CLASS);
@@ -285,7 +285,7 @@
return jUnitDeviceTest;
} else {
CLog.d("Creating instrumentation test for %s", mName);
- InstrumentationApkTest instrTest = new InstrumentationApkTest();
+ CtsInstrumentationApkTest instrTest = new CtsInstrumentationApkTest();
if (mTimeoutInMins >= 0) {
// as timeout cannot be set for each test,
// increase the time-out of the whole package
@@ -309,13 +309,13 @@
}
/**
- * Populates given {@link InstrumentationApkTest} with data from the package xml.
+ * Populates given {@link CtsInstrumentationApkTest} with data from the package xml.
*
* @param testCaseDir
* @param instrTest
* @return the populated {@link InstrumentationTest} or <code>null</code>
*/
- private InstrumentationTest setInstrumentationTest(InstrumentationApkTest instrTest,
+ private InstrumentationTest setInstrumentationTest(CtsInstrumentationApkTest instrTest,
File testCaseDir) {
instrTest.setRunName(getUri());
instrTest.setPackageName(mAppNameSpace);
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java
index 9b4c86d..0ebdeea 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java
@@ -16,19 +16,12 @@
package com.android.cts.tradefed.testtype;
import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.tradefed.config.ConfigurationException;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.Option.Importance;
-import com.android.tradefed.config.OptionSetter;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.util.AbiFormatter;
import com.android.tradefed.util.FileUtil;
-import junit.framework.Test;
-
import java.io.File;
import java.io.IOException;
import java.util.zip.ZipFile;
@@ -42,12 +35,6 @@
private static final String VM_TEST_TEMP_DIR = "/data/local/tmp/vm-tests";
private static final String EMULATOR_TEMP_DIR = "/data/local/tmp";
- @Option(name = AbiFormatter.FORCE_ABI_STRING,
- description = AbiFormatter.FORCE_ABI_DESCRIPTION,
- importance = Importance.IF_UNSET)
- private String mForceAbi = null;
-
-
/**
* {@inheritDoc}
*/
@@ -108,14 +95,6 @@
return true;
}
- @Override
- protected void setOptions(Test junitTest) throws ConfigurationException{
- if (mForceAbi != null) {
- OptionSetter optionSetter = new OptionSetter(junitTest);
- optionSetter.setOptionValue(AbiFormatter.FORCE_ABI_STRING, mForceAbi);
- }
- }
-
/**
* Removes temporary file directory from device
*
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/WrappedGTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/WrappedGTest.java
index 78cd6f77..9c19f36 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/WrappedGTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/WrappedGTest.java
@@ -17,18 +17,17 @@
package com.android.cts.tradefed.testtype;
import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
import com.android.ddmlib.testrunner.ITestRunListener;
import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.config.Option;
-import com.android.tradefed.config.Option.Importance;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IRemoteTest;
-import com.android.tradefed.util.AbiFormatter;
import java.io.File;
import java.io.FileNotFoundException;
@@ -38,21 +37,19 @@
*/
public class WrappedGTest implements IBuildReceiver, IDeviceTest, IRemoteTest {
+ private static final String LOG_TAG = WrappedGTest.class.getSimpleName();
+
private int mMaxTestTimeMs = 1 * 60 * 1000;
private CtsBuildHelper mCtsBuild;
private ITestDevice mDevice;
+ private IAbi mAbi;
private final String mAppNameSpace;
private final String mRunner;
private final String mName;
private final String mUri;
- @Option(name = AbiFormatter.FORCE_ABI_STRING,
- description = AbiFormatter.FORCE_ABI_DESCRIPTION,
- importance = Importance.IF_UNSET)
- private String mForceAbi = null;
-
public WrappedGTest(String appNameSpace, String uri, String name, String runner) {
mAppNameSpace = appNameSpace;
mRunner = runner;
@@ -60,6 +57,13 @@
mUri = uri;
}
+ /**
+ * @param abi The ABI to run the test on
+ */
+ public void setAbi(IAbi abi) {
+ mAbi = abi;
+ }
+
@Override
public void setBuild(IBuildInfo buildInfo) {
mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
@@ -88,7 +92,9 @@
private boolean installTest() throws DeviceNotAvailableException {
try {
File testApp = mCtsBuild.getTestApp(String.format("%s.apk", mName));
- String installCode = mDevice.installPackage(testApp, true);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ CLog.d(LOG_TAG, "installPackage options: " + options);
+ String installCode = mDevice.installPackage(testApp, true, options);
if (installCode != null) {
CLog.e("Failed to install %s.apk on %s. Reason: %s", mName,
@@ -107,13 +113,7 @@
WrappedGTestResultParser resultParser = new WrappedGTestResultParser(mUri, listener);
resultParser.setFakePackagePrefix(mUri + ".");
try {
- String options = "";
- if (mForceAbi != null) {
- String abi = AbiFormatter.getDefaultAbi(getDevice(), mForceAbi);
- if (abi != null) {
- options = String.format("--abi %s ", abi);
- }
- }
+ String options = mAbi == null ? "" : String.format("--abi %s ", mAbi);
String command = String.format("am instrument -w %s%s/.%s", options, mAppNameSpace, mRunner);
mDevice.executeShellCommand(command, resultParser, mMaxTestTimeMs, 0);
} catch (DeviceNotAvailableException e) {
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java b/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java
index 9c1e283..186d08e 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/util/CtsHostStore.java
@@ -33,26 +33,27 @@
* Note that key is generated in the form of device_serial#class#method name.
* So there should be no concurrent test for the same (serial, class, method).
* @param deviceSerial
+ * @param abi
* @param classMethodName
* @param result CTS result string
*/
- public static void storeCtsResult(String deviceSerial, String classMethodName, String result) {
- mMap.put(generateTestKey(deviceSerial, classMethodName), result);
+ public static void storeCtsResult(String deviceSerial, String abi, String classMethodName, String result) {
+ mMap.put(generateTestKey(deviceSerial, abi, classMethodName), result);
}
/**
* retrieves a CTS result for the given condition and remove it from the internal
* storage. If there is no result for the given condition, it will return null.
*/
- public static String removeCtsResult(String deviceSerial, String classMethodName) {
- return mMap.remove(generateTestKey(deviceSerial, classMethodName));
+ public static String removeCtsResult(String deviceSerial, String abi, String classMethodName) {
+ return mMap.remove(generateTestKey(deviceSerial, abi, classMethodName));
}
/**
- * return test key in the form of device_serial#class_name#method_name
+ * return test key in the form of device_serial#abi#class_name#method_name
*/
- private static String generateTestKey(String deviceSerial, String classMethodName) {
- return String.format("%s#%s", deviceSerial, classMethodName);
+ private static String generateTestKey(String deviceSerial, String abi, String classMethodName) {
+ return String.format("%s#%s#%s", deviceSerial, abi, classMethodName);
}
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java b/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java
index 125c56e..da0d4bb 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/util/HostReportLog.java
@@ -24,19 +24,22 @@
*/
public class HostReportLog extends ReportLog {
private String mDeviceSerial;
+ private String mAbi;
private String mClassMethodName;
/**
* @param deviceSerial serial number of the device
+ * @param abi abi the test was run on
* @param classMethodName class name and method name of the test in class#method format.
* Note that ReportLog.getClassMethodNames() provide this.
*/
- public HostReportLog(String deviceSerial, String classMethodName) {
+ public HostReportLog(String deviceSerial, String abi, String classMethodName) {
mDeviceSerial = deviceSerial;
+ mAbi = abi;
mClassMethodName = classMethodName;
}
public void deliverReportToHost() {
- CtsHostStore.storeCtsResult(mDeviceSerial, mClassMethodName, generateReport());
+ CtsHostStore.storeCtsResult(mDeviceSerial, mAbi, mClassMethodName, generateReport());
}
}
diff --git a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
index 3630446..0307375 100644
--- a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
+++ b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
@@ -211,19 +211,19 @@
curJunitFileData = getWarningMessage() +
"package " + pName + ";\n" +
"import java.io.IOException;\n" +
+ "import com.android.tradefed.testtype.IAbi;\n" +
+ "import com.android.tradefed.testtype.IAbiReceiver;\n" +
"import com.android.tradefed.testtype.DeviceTestCase;\n" +
- "import com.android.tradefed.config.Option;\n" +
- "import com.android.tradefed.config.Option.Importance;\n" +
"import com.android.tradefed.util.AbiFormatter;\n" +
"\n" +
- "public class " + sourceName + " extends DeviceTestCase {\n";
+ "public class " + sourceName + " extends DeviceTestCase implements IAbiReceiver {\n";
}
private String getShellExecJavaLine(String classpath, String mainclass) {
String cmd = String.format("ANDROID_DATA=%s dalvikvm|#ABI#| -Xmx512M -Xss32K " +
"-Djava.io.tmpdir=%s -classpath %s %s", TARGET_JAR_ROOT_PATH, TARGET_JAR_ROOT_PATH,
classpath, mainclass);
- return "String cmd = AbiFormatter.formatCmdForAbi(\"" + cmd + "\", mForceAbi);\n" +
+ return "String cmd = AbiFormatter.formatCmdForAbi(\"" + cmd + "\", mAbi.getBitness());\n" +
"String res = getDevice().executeShellCommand(cmd);\n" +
"// A sucessful adb shell command returns an empty string.\n" +
"assertEquals(cmd, \"\", res);";
@@ -283,9 +283,12 @@
openCTSHostFileFor(pName, classOnlyName);
- curJunitFileData += "@Option(name = AbiFormatter.FORCE_ABI_STRING,\n" +
- "description = AbiFormatter.FORCE_ABI_DESCRIPTION,\n" +
- "importance = Importance.IF_UNSET)\nprivate String mForceAbi = null;\n\n";
+ curJunitFileData += "\n" +
+ "protected IAbi mAbi;\n" +
+ "@Override\n" +
+ "public void setAbi(IAbi abi) {\n" +
+ " mAbi = abi;\n" +
+ "}\n\n";
List<String> methods = entry.getValue();
Collections.sort(methods, new Comparator<String>() {