Merge "Specify which callback is unexpected in testMobileDataPreferredUids"
This commit is contained in:
@@ -2829,6 +2829,19 @@ public class ConnectivityManagerTest {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* The networks used in this test are real networks and as such they can see seemingly random
|
||||
* updates of their capabilities or link properties as conditions change, e.g. the network
|
||||
* loses validation or IPv4 shows up. Many tests should simply treat these callbacks as
|
||||
* spurious.
|
||||
*/
|
||||
private void assertNoCallbackExceptCapOrLpChange(
|
||||
@NonNull final TestableNetworkCallback cb) {
|
||||
cb.assertNoCallbackThat(NO_CALLBACK_TIMEOUT_MS,
|
||||
c -> !(c instanceof CallbackEntry.CapabilitiesChanged
|
||||
|| c instanceof CallbackEntry.LinkPropertiesChanged));
|
||||
}
|
||||
|
||||
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||
@Test
|
||||
public void testMobileDataPreferredUids() throws Exception {
|
||||
@@ -2861,8 +2874,7 @@ public class ConnectivityManagerTest {
|
||||
// CtsNetTestCases uid is not listed in MOBILE_DATA_PREFERRED_UIDS setting, so the
|
||||
// per-app default network should be same as system default network.
|
||||
waitForAvailable(systemDefaultCb, wifiNetwork);
|
||||
defaultTrackingCb.eventuallyExpect(CallbackEntry.AVAILABLE, NETWORK_CALLBACK_TIMEOUT_MS,
|
||||
entry -> wifiNetwork.equals(entry.getNetwork()));
|
||||
waitForAvailable(defaultTrackingCb, wifiNetwork);
|
||||
// Active network for CtsNetTestCases uid should be wifi now.
|
||||
assertEquals(wifiNetwork, mCm.getActiveNetwork());
|
||||
|
||||
@@ -2872,10 +2884,10 @@ public class ConnectivityManagerTest {
|
||||
newMobileDataPreferredUids.add(uid);
|
||||
ConnectivitySettingsManager.setMobileDataPreferredUids(
|
||||
mContext, newMobileDataPreferredUids);
|
||||
defaultTrackingCb.eventuallyExpect(CallbackEntry.AVAILABLE, NETWORK_CALLBACK_TIMEOUT_MS,
|
||||
entry -> cellNetwork.equals(entry.getNetwork()));
|
||||
// System default network doesn't change.
|
||||
systemDefaultCb.assertNoCallback();
|
||||
waitForAvailable(defaultTrackingCb, cellNetwork);
|
||||
// No change for system default network. Expect no callback except CapabilitiesChanged
|
||||
// or LinkPropertiesChanged which may be triggered randomly from wifi network.
|
||||
assertNoCallbackExceptCapOrLpChange(systemDefaultCb);
|
||||
// Active network for CtsNetTestCases uid should change to cell, too.
|
||||
assertEquals(cellNetwork, mCm.getActiveNetwork());
|
||||
|
||||
@@ -2884,10 +2896,10 @@ public class ConnectivityManagerTest {
|
||||
newMobileDataPreferredUids.remove(uid);
|
||||
ConnectivitySettingsManager.setMobileDataPreferredUids(
|
||||
mContext, newMobileDataPreferredUids);
|
||||
defaultTrackingCb.eventuallyExpect(CallbackEntry.AVAILABLE, NETWORK_CALLBACK_TIMEOUT_MS,
|
||||
entry -> wifiNetwork.equals(entry.getNetwork()));
|
||||
// System default network still doesn't change.
|
||||
systemDefaultCb.assertNoCallback();
|
||||
waitForAvailable(defaultTrackingCb, wifiNetwork);
|
||||
// No change for system default network. Expect no callback except CapabilitiesChanged
|
||||
// or LinkPropertiesChanged which may be triggered randomly from wifi network.
|
||||
assertNoCallbackExceptCapOrLpChange(systemDefaultCb);
|
||||
// Active network for CtsNetTestCases uid should change back to wifi.
|
||||
assertEquals(wifiNetwork, mCm.getActiveNetwork());
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user