summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPresubmit Automerger Backend <android-build-presubmit-automerger-backend@system.gserviceaccount.com>2022-08-31 23:19:59 +0000
committerPresubmit Automerger Backend <android-build-presubmit-automerger-backend@system.gserviceaccount.com>2022-08-31 23:19:59 +0000
commitc79364a1a3cf217e74ab28d55a0f37fa9a297da5 (patch)
tree9c1cc8a7f8a02b8c69a54785d0835fda7768ac37
parent755fed4406b9a3acbbd6d1cea9df2aebd4ad4cdb (diff)
parent7242fbaa6e66273a3d59dd42b08fa13a0e8cb0c3 (diff)
downloadplatform_testing-c79364a1a3cf217e74ab28d55a0f37fa9a297da5.tar.gz
[automerge] TombstoneUtils clean up warnings 2p: 7242fbaa6e
Original change: https://googleplex-android-review.googlesource.com/c/platform/platform_testing/+/19788132 Bug: 230008801 Change-Id: I4916ab64d5882e46d0f95c7cd94c83f607738fad
-rw-r--r--libraries/sts-common-util/host-side/Android.bp25
-rw-r--r--libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneParser.java17
-rw-r--r--libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneUtils.java30
-rw-r--r--libraries/sts-common-util/host-side/tests/src/com/android/sts/common/util/TombstoneUtilsTest.java34
-rw-r--r--libraries/sts-common-util/util/Android.bp8
5 files changed, 60 insertions, 54 deletions
diff --git a/libraries/sts-common-util/host-side/Android.bp b/libraries/sts-common-util/host-side/Android.bp
index 2744cdd44..e89fde3c9 100644
--- a/libraries/sts-common-util/host-side/Android.bp
+++ b/libraries/sts-common-util/host-side/Android.bp
@@ -20,14 +20,15 @@ java_library_host {
name: "sts-host-util",
defaults: ["cts_error_prone_rules"],
- srcs: ["src/**/*.java"],
-
+ srcs: [
+ "src/**/*.java",
+ ],
static_libs: [
"sts-common-util-lib",
- "xz-java",
+ "sts-libtombstone_proto-java",
"truth-prebuilt",
+ "xz-java",
],
-
libs: [
"compatibility-host-util",
"compatibility-tradefed",
@@ -35,3 +36,19 @@ java_library_host {
"tradefed",
],
}
+
+java_library_host {
+ name: "sts-libtombstone_proto-java",
+ visibility: [
+ "//platform_testing/libraries/sts-common-util/host-side",
+ ],
+ srcs: [
+ ":libtombstone_proto-src",
+ ],
+ proto: {
+ type: "lite",
+ },
+ static_libs: [
+ "libprotobuf-java-lite",
+ ],
+}
diff --git a/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneParser.java b/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneParser.java
index 479569254..a5cffc549 100644
--- a/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneParser.java
+++ b/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneParser.java
@@ -45,7 +45,6 @@ public class TombstoneParser {
Pattern.compile("failed to find entry for main thread in tombstone");
private static final Pattern THREAD_SEPARATOR_PATTERN =
Pattern.compile("--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---");
- private static final Pattern OPEN_FILES_PATTERN = Pattern.compile("open files:");
// " fd %d: %s (%s)"
private static final Pattern OPEN_FILE_ROW_PATTERN =
Pattern.compile(
@@ -66,10 +65,6 @@ public class TombstoneParser {
private static final Pattern ABORT_PATTERN =
Pattern.compile(
"^Abort message: '(?<message>.*)'$", Pattern.MULTILINE | Pattern.DOTALL);
- private static final Pattern MULTIPLE_CAUSES_PATTERN =
- Pattern.compile(
- "Note: multiple potential causes for this crash were detected, listing them in"
- + " decreasing order of likelihood.");
private static final Pattern DEALLOC_PATTERN =
Pattern.compile("deallocated by thread (?<tid>\\d+):");
private static final Pattern ALLOC_PATTERN =
@@ -106,10 +101,6 @@ public class TombstoneParser {
"pid: (?<pid>\\d+), tid: (?<tid>\\d+), name: (?<threadname>.+?) >>>"
+ " (?<processname>.+?) <<<");
private static final Pattern THREAD_HEADER_2_PATTERN = Pattern.compile("uid: (?<uid>\\d+)");
- // TODO: finish description
- // private static final Pattern TAGGED_ADDR_CTRL_PATTERN = Pattern.compile("tagged_addr_ctrl:
- // (?<taggedaddrctrl>\\p{XDigit}{16})(?:\\((mask 0x(?<mtemask>\\p{XDigit}{4}))?(?:, )?, unknown
- // 0x(?<unknownvalue>)\\p{XDigit}{8,16}\\))?");
private static final Pattern TAGGED_ADDR_CTRL_PATTERN =
Pattern.compile(
"tagged_addr_ctrl: (?<taggedaddrctrl>\\p{XDigit}{16})(?<description>.+)?");
@@ -154,8 +145,10 @@ public class TombstoneParser {
private static final Pattern CURRENT_BACKTRACE_BLOB_PATTERN =
Pattern.compile(
String.format(
- "^backtrace:\n(?:%s\n)*(?:%s\n)*",
- BACKTRACE_NOTE_PATTERN.pattern(), BACKTRACE_PATTERN.pattern()),
+ "^%s\n(?:%s\n)*(?:%s\n)*",
+ BACKTRACE_HEADER_PATTERN.pattern(),
+ BACKTRACE_NOTE_PATTERN.pattern(),
+ BACKTRACE_PATTERN.pattern()),
Pattern.MULTILINE);
private static final Pattern ALLOC_BACKTRACE_BLOB_PATTERN =
Pattern.compile(
@@ -173,8 +166,6 @@ public class TombstoneParser {
public static final List<Tombstone> parseLogcat(String logcat) {
String[] potentialTombstones = splitPattern(TOMBSTONE_HEADER_PATTERN).split(logcat);
- String filename = "/tmp/tombstone-" + System.currentTimeMillis();
-
List<Tombstone> tombstones = new ArrayList<>();
for (String potentialTombstone : potentialTombstones) {
Tombstone.Builder tombstoneBuilder = Tombstone.newBuilder();
diff --git a/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneUtils.java b/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneUtils.java
index 0932a826e..4864b95c5 100644
--- a/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneUtils.java
+++ b/libraries/sts-common-util/host-side/src/com/android/sts/common/util/TombstoneUtils.java
@@ -43,21 +43,25 @@ public class TombstoneUtils {
assertThat(securityCrashes).isEqualTo(List.of());
}
+ /**
+ * @param tombstones a list of tombstones to check
+ * @param config crash detection configuration object
+ * @return a list of tombstones that are security-related
+ */
public static List<Tombstone> getSecurityCrashes(List<Tombstone> tombstones, Config config) {
return tombstones.stream()
- .filter(tombstone -> filterSecurityCrash(tombstone, config))
+ .filter(tombstone -> isSecurityCrash(tombstone, config))
.collect(Collectors.toList());
}
/**
- * Determines which given inputs have a {@link com.android.compatibility.common.util.Crash} that
- * should fail an sts test
+ * Determines if a tombstone is likely to be security-related against the given configuration.
*
- * @param crashes list of crashes to check
+ * @param tombstone the tombstone to check
* @param config crash detection configuration object
- * @return the list of crashes serious enough to fail an sts test
+ * @return if the tombstone is security-related
*/
- public static boolean filterSecurityCrash(Tombstone tombstone, Config config) {
+ public static boolean isSecurityCrash(Tombstone tombstone, Config config) {
// match process patterns
Optional<String> processFilename = getProcessFilename(tombstone);
@@ -74,8 +78,8 @@ public class TombstoneUtils {
//
// HWASAN abort message example:
// ==13248==ERROR: HWAddressSanitizer: tag-mismatch on address 0x004d84460302...
- String abortMessage = tombstone.getAbortMessage();
- if (abortMessage != null && abortMessage.contains("AddressSanitizer")) {
+ String abortMessage = tombstone.getAbortMessage(); // empty proto field returns ""
+ if (abortMessage.contains("AddressSanitizer")) {
return true;
}
}
@@ -367,15 +371,13 @@ public class TombstoneUtils {
public boolean match(BacktraceFrame frame) {
if (frame == null) return false;
- String filename = frame.getFileName();
- String method = frame.getFunctionName();
+ String filename = frame.getFileName(); // empty proto field returns ""
+ String method = frame.getFunctionName(); // empty proto field returns ""
boolean filenameMatches =
- (filenamePattern == null
- || (filename != null && filenamePattern.matcher(filename).find()));
+ filenamePattern == null || filenamePattern.matcher(filename).find();
boolean methodMatches =
- (methodPattern == null
- || (method != null && methodPattern.matcher(method).find()));
+ methodPattern == null || methodPattern.matcher(method).find();
return filenameMatches && methodMatches;
}
}
diff --git a/libraries/sts-common-util/host-side/tests/src/com/android/sts/common/util/TombstoneUtilsTest.java b/libraries/sts-common-util/host-side/tests/src/com/android/sts/common/util/TombstoneUtilsTest.java
index 31f81220d..3a75b3c53 100644
--- a/libraries/sts-common-util/host-side/tests/src/com/android/sts/common/util/TombstoneUtilsTest.java
+++ b/libraries/sts-common-util/host-side/tests/src/com/android/sts/common/util/TombstoneUtilsTest.java
@@ -32,6 +32,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
@@ -40,6 +41,7 @@ import java.util.regex.Pattern;
public class TombstoneUtilsTest {
private static List<Tombstone> sTombstones;
+ private static final List<Tombstone> EMPTY_TOMBSTONE_LIST = Collections.emptyList();
@BeforeClass
public static void setUp() throws IOException {
@@ -104,7 +106,7 @@ public class TombstoneUtilsTest {
.setProcessPatterns(
Pattern.compile("synthetic_process_0")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -141,7 +143,7 @@ public class TombstoneUtilsTest {
.setProcessPatterns(
Pattern.compile("synthetic_process_1")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -164,7 +166,7 @@ public class TombstoneUtilsTest {
Pattern.compile("synthetic_process_0"),
Pattern.compile("generic")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -184,7 +186,7 @@ public class TombstoneUtilsTest {
Pattern.compile(
"com\\.android\\.bluetooth")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -209,7 +211,7 @@ public class TombstoneUtilsTest {
Pattern.compile(
"com\\.android\\.bluetooth")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
TombstoneUtils.assertNoSecurityCrashes(
crashes,
@@ -248,7 +250,7 @@ public class TombstoneUtilsTest {
Pattern.compile(
"com\\.android\\.bluetooth")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -300,7 +302,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
"libaudioutils", null)))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
assertThat(
TombstoneUtils.getSecurityCrashes(
@@ -314,7 +316,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
"libaudioflinger\\.so", null)))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
TombstoneUtils.assertNoSecurityCrashes(
sTombstones,
@@ -351,7 +353,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
"libstagefright", null)))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -367,7 +369,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
null, "memcpy_to_float")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
assertThat(
TombstoneUtils.getSecurityCrashes(
sTombstones,
@@ -380,7 +382,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
null, "memcpy_[^_]+_float")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
TombstoneUtils.assertNoSecurityCrashes(
sTombstones,
@@ -416,7 +418,7 @@ public class TombstoneUtilsTest {
.setBacktraceExcludes(
new BacktraceFilterPattern(null, "strlen")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -431,7 +433,7 @@ public class TombstoneUtilsTest {
.setBacktraceIncludes(
new BacktraceFilterPattern(null, null)))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
assertThat(
TombstoneUtils.getSecurityCrashes(
sTombstones,
@@ -443,7 +445,7 @@ public class TombstoneUtilsTest {
new BacktraceFilterPattern(
"libaudioutils", "memcpy")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
TombstoneUtils.assertNoSecurityCrashes(
sTombstones,
new TombstoneUtils.Config()
@@ -462,7 +464,7 @@ public class TombstoneUtilsTest {
.setProcessPatterns(
Pattern.compile("com.redacted.mte-fail")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
@Test
@@ -474,6 +476,6 @@ public class TombstoneUtilsTest {
.setProcessPatterns(
Pattern.compile("/data/data/avrc_poc")))
.size())
- .isNotEqualTo(List.of());
+ .isNotEqualTo(EMPTY_TOMBSTONE_LIST);
}
}
diff --git a/libraries/sts-common-util/util/Android.bp b/libraries/sts-common-util/util/Android.bp
index f4d627471..090143eb6 100644
--- a/libraries/sts-common-util/util/Android.bp
+++ b/libraries/sts-common-util/util/Android.bp
@@ -26,9 +26,9 @@ java_library_static {
sdk_version: "current",
srcs: ["src/**/*.java"],
static_libs: [
+ "compatibility-common-util-devicesidelib",
"junit",
"platform-test-annotations",
- "compatibility-common-util-devicesidelib",
],
}
@@ -41,18 +41,12 @@ java_library {
host_supported: true,
srcs: [
"src/**/*.java",
- ":libtombstone_proto-src",
],
- proto: {
- type: "lite",
- },
static_libs: [
"compatibility-common-util-lib",
- "libprotobuf-java-lite",
],
libs: [
"junit",
- "json-prebuilt",
"platform-test-annotations",
],
}