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

Commit e330fcd0 authored by Cody Kesting's avatar Cody Kesting
Browse files

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
parent f3626446
Loading
Loading
Loading
Loading
+28 −13
Original line number Diff line number Diff line
@@ -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));
    }
}