Intercept and complete messaging for debugging failure
Test: presubmit
Bug: 269759227
Change-Id: I7e0e654873248eb8801e15a2ccfd24630e95b44f
diff --git a/common_util/com/android/tradefed/result/error/TestErrorIdentifier.java b/common_util/com/android/tradefed/result/error/TestErrorIdentifier.java
index e293cac..6dbeebb 100644
--- a/common_util/com/android/tradefed/result/error/TestErrorIdentifier.java
+++ b/common_util/com/android/tradefed/result/error/TestErrorIdentifier.java
@@ -33,7 +33,8 @@
UNEXPECTED_MOBLY_CONFIG(530_010, FailureStatus.CUSTOMER_ISSUE),
UNEXPECTED_MOBLY_BEHAVIOR(530_011, FailureStatus.CUSTOMER_ISSUE),
HOST_COMMAND_FAILED(530_012, FailureStatus.CUSTOMER_ISSUE),
- TEST_PHASE_TIMED_OUT(530_013, FailureStatus.TIMED_OUT);
+ TEST_PHASE_TIMED_OUT(530_013, FailureStatus.TIMED_OUT),
+ TEST_FILTER_NEEDS_UPDATE(530_014, FailureStatus.SYSTEM_UNDER_TEST_CRASHED);
private final long code;
private final @Nonnull FailureStatus status;
diff --git a/src/com/android/tradefed/result/LogcatCrashResultForwarder.java b/src/com/android/tradefed/result/LogcatCrashResultForwarder.java
index 92d76f9..8c7fbcf 100644
--- a/src/com/android/tradefed/result/LogcatCrashResultForwarder.java
+++ b/src/com/android/tradefed/result/LogcatCrashResultForwarder.java
@@ -60,6 +60,9 @@
private static final int MAX_CRASH_SIZE = 250000;
private static final String MAX_CRASH_SIZE_MESSAGE = "\n<Truncated>";
+ // Message from crash collector that reflect an issue
+ private static final String FILTER_NOT_FOUND =
+ "java.lang.IllegalArgumentException: testfile not found:";
private Long mStartTime = null;
private Long mLastStartTime = null;
@@ -133,10 +136,19 @@
} else {
errorMessage = extractCrashAndAddToMessage(errorMessage, mLastStartTime);
}
- error.setErrorMessage(errorMessage.trim());
+
if (isCrash(errorMessage)) {
error.setErrorIdentifier(DeviceErrorIdentifier.INSTRUMENTATION_CRASH);
+ // Special failure due to permission issue.
+ if (errorMessage.contains(FILTER_NOT_FOUND)) {
+ CLog.d("Detected a permission error with filters.");
+ // First stop retrying, it won't work
+ error.setRetriable(false);
+ error.setErrorIdentifier(TestErrorIdentifier.TEST_FILTER_NEEDS_UPDATE);
+ errorMessage = "See go/iae-testfile-not-found \n" + errorMessage;
+ }
}
+ error.setErrorMessage(errorMessage.trim());
// Add metrics for assessing uncaught IntrumentationTest crash failures.
InvocationMetricLogger.addInvocationMetrics(InvocationMetricKey.CRASH_FAILURES, 1);
if (error.getFailureStatus() == null) {