Merge "Bypass car tests for non-auto devices"
diff --git a/src/com/android/tradefed/testtype/suite/retry/RetryRescheduler.java b/src/com/android/tradefed/testtype/suite/retry/RetryRescheduler.java
index 24d6c07..bec86e0 100644
--- a/src/com/android/tradefed/testtype/suite/retry/RetryRescheduler.java
+++ b/src/com/android/tradefed/testtype/suite/retry/RetryRescheduler.java
@@ -26,6 +26,7 @@
import com.android.tradefed.config.Option;
import com.android.tradefed.config.Option.Importance;
import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.IDeviceSelection;
import com.android.tradefed.invoker.IRescheduler;
import com.android.tradefed.invoker.TestInformation;
import com.android.tradefed.log.FileLogger;
@@ -58,9 +59,6 @@
/**
* A special runner that allows to reschedule a previous run tests that failed or where not
* executed.
- *
- * <p>TODO: Ensure a configuration should not have several of that runner. Consider having this
- * configuration built-in TF.
*/
public final class RetryRescheduler implements IRemoteTest, IConfigurationReceiver {
@@ -153,9 +151,10 @@
originalConfig
.getCommandOptions()
.setShardIndex(mConfiguration.getCommandOptions().getShardIndex());
- // TODO: Use serial from parent config
- List<String> serials = mConfiguration.getDeviceRequirements().getSerials();
- originalConfig.getDeviceRequirements().setSerial(serials.toArray(new String[0]));
+ IDeviceSelection requirements = mConfiguration.getDeviceRequirements();
+ // It should be safe to use the current requirements against the old config because
+ // There will be more checks like fingerprint if it was supposed to run.
+ originalConfig.setDeviceRequirements(requirements);
// Transfer log level from retry to subconfig
ILeveledLogOutput originalLogger = originalConfig.getLogOutput();
diff --git a/src/com/android/tradefed/util/SubprocessTestResultsParser.java b/src/com/android/tradefed/util/SubprocessTestResultsParser.java
index bc9d88f..56f6452 100644
--- a/src/com/android/tradefed/util/SubprocessTestResultsParser.java
+++ b/src/com/android/tradefed/util/SubprocessTestResultsParser.java
@@ -18,8 +18,8 @@
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.invoker.IInvocationContext;
import com.android.tradefed.invoker.logger.InvocationMetricLogger;
-import com.android.tradefed.invoker.logger.TfObjectTracker;
import com.android.tradefed.invoker.logger.InvocationMetricLogger.InvocationMetricKey;
+import com.android.tradefed.invoker.logger.TfObjectTracker;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.FileInputStreamSource;
import com.android.tradefed.result.ILogSaverListener;
@@ -86,6 +86,8 @@
private EventReceiverThread mEventReceiver = null;
private IInvocationContext mContext = null;
private Long mStartTime = null;
+ // Ignore the testLog events, rely only on logAssociation
+ private boolean mIgnoreTestLog = true;
// Keep track of which files we received TEST_LOG event from.
private Set<String> mTestLogged = new HashSet<>();
@@ -228,6 +230,11 @@
return -1;
}
+ /** Whether or not to ignore testLog events and only rely on logAssociation. */
+ public void setIgnoreTestLog(boolean ignoreTestLog) {
+ mIgnoreTestLog = ignoreTestLog;
+ }
+
@Override
public void close() throws IOException {
if (mEventReceiver != null) {
@@ -497,6 +504,9 @@
private class TestLogEventHandler implements EventHandler {
@Override
public void handleEvent(String eventJson) throws JSONException {
+ if (mIgnoreTestLog) {
+ return;
+ }
TestLogEventInfo logInfo = new TestLogEventInfo(new JSONObject(eventJson));
String name = String.format("subprocess-%s", logInfo.mDataName);
try (InputStreamSource data = new FileInputStreamSource(logInfo.mDataFile, true)) {
diff --git a/tests/src/com/android/tradefed/result/SubprocessResultsReporterTest.java b/tests/src/com/android/tradefed/result/SubprocessResultsReporterTest.java
index 1c2ea0d..61f2726 100644
--- a/tests/src/com/android/tradefed/result/SubprocessResultsReporterTest.java
+++ b/tests/src/com/android/tradefed/result/SubprocessResultsReporterTest.java
@@ -151,6 +151,7 @@
};
try (SubprocessTestResultsParser receiver =
new SubprocessTestResultsParser(mMockListener, true, new InvocationContext())) {
+ receiver.setIgnoreTestLog(false);
OptionSetter setter = new OptionSetter(mReporter);
setter.setOptionValue(
"subprocess-report-port", Integer.toString(receiver.getSocketServerPort()));
diff --git a/tests/src/com/android/tradefed/testtype/suite/retry/RetryReschedulerTest.java b/tests/src/com/android/tradefed/testtype/suite/retry/RetryReschedulerTest.java
index 245b2ed..cfe9b3e 100644
--- a/tests/src/com/android/tradefed/testtype/suite/retry/RetryReschedulerTest.java
+++ b/tests/src/com/android/tradefed/testtype/suite/retry/RetryReschedulerTest.java
@@ -79,6 +79,8 @@
.andStubReturn(mMockCommandOptions);
EasyMock.expect(mRescheduledConfiguration.getDeviceRequirements())
.andStubReturn(mMockRequirements);
+ mRescheduledConfiguration.setDeviceRequirements(EasyMock.anyObject());
+ EasyMock.expectLastCall();
EasyMock.expect(mRescheduledConfiguration.getLogOutput()).andStubReturn(new FileLogger());
mMockLoader = EasyMock.createMock(ITestSuiteResultLoader.class);
mMockRescheduler = EasyMock.createMock(IRescheduler.class);
@@ -111,7 +113,6 @@
EasyMock.expect(mMockFactory.createConfigurationFromArgs(EasyMock.anyObject()))
.andReturn(mRescheduledConfiguration);
EasyMock.expect(mMockLoader.loadPreviousResults()).andReturn(mFakeRecord);
- mMockRequirements.setSerial();
mRescheduledConfiguration.setTests(EasyMock.anyObject());
EasyMock.expectLastCall().times(1);
@@ -156,7 +157,6 @@
EasyMock.reset(mMockCommandOptions);
mMockCommandOptions.setShardCount(2);
mMockCommandOptions.setShardIndex(null);
- mMockRequirements.setSerial("serial1", "serial2");
mRescheduledConfiguration.setTests(EasyMock.anyObject());
EasyMock.expectLastCall().times(1);
diff --git a/tests/src/com/android/tradefed/util/SubprocessTestResultsParserTest.java b/tests/src/com/android/tradefed/util/SubprocessTestResultsParserTest.java
index fc08f9a..6353ab8 100644
--- a/tests/src/com/android/tradefed/util/SubprocessTestResultsParserTest.java
+++ b/tests/src/com/android/tradefed/util/SubprocessTestResultsParserTest.java
@@ -553,6 +553,7 @@
serializedLogFile = SerializationUtil.serialize(logFile);
resultParser =
new SubprocessTestResultsParser(mockRunListener, new InvocationContext());
+ resultParser.setIgnoreTestLog(false);
String logAssocation =
String.format(
"TEST_LOG {\"dataType\":\"TEXT\",\"dataName\":\"dataname\","