Add location information to ProtoLog message if available
Bug: 356347453
Test: atset FlickerLibTest
Change-Id: If833737eb297f349b1d7de1735954d7c390e0919
diff --git a/libraries/flicker/utils/src/android/tools/traces/parsers/perfetto/ProtoLogTraceParser.kt b/libraries/flicker/utils/src/android/tools/traces/parsers/perfetto/ProtoLogTraceParser.kt
index af5a468..12cad84 100644
--- a/libraries/flicker/utils/src/android/tools/traces/parsers/perfetto/ProtoLogTraceParser.kt
+++ b/libraries/flicker/utils/src/android/tools/traces/parsers/perfetto/ProtoLogTraceParser.kt
@@ -43,15 +43,28 @@
input.query(getSqlQueryProtoLogMessages()) { rows ->
this.addAll(
rows.map {
+ val entryDebugString =
+ it.entries.joinToString { entry -> "${entry.key}: ${entry.value}" }
+ requireNotNull(it["ts"]) {
+ "Timestamp was null. Entry: $entryDebugString"
+ }
+ requireNotNull(it["level"]) {
+ "Level was null. Entry: $entryDebugString"
+ }
+ requireNotNull(it["tag"]) { "Tag was null. Entry: $entryDebugString" }
+ requireNotNull(it["message"]) {
+ "Message was null. Entry: $entryDebugString"
+ }
+
ProtoLogMessage(
it["ts"] as Long,
LogLevel.entries.firstOrNull { entry ->
it["level"] == entry.toString()
- }
- ?: error("Failed to convert ${it["level"]} to LogLevel enum"),
+ } ?: error("Failed to convert ${it["level"]} to LogLevel enum"),
it["tag"] as String,
it["message"] as String,
it["stacktrace"]?.let { it as String },
+ it["location"]?.let { it as String },
)
}
)
diff --git a/libraries/flicker/utils/src/android/tools/traces/protolog/ProtoLogMessage.kt b/libraries/flicker/utils/src/android/tools/traces/protolog/ProtoLogMessage.kt
index 889a79f..dc7c405 100644
--- a/libraries/flicker/utils/src/android/tools/traces/protolog/ProtoLogMessage.kt
+++ b/libraries/flicker/utils/src/android/tools/traces/protolog/ProtoLogMessage.kt
@@ -26,6 +26,7 @@
val tag: String,
val message: String,
val stacktrace: String?,
+ val location: String?,
) : TraceEntry {
override val timestamp = Timestamps.from(elapsedNanos = elapsedTimestamp)
}