Add better error logging for tagged scenario extractor
Bug: 281084744
Test: atest FlickerLibTests
Change-Id: I90dc79805131deecfb1490f6ba0c45e171fccd5b
diff --git a/libraries/flicker/src/android/tools/common/flicker/extractors/TaggedScenarioExtractor.kt b/libraries/flicker/src/android/tools/common/flicker/extractors/TaggedScenarioExtractor.kt
index f06ca9a..0c0cc24 100644
--- a/libraries/flicker/src/android/tools/common/flicker/extractors/TaggedScenarioExtractor.kt
+++ b/libraries/flicker/src/android/tools/common/flicker/extractors/TaggedScenarioExtractor.kt
@@ -62,22 +62,22 @@
estimateScenarioStartTimestamp(cujEntry, associatedTransition, reader)
val endTimestamp = estimateScenarioEndTimestamp(cujEntry, associatedTransition, reader)
+ val displayAtStart =
+ layersTrace.getEntryAt(startTimestamp).displays.firstOrNull {
+ !it.isVirtual && it.layerStackSpace.isNotEmpty
+ }
+ ?: error("Failed to get a display for start of transition")
+
+ val displayAtEnd =
+ layersTrace.getEntryAt(endTimestamp).displays.firstOrNull {
+ !it.isVirtual && it.layerStackSpace.isNotEmpty
+ }
+ ?: error("Failed to get a display for end of transition")
+
ScenarioInstance(
type,
- startRotation =
- layersTrace
- .getEntryAt(startTimestamp)
- .displays
- .first { !it.isVirtual && it.layerStackSpace.isNotEmpty }
- .transform
- .getRotation(),
- endRotation =
- layersTrace
- .getEntryAt(endTimestamp)
- .displays
- .first { !it.isVirtual && it.layerStackSpace.isNotEmpty }
- .transform
- .getRotation(),
+ startRotation = displayAtStart.transform.getRotation(),
+ endRotation = displayAtEnd.transform.getRotation(),
startTimestamp = startTimestamp,
endTimestamp = endTimestamp,
associatedCuj = cujEntry.cuj,
@@ -213,13 +213,12 @@
if (wmEntryAtTransitionFinished != null) {
wmEntryAtTransitionFinished.timestamp.unixNanos
} else {
- require(wmTrace.entries.isNotEmpty())
+ require(wmTrace.entries.isNotEmpty()) { "WM trace should not be empty!" }
val closestWmEntry =
- wmTrace.entries
- .sortedBy {
- abs(it.timestamp.elapsedNanos - transition.finishTime.elapsedNanos)
- }
- .first()
+ wmTrace.entries.minByOrNull {
+ abs(it.timestamp.elapsedNanos - transition.finishTime.elapsedNanos)
+ }
+ ?: error("WM entry was unexpectedly empty!")
val offset =
closestWmEntry.timestamp.unixNanos - closestWmEntry.timestamp.elapsedNanos
transition.finishTime.elapsedNanos + offset