Add assertNoCallbackThat

assertNoCallback() fails when any callbacks are received.
In some cases, the test is expected to not to receive certain
callback, like available or lost. Depending on the network
environment, network may trigger linkproperties change. It will
fail the test, but these callback does not go against the
intention of the test. It should not fail the test. Thus, add
this method to allow tests to verify no certain callback received.

Bug: 192239030
Test: atest TestableNetworkCallbackTest
Change-Id: I7db720becb23636f85a9ac21192f8185eceb22fe
This commit is contained in:
Chiachang Wang 2021-07-14 13:19:58 +08:00
commit cdf45529ad

View file

@ -116,6 +116,7 @@ open class RecorderCallback private constructor(
val mark get() = history.mark
override fun onAvailable(network: Network) {
Log.d(TAG, "onAvailable $network")
history.add(Available(network))
}
@ -199,6 +200,15 @@ open class TestableNetworkCallback private constructor(
if (null != cb) fail("Expected no callback but got $cb")
}
fun assertNoCallbackThat(
timeoutMs: Long = defaultTimeoutMs,
valid: (CallbackEntry) -> Boolean
) {
val cb = history.poll(timeoutMs) { valid(it) }.let {
if (null != it) fail("Expected no callback but got $it")
}
}
// Expects a callback of the specified type on the specified network within the timeout.
// If no callback arrives, or a different callback arrives, fail. Returns the callback.
inline fun <reified T : CallbackEntry> expectCallback(