Fix race condition / test flakiness.
The potential for a race condition exists in WifiTrackerTest, which intermittently manifests in APCT. By waiting for all handlers to be idle before asserting our test verification, we can fix this flaky test. Also added more verification steps to test code to more precisely indicate where a test may be failing. Bug: b/64047370 Test: runtest --path frameworks/base/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/WifiTrackerTest.java Change-Id: I597fd7dc29e7f3b0d13c8cdebfa208326a64f507
This commit is contained in:
@@ -346,7 +346,10 @@ public class WifiTrackerTest {
|
||||
|
||||
Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);
|
||||
intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo);
|
||||
return createTrackerWithImmediateBroadcastsAndInjectInitialScanResults(intent);
|
||||
WifiTracker tracker =
|
||||
createTrackerWithImmediateBroadcastsAndInjectInitialScanResults(intent);
|
||||
assertThat(tracker.isConnected()).isTrue();
|
||||
return tracker;
|
||||
}
|
||||
|
||||
private void waitForHandlersToProcessCurrentlyEnqueuedMessages(WifiTracker tracker)
|
||||
@@ -860,23 +863,26 @@ public class WifiTrackerTest {
|
||||
intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo);
|
||||
tracker.mReceiver.onReceive(mContext, intent);
|
||||
|
||||
waitForHandlersToProcessCurrentlyEnqueuedMessages(tracker);
|
||||
verify(mockWifiListener, times(1)).onConnectedChanged();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onConnectedChangedCallback_shouldNBeInvokedWhenStateChanges() throws Exception {
|
||||
public void onConnectedChangedCallback_shouldBeInvokedWhenStateChanges() throws Exception {
|
||||
WifiTracker tracker = createTrackerWithScanResultsAndAccessPoint1Connected();
|
||||
verify(mockWifiListener, times(1)).onConnectedChanged();
|
||||
|
||||
NetworkInfo networkInfo = new NetworkInfo(
|
||||
ConnectivityManager.TYPE_WIFI, 0, "Type Wifi", "subtype");
|
||||
networkInfo.setDetailedState(
|
||||
NetworkInfo.DetailedState.DISCONNECTED, "dicconnected", "test");
|
||||
NetworkInfo.DetailedState.DISCONNECTED, "disconnected", "test");
|
||||
|
||||
Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);
|
||||
intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo);
|
||||
tracker.mReceiver.onReceive(mContext, intent);
|
||||
|
||||
waitForHandlersToProcessCurrentlyEnqueuedMessages(tracker);
|
||||
assertThat(tracker.isConnected()).isFalse();
|
||||
verify(mockWifiListener, times(2)).onConnectedChanged();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user