Make PointerEventDispatcherTest faster
Before this CL, the test waited 10 seconds (on hwasan builds) to assert
that there aren't any events.
Make this check faster by adding a separate assertion that events didn't
occur.
Bug: 290931418
Test: atest PointerEventDispatcherTest --rerun-until-failure 1000
Change-Id: Id4582ab0a2b58787a453e06250b82ecf2b1720f0
diff --git a/tests/Input/src/com/android/test/input/InputEventSenderAndReceiverTest.kt b/tests/Input/src/com/android/test/input/InputEventSenderAndReceiverTest.kt
index 37b67f4..075cf0c 100644
--- a/tests/Input/src/com/android/test/input/InputEventSenderAndReceiverTest.kt
+++ b/tests/Input/src/com/android/test/input/InputEventSenderAndReceiverTest.kt
@@ -113,13 +113,11 @@
val sent = SpyInputEventSender.Timeline(
inputEventId = 1, gpuCompletedTime = 3, presentTime = 2)
mReceiver.reportTimeline(sent.inputEventId, sent.gpuCompletedTime, sent.presentTime)
- val received = mSender.getTimeline()
- assertEquals(null, received)
+ mSender.assertNoEvents()
// Sender will no longer receive callbacks for this fd, even if receiver sends a valid
// timeline later
mReceiver.reportTimeline(2 /*inputEventId*/, 3 /*gpuCompletedTime*/, 4 /*presentTime*/)
- val receivedSecondTimeline = mSender.getTimeline()
- assertEquals(null, receivedSecondTimeline)
+ mSender.assertNoEvents()
}
/**
diff --git a/tests/Input/src/com/android/test/input/PointerEventDispatcherTest.kt b/tests/Input/src/com/android/test/input/PointerEventDispatcherTest.kt
index 1099878..f311bc2 100644
--- a/tests/Input/src/com/android/test/input/PointerEventDispatcherTest.kt
+++ b/tests/Input/src/com/android/test/input/PointerEventDispatcherTest.kt
@@ -25,7 +25,6 @@
import com.android.server.UiThread
import com.android.server.wm.PointerEventDispatcher
import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNull
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -86,8 +85,7 @@
// Since the listener raises an exception during the event handling, the event should be
// marked as 'not handled'.
assertEquals(SpyInputEventSender.FinishedSignal(seq, handled = false), finishedSignal)
- // Ensure that there aren't double finish calls. This would crash if there's a call
- // to finish twice.
- assertNull(mSender.getFinishedSignal())
+ // Ensure that there aren't double finish calls.
+ mSender.assertNoEvents()
}
}
diff --git a/tests/Input/src/com/android/test/input/SpyInputEventSenderAndReceiver.kt b/tests/Input/src/com/android/test/input/SpyInputEventSenderAndReceiver.kt
index 2d9af9a..5cbfce5 100644
--- a/tests/Input/src/com/android/test/input/SpyInputEventSenderAndReceiver.kt
+++ b/tests/Input/src/com/android/test/input/SpyInputEventSenderAndReceiver.kt
@@ -27,10 +27,17 @@
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.TimeUnit
+import org.junit.Assert.assertNull
+
private fun <T> getEvent(queue: LinkedBlockingQueue<T>): T? {
return queue.poll(DEFAULT_DISPATCHING_TIMEOUT_MILLIS.toLong(), TimeUnit.MILLISECONDS)
}
+private fun <T> assertNoEvents(queue: LinkedBlockingQueue<T>) {
+ // Poll the queue with a shorter timeout, to make the check faster.
+ assertNull(queue.poll(100L, TimeUnit.MILLISECONDS))
+}
+
class SpyInputEventReceiver(channel: InputChannel, looper: Looper) :
InputEventReceiver(channel, looper) {
private val mInputEvents = LinkedBlockingQueue<InputEvent>()
@@ -72,4 +79,9 @@
fun getTimeline(): Timeline? {
return getEvent(mTimelines)
}
+
+ fun assertNoEvents() {
+ assertNoEvents(mFinishedSignals)
+ assertNoEvents(mTimelines)
+ }
}