Ensure we don't go into the auto-retry if the runner doesn't support it
For subprocess invocation, it's possible that the subprocess
runner create attempts, so we don't want the parent to
override those.
Test: unit tests
Bug: 155180527
Change-Id: I933a758118b122a9b63b4c2f0f3f69106b2fd5fc
diff --git a/src/com/android/tradefed/invoker/InvocationExecution.java b/src/com/android/tradefed/invoker/InvocationExecution.java
index 395fe6e..bd35c72 100644
--- a/src/com/android/tradefed/invoker/InvocationExecution.java
+++ b/src/com/android/tradefed/invoker/InvocationExecution.java
@@ -63,6 +63,8 @@
import com.android.tradefed.testtype.IDeviceTest;
import com.android.tradefed.testtype.IInvocationContextReceiver;
import com.android.tradefed.testtype.IRemoteTest;
+import com.android.tradefed.testtype.ITestFilterReceiver;
+import com.android.tradefed.testtype.retry.IAutoRetriableTest;
import com.android.tradefed.testtype.suite.ITestSuite;
import com.android.tradefed.testtype.suite.ModuleListener;
import com.android.tradefed.util.CommandResult;
@@ -585,12 +587,15 @@
|| RetryStrategy.NO_RETRY.equals(decision.getRetryStrategy())
|| test instanceof ITestSuite
// TODO: Handle auto-retry in local-sharding for non-suite
- || test instanceof TestsPoolPoller) {
+ || test instanceof TestsPoolPoller
+ // If test doesn't support auto-retry
+ || (!(test instanceof ITestFilterReceiver)
+ && !(test instanceof IAutoRetriableTest))) {
runTest(config, info, listener, test);
remainingTests.remove(test);
continue;
}
-
+ CLog.d("Using RetryLogSaverResultForwarder to forward results.");
ModuleListener mainGranularRunListener = new ModuleListener(null);
RetryLogSaverResultForwarder runListener =
initializeListeners(config, listener, mainGranularRunListener);