Fix Parameterized Bitstream runners
Ensure they use the new interface with TestInformation.
Test: ./cts-tradefed run cts -m CtsMediaBitstreamsTestCases --skip-preconditions --log-level-display verbose --skip-device-info -a armeabi-v7a
Bug: 149916350
Change-Id: I9f1562573a5ef495c725f2fd0382440c683f9de4
diff --git a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4ClassRunnerWithParameters.java b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4ClassRunnerWithParameters.java
index f8e5576..944e258 100644
--- a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4ClassRunnerWithParameters.java
+++ b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4ClassRunnerWithParameters.java
@@ -18,12 +18,15 @@
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.config.Option;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.testtype.HostTest;
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.ISetOptionReceiver;
+import com.android.tradefed.testtype.ITestInformationReceiver;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -41,7 +44,7 @@
* Custom JUnit4 parameterized test runner that also accommodate {@link IDeviceTest}.
*/
public class DeviceJUnit4ClassRunnerWithParameters extends BlockJUnit4ClassRunnerWithParameters
- implements IDeviceTest, IBuildReceiver, IAbiReceiver, ISetOptionReceiver {
+ implements IDeviceTest, IBuildReceiver, IAbiReceiver, ISetOptionReceiver, ITestInformationReceiver {
@Option(
name = HostTest.SET_OPTION_NAME,
@@ -49,6 +52,7 @@
)
private Set<String> mKeyValueOptions = new HashSet<>();
+ private TestInformation mTestInformation;
private ITestDevice mDevice;
private IBuildInfo mBuildInfo;
private IAbi mAbi;
@@ -78,6 +82,15 @@
return mDevice;
}
+ @Override
+ public void setTestInformation(TestInformation testInformation) {
+ mTestInformation = testInformation;
+ }
+
+ @Override
+ public TestInformation getTestInformation() {
+ return mTestInformation;
+ }
@Override
public Description getDescription() {
@@ -122,6 +135,9 @@
if (testObj instanceof IAbiReceiver) {
((IAbiReceiver) testObj).setAbi(mAbi);
}
+ if (testObj instanceof ITestInformationReceiver) {
+ ((ITestInformationReceiver) testObj).setTestInformation(mTestInformation);
+ }
HostTest.setOptionToLoadedObject(testObj, new ArrayList<String>(mKeyValueOptions));
return testObj;
}
diff --git a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4Parameterized.java b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4Parameterized.java
index e28d81d..ea7ce7f 100644
--- a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4Parameterized.java
+++ b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/DeviceJUnit4Parameterized.java
@@ -20,6 +20,7 @@
import com.android.tradefed.config.Option;
import com.android.tradefed.config.OptionSetter;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.HostTest;
import com.android.tradefed.testtype.IAbi;
@@ -27,20 +28,21 @@
import com.android.tradefed.testtype.IBuildReceiver;
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.ISetOptionReceiver;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.junit.runner.Description;
+import com.android.tradefed.testtype.ITestInformationReceiver;
+
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.Parameterized;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
/**
* Custom JUnit4 parameterized test runner that also accommodate {@link IDeviceTest}.
*/
public class DeviceJUnit4Parameterized extends Parameterized
- implements IDeviceTest, IBuildReceiver, IAbiReceiver, ISetOptionReceiver {
+ implements IDeviceTest, IBuildReceiver, IAbiReceiver, ISetOptionReceiver, ITestInformationReceiver {
@Option(
name = HostTest.SET_OPTION_NAME,
@@ -49,6 +51,7 @@
private Set<String> mKeyValueOptions = new HashSet<>();
private ITestDevice mDevice;
+ private TestInformation mTestInformation;
private List<Runner> mRunners;
public DeviceJUnit4Parameterized(Class<?> klass) throws Throwable {
@@ -89,13 +92,27 @@
return mDevice;
}
-
@Override
protected List<Runner> getChildren() {
return mRunners;
}
@Override
+ public void setTestInformation(TestInformation testInformation) {
+ mTestInformation = testInformation;
+ for (Runner runner : mRunners) {
+ if (runner instanceof ITestInformationReceiver) {
+ ((ITestInformationReceiver) runner).setTestInformation(mTestInformation);
+ }
+ }
+ }
+
+ @Override
+ public TestInformation getTestInformation() {
+ return mTestInformation;
+ }
+
+ @Override
protected void runChild(Runner runner, RunNotifier notifier) {
try {
OptionSetter setter = new OptionSetter(runner);
diff --git a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
index 24a96a7..69a7d9c 100644
--- a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
+++ b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
@@ -25,12 +25,22 @@
import com.android.tradefed.config.OptionClass;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.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.ITestInformationReceiver;
import com.android.tradefed.util.FileUtil;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
@@ -53,18 +63,12 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlPullParserFactory;
/**
* Test that verifies video bitstreams decode pixel perfectly
*/
@OptionClass(alias="media-bitstreams-test")
-public abstract class MediaBitstreamsTest implements IDeviceTest, IBuildReceiver, IAbiReceiver {
+public abstract class MediaBitstreamsTest implements IDeviceTest, IBuildReceiver, IAbiReceiver, ITestInformationReceiver {
@Option(name = MediaBitstreams.OPT_HOST_BITSTREAMS_PATH,
description = "Absolute path of Ittiam bitstreams (host)",
@@ -132,6 +136,7 @@
private IAbi mAbi;
private ITestDevice mDevice;
+ private TestInformation mTestInfo;
static File getDefaultBitstreamsDir() {
File mediaDir = MediaPreparer.getDefaultMediaDir();
@@ -239,6 +244,16 @@
return mDevice;
}
+ @Override
+ public void setTestInformation(TestInformation testInformation) {
+ mTestInfo = testInformation;
+ }
+
+ @Override
+ public TestInformation getTestInformation() {
+ return mTestInfo;
+ }
+
/*
* Returns true if all necessary media files exist on the device, and false otherwise.
*
@@ -453,6 +468,7 @@
public void testGetBitstreamsFormats() throws DeviceNotAvailableException, IOException {
ReportProcessor processor = new ProcessBitstreamsFormats();
processor.processDeviceReport(
+ getTestInformation(),
getDevice(),
getCurrentMethod(),
MediaBitstreams.KEY_BITSTREAMS_FORMATS_XML);
@@ -497,6 +513,7 @@
SupportedBitstreamsProcessor preparer;
preparer = new SupportedBitstreamsProcessor(prefix, mDebugTargetDevice);
preparer.processDeviceReport(
+ getTestInformation(),
device,
MediaBitstreams.K_TEST_GET_SUPPORTED_BITSTREAMS,
MediaBitstreams.KEY_SUPPORTED_BITSTREAMS_TXT);
@@ -547,6 +564,7 @@
ReportProcessor processor;
processor = new ProcessBitstreamsValidation(toPush, curMethod);
processor.processDeviceReport(
+ getTestInformation(),
device,
curMethod,
MediaBitstreams.KEY_BITSTREAMS_VALIDATION_TXT);
diff --git a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/ReportProcessor.java b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/ReportProcessor.java
index b334b0b..c924cbc 100644
--- a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/ReportProcessor.java
+++ b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/ReportProcessor.java
@@ -19,6 +19,7 @@
import com.android.tradefed.config.Configuration;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
import com.android.tradefed.result.ITestInvocationListener;
@@ -139,6 +140,7 @@
}
private boolean runDeviceTest(
+ TestInformation testInfo,
ITestDevice device, String method, String reportKey, int testTimeout,
long shellTimeout)
throws DeviceNotAvailableException {
@@ -160,7 +162,7 @@
// AndroidJUnitTest requires a IConfiguration to work properly, add a stub to this
// implementation to avoid an NPE.
instrTest.setConfiguration(new Configuration("stub", "stub"));
- instrTest.run(new MediaBitstreamsListener());
+ instrTest.run(testInfo, new MediaBitstreamsListener());
return checkFile(reportKey);
@@ -178,12 +180,12 @@
return true;
}
- void processDeviceReport(
+ void processDeviceReport(TestInformation testInfo,
ITestDevice device, String method, String reportKey)
throws DeviceNotAvailableException, IOException {
try {
setUp(device);
- while (!runDeviceTest(device, method, reportKey, 0, 0)) {
+ while (!runDeviceTest(testInfo, device, method, reportKey, 0, 0)) {
if (!recover(device, mMetrics.get(reportKey))) {
return;
}