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); c -> c instanceof CallbackEntry.Available);
} }
private void waitForAvailable( private void waitForTransport(
@NonNull final TestableNetworkCallback cb, final int expectedTransport) { @NonNull final TestableNetworkCallback cb, final int expectedTransport) {
cb.eventuallyExpect( cb.eventuallyExpect(CallbackEntry.NETWORK_CAPS_UPDATED,
CallbackEntry.AVAILABLE, NETWORK_CALLBACK_TIMEOUT_MS, NETWORK_CALLBACK_TIMEOUT_MS,
entry -> { entry -> ((CallbackEntry.CapabilitiesChanged) entry).getCaps()
final NetworkCapabilities nc = mCm.getNetworkCapabilities(entry.getNetwork()); .hasTransport(expectedTransport));
return nc.hasTransport(expectedTransport);
}
);
} }
private void waitForAvailable( private void waitForAvailable(
@@ -2672,7 +2669,8 @@ public class ConnectivityManagerTest {
// Validate that an unmetered network is used over other networks. // Validate that an unmetered network is used over other networks.
waitForAvailable(defaultCallback, wifiNetwork); 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 // 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 // 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 // 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 // callback in any case therefore confirm its receipt before continuing to assure the
// system is in the expected state. // system is in the expected state.
waitForAvailable(systemDefaultCallback, TRANSPORT_WIFI); waitForTransport(systemDefaultCallback, TRANSPORT_WIFI);
}, /* cleanup */ () -> { }, /* 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); 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); waitForAvailable(defaultCallback);
}, /* cleanup */ () -> { }, /* cleanup */ () -> {
setWifiMeteredStatusAndWait(ssid, oldMeteredValue, false /* waitForValidation */); setWifiMeteredStatusAndWait(ssid, oldMeteredValue, false /* waitForValidation */);