summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Pöyry <jpoyry@google.com>2014-10-01 19:12:41 -0700
committerThe Android Automerger <android-build@google.com>2014-10-02 22:37:54 -0700
commit80f7b798b772d3403565d051ccce20f9c6109030 (patch)
treea2a0412c9d6601ac14b078f958b7501ebeccd874
parent00c4653b02d48a909033b14248c0a72f075d7f1a (diff)
downloadplatform_cts-80f7b798b772d3403565d051ccce20f9c6109030.tar.gz
platform_cts-80f7b798b772d3403565d051ccce20f9c6109030.tar.bz2
platform_cts-80f7b798b772d3403565d051ccce20f9c6109030.zip
Install dEQP OnDevice package explicitly in DeqpTestRunner.
Previously DeqpTestRunner expected test package to have been installed before DeqpTestRunner was called. This change makes DeqpTestRunner to explicitly install the OnDevice package with the test runner's current ABI setting. Change-Id: Ic38bc0c22157ec95de3111d9d0fe214a236eff1e
-rw-r--r--tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java59
1 files changed, 53 insertions, 6 deletions
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
index db1b2dd6bb0..c185cecf0f8 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/DeqpTestRunner.java
@@ -1,8 +1,10 @@
package com.android.cts.tradefed.testtype;
+import com.android.cts.tradefed.build.CtsBuildHelper;
import com.android.cts.util.AbiUtils;
import com.android.ddmlib.MultiLineReceiver;
import com.android.ddmlib.testrunner.TestIdentifier;
+import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
@@ -10,9 +12,12 @@ import com.android.tradefed.result.ByteArrayInputStreamSource;
import com.android.tradefed.result.ITestInvocationListener;
import com.android.tradefed.result.LogDataType;
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 java.io.File;
+import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -25,8 +30,12 @@ import java.util.Map;
*
* Supports running drawElements Quality Program tests found under external/deqp.
*/
-public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
- final private int TESTCASE_BATCH_LIMIT = 1000;
+public class DeqpTestRunner implements IBuildReceiver, IDeviceTest, IRemoteTest {
+
+ private static final String DEQP_ONDEVICE_APK = "com.drawelements.deqp.apk";
+ private static final String DEQP_ONDEVICE_PKG = "com.drawelements.deqp";
+
+ private final int TESTCASE_BATCH_LIMIT = 1000;
private boolean mLogData;
@@ -36,6 +45,7 @@ public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
private final String mName;
private Collection<TestIdentifier> mTests;
private IAbi mAbi;
+ private CtsBuildHelper mCtsBuild;
private TestIdentifier mCurrentTestId;
private boolean mGotTestResult;
@@ -58,6 +68,14 @@ public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
}
/**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setBuild(IBuildInfo buildInfo) {
+ mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+ }
+
+ /**
* Enable or disable raw dEQP test log collection.
*/
public void setCollectLogs(boolean logData) {
@@ -420,6 +438,29 @@ public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
}
/**
+ * Install dEQP OnDevice Package
+ */
+ private void installTestApk() throws DeviceNotAvailableException {
+ try {
+ File apkFile = mCtsBuild.getTestApp(DEQP_ONDEVICE_APK);
+ String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+ String errorCode = getDevice().installPackage(apkFile, true, options);
+ if (errorCode != null) {
+ CLog.e("Failed to install %s. Reason: %s", DEQP_ONDEVICE_APK, errorCode);
+ }
+ } catch (FileNotFoundException e) {
+ CLog.e("Could not find test apk %s", DEQP_ONDEVICE_APK);
+ }
+ }
+
+ /**
+ * Uninstall dEQP OnDevice Package
+ */
+ private void uninstallTestApk() throws DeviceNotAvailableException {
+ getDevice().uninstallPackage(DEQP_ONDEVICE_PKG);
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
@@ -429,6 +470,10 @@ public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
if ((mName.equals( "dEQP-GLES3") && isSupportedGles(mDevice, 3, 0))
|| (mName.equals("dEQP-GLES31") && isSupportedGles(mDevice, 3, 1))) {
+ // Make sure there is no pre-existing package form earlier interrupted test run.
+ uninstallTestApk();
+ installTestApk();
+
while (!mTests.isEmpty()) {
executeTests(listener);
@@ -445,16 +490,18 @@ public class DeqpTestRunner implements IDeviceTest, IRemoteTest {
source.cancel();
}
- if (!mGotTestResult) {
- mListener.testFailed(mCurrentTestId,
- "Log doesn't contain test result");
- }
+ if (!mGotTestResult) {
+ mListener.testFailed(mCurrentTestId,
+ "Log doesn't contain test result");
+ }
mListener.testEnded(mCurrentTestId, emptyMap);
mCurrentTestId = null;
mListener.testRunEnded(0, emptyMap);
}
}
+
+ uninstallTestApk();
} else {
/* Pass all tests if OpenGL ES version is not supported */
Map <String, String> emptyMap = Collections.emptyMap();