Use waitForIdle() to wait for Threaded processing.
Unit testing for ConnectivityDiagnostics API in ConnectivityServiceTest is updated to use HandlerUtilsKt#waitForIdle. In the general case, this takes the same time to run as verify-with-timeout (used previously). However, test failures due to messages not being enqueued on the handler (backed by the ConnectivityService Thread) won't incur the timeout delay, as the thread will be idle sooner. This shortens the delay in the event of a programming error. Bug: 143187964 Test: atest FrameworksNetTests Change-Id: Iae66309501bb83449ca735dfa5e972a9852cbcd0
This commit is contained in:
@@ -6446,14 +6446,16 @@ public class ConnectivityServiceTest {
|
||||
public void testRegisterUnregisterConnectivityDiagnosticsCallback() throws Exception {
|
||||
final NetworkRequest wifiRequest =
|
||||
new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI).build();
|
||||
|
||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||
|
||||
mService.registerConnectivityDiagnosticsCallback(
|
||||
mConnectivityDiagnosticsCallback, wifiRequest, mContext.getPackageName());
|
||||
|
||||
verify(mIBinder, timeout(TIMEOUT_MS))
|
||||
.linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
verify(mIBinder).linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
|
||||
verify(mConnectivityDiagnosticsCallback).asBinder();
|
||||
assertTrue(
|
||||
mService.mConnectivityDiagnosticsCallbacks.containsKey(
|
||||
mConnectivityDiagnosticsCallback));
|
||||
@@ -6476,8 +6478,10 @@ public class ConnectivityServiceTest {
|
||||
mService.registerConnectivityDiagnosticsCallback(
|
||||
mConnectivityDiagnosticsCallback, wifiRequest, mContext.getPackageName());
|
||||
|
||||
verify(mIBinder, timeout(TIMEOUT_MS))
|
||||
.linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
verify(mIBinder).linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
|
||||
verify(mConnectivityDiagnosticsCallback).asBinder();
|
||||
assertTrue(
|
||||
mService.mConnectivityDiagnosticsCallbacks.containsKey(
|
||||
@@ -6635,8 +6639,11 @@ public class ConnectivityServiceTest {
|
||||
public void testConnectivityDiagnosticsCallbackOnConnectivityReport() throws Exception {
|
||||
setUpConnectivityDiagnosticsCallback();
|
||||
|
||||
// Wait for onConnectivityReport to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Verify onConnectivityReport fired
|
||||
verify(mConnectivityDiagnosticsCallback)
|
||||
.onConnectivityReport(any(ConnectivityReport.class));
|
||||
}
|
||||
|
||||
@@ -6648,9 +6655,11 @@ public class ConnectivityServiceTest {
|
||||
// cellular network agent
|
||||
mCellNetworkAgent.notifyDataStallSuspected();
|
||||
|
||||
// Wait for onDataStallSuspected to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
.onDataStallSuspected(any(DataStallReport.class));
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Verify onDataStallSuspected fired
|
||||
verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(any(DataStallReport.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -6661,15 +6670,21 @@ public class ConnectivityServiceTest {
|
||||
final boolean hasConnectivity = true;
|
||||
mService.reportNetworkConnectivity(n, hasConnectivity);
|
||||
|
||||
// Wait for onNetworkConnectivityReported to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Verify onNetworkConnectivityReported fired
|
||||
verify(mConnectivityDiagnosticsCallback)
|
||||
.onNetworkConnectivityReported(eq(n), eq(hasConnectivity));
|
||||
|
||||
final boolean noConnectivity = false;
|
||||
mService.reportNetworkConnectivity(n, noConnectivity);
|
||||
|
||||
// Block until all other events are done processing.
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Wait for onNetworkConnectivityReported to fire
|
||||
verify(mConnectivityDiagnosticsCallback, timeout(TIMEOUT_MS))
|
||||
verify(mConnectivityDiagnosticsCallback)
|
||||
.onNetworkConnectivityReported(eq(n), eq(noConnectivity));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user