Handler, Looper, and MessageQueue are all difficult to test since their
internal implementations implicitly rely on the system clock. By making
their clock replaceable in tests, we can make their behavior more
deterministic, allowing for less flaky tests overall.
Also, update TestLooper to take advantage of the replaceable clock.
Bug: 184781936
Test: atest LooperTest MessageQueueTest HandlerTest
Change-Id: I215d2eab99888a162175c37157d7be2be911b96d
To make PowerManagerServiceTest deterministic,
remove dependency on real time clock by mocking it out.
Use TestLooper, which allows making Handler behaviour deterministic as
well.
Test: atest PowerManagerServiceTest
Bug: 152193749
Change-Id: I4d9cd686ac672261bbb038249c0358e451b58710
a) Add a new stopAutoDispatchAndIgnoreExceptions method
This method ignores exceptions raised when there are no messages
dispatched in the looper. Helps write negative unit tests for methods where
the runnables are not posted when some preconditions are not met.
Not starting the looper in these tests would make it
unclear whether the test failed because the looper was not running or
because the preconditions (like permission checks) where not satisfied.
b) Auto dispatch will only stop running when stopAutoDispatch is
invoked. Previously it stops running when it runs a single message. This
causes failures in unit tests for methods which posts multiple runnables
in the same method.
Bug: 138403307
Bug: 117601161
Test: atest com.android.server.wifi
Change-Id: Iab27d92d443c6d7364c52b86d51dd2cb7902358a
Add a method to obtain an Executor from a TestLooper: the executor
executes on a new Handler on the test looper.
Bug: 73088768
Test: new unit test for executor
Change-Id: Ib0aa10011116a4d998f8d3a7434939338d9b516d
This permits sharing of test components used in connectivity tests.
Rename the MockLooper to TestLooper, reflecting that it is not a
true mock, but a manually controlled Looper for use in tests.
Bug: 28848133
Test: Tests consuming this library pass.
Change-Id: I57e11f9544c7bffdb02739ab2a921512b1b11874