Merge "Fix flaky test: testSetOemNetworkPreferenceForTestPref" am: 4402d99296

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2065429

Change-Id: I0881bae7910a60ec97f094f9755f942786aaaded
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Paul Hu
2023-04-18 09:23:52 +00:00
committed by Automerger Merge Worker

View File

@@ -2176,15 +2176,12 @@ public class ConnectivityManagerTest {
c -> c instanceof CallbackEntry.Available);
}
private void waitForAvailable(
private void waitForTransport(
@NonNull final TestableNetworkCallback cb, final int expectedTransport) {
cb.eventuallyExpect(
CallbackEntry.AVAILABLE, NETWORK_CALLBACK_TIMEOUT_MS,
entry -> {
final NetworkCapabilities nc = mCm.getNetworkCapabilities(entry.getNetwork());
return nc.hasTransport(expectedTransport);
}
);
cb.eventuallyExpect(CallbackEntry.NETWORK_CAPS_UPDATED,
NETWORK_CALLBACK_TIMEOUT_MS,
entry -> ((CallbackEntry.CapabilitiesChanged) entry).getCaps()
.hasTransport(expectedTransport));
}
private void waitForAvailable(
@@ -2672,7 +2669,8 @@ public class ConnectivityManagerTest {
// Validate that an unmetered network is used over other networks.
waitForAvailable(defaultCallback, wifiNetwork);
waitForAvailable(systemDefaultCallback, wifiNetwork);
systemDefaultCallback.eventuallyExpect(CallbackEntry.AVAILABLE,
NETWORK_CALLBACK_TIMEOUT_MS, cb -> wifiNetwork.equals(cb.getNetwork()));
// Validate that when setting unmetered to metered, unmetered is lost and replaced by
// the network with the TEST transport. Also wait for validation here, in case there
@@ -2684,11 +2682,14 @@ public class ConnectivityManagerTest {
// callbacks may be received. Eventually, metered Wi-Fi should be the final available
// callback in any case therefore confirm its receipt before continuing to assure the
// system is in the expected state.
waitForAvailable(systemDefaultCallback, TRANSPORT_WIFI);
waitForTransport(systemDefaultCallback, TRANSPORT_WIFI);
}, /* cleanup */ () -> {
// Validate that removing the test network will fallback to the default network.
// Validate that removing the test network will fallback to the default network.
runWithShellPermissionIdentity(tnt::teardown);
defaultCallback.expect(CallbackEntry.LOST, tnt, NETWORK_CALLBACK_TIMEOUT_MS);
// The other callbacks (LP or NC changes) would receive before LOST callback. Use
// eventuallyExpect to check callback for avoiding test flake.
defaultCallback.eventuallyExpect(CallbackEntry.LOST, NETWORK_CALLBACK_TIMEOUT_MS,
lost -> tnt.getNetwork().equals(lost.getNetwork()));
waitForAvailable(defaultCallback);
}, /* cleanup */ () -> {
setWifiMeteredStatusAndWait(ssid, oldMeteredValue, false /* waitForValidation */);