Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5468a014 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

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
parent 5a726914
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -113,13 +113,11 @@ class InputEventSenderAndReceiverTest {
        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()
    }

    /**
+2 −4
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.view.WindowManagerPolicyConstants.PointerEventListener
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 @@ class PointerEventDispatcherTest {
        // 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()
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -27,10 +27,17 @@ import android.view.MotionEvent
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 @@ class SpyInputEventSender(channel: InputChannel, looper: Looper) :
    fun getTimeline(): Timeline? {
        return getEvent(mTimelines)
    }

    fun assertNoEvents() {
        assertNoEvents(mFinishedSignals)
        assertNoEvents(mTimelines)
    }
}