Merge "Wait for validation of WiFi in OEM pref test" am: c60c1bc24e
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1821292 Change-Id: I7c26bb8a04b6c56257ef8ecb44a4afa50826a85e
This commit is contained in:
@@ -1082,7 +1082,8 @@ public class ConnectivityManagerTest {
|
||||
}
|
||||
|
||||
private Network waitForActiveNetworkMetered(final int targetTransportType,
|
||||
final boolean requestedMeteredness, final boolean useSystemDefault)
|
||||
final boolean requestedMeteredness, final boolean waitForValidation,
|
||||
final boolean useSystemDefault)
|
||||
throws Exception {
|
||||
final CompletableFuture<Network> networkFuture = new CompletableFuture<>();
|
||||
final NetworkCallback networkCallback = new NetworkCallback() {
|
||||
@@ -1091,7 +1092,8 @@ public class ConnectivityManagerTest {
|
||||
if (!nc.hasTransport(targetTransportType)) return;
|
||||
|
||||
final boolean metered = !nc.hasCapability(NET_CAPABILITY_NOT_METERED);
|
||||
if (metered == requestedMeteredness) {
|
||||
final boolean validated = nc.hasCapability(NET_CAPABILITY_VALIDATED);
|
||||
if (metered == requestedMeteredness && (!waitForValidation || validated)) {
|
||||
networkFuture.complete(network);
|
||||
}
|
||||
}
|
||||
@@ -1120,11 +1122,13 @@ public class ConnectivityManagerTest {
|
||||
}
|
||||
}
|
||||
|
||||
private Network setWifiMeteredStatusAndWait(String ssid, boolean isMetered) throws Exception {
|
||||
private Network setWifiMeteredStatusAndWait(String ssid, boolean isMetered,
|
||||
boolean waitForValidation) throws Exception {
|
||||
setWifiMeteredStatus(ssid, Boolean.toString(isMetered) /* metered */);
|
||||
mCtsNetUtils.ensureWifiConnected();
|
||||
return waitForActiveNetworkMetered(TRANSPORT_WIFI,
|
||||
isMetered /* requestedMeteredness */,
|
||||
waitForValidation,
|
||||
true /* useSystemDefault */);
|
||||
}
|
||||
|
||||
@@ -1187,9 +1191,10 @@ public class ConnectivityManagerTest {
|
||||
int newMeteredPreference = findNextPrefValue(resolver);
|
||||
Settings.Global.putString(resolver, NETWORK_METERED_MULTIPATH_PREFERENCE,
|
||||
Integer.toString(newMeteredPreference));
|
||||
// Wifi meterness changes from unmetered to metered will disconnect and reconnect since
|
||||
// R.
|
||||
final Network network = setWifiMeteredStatusAndWait(ssid, true);
|
||||
// Wifi meteredness changes from unmetered to metered will disconnect and reconnect
|
||||
// since R.
|
||||
final Network network = setWifiMeteredStatusAndWait(ssid, true /* isMetered */,
|
||||
false /* waitForValidation */);
|
||||
assertEquals(ssid, unquoteSSID(mWifiManager.getConnectionInfo().getSSID()));
|
||||
assertEquals(mCm.getNetworkCapabilities(network).hasCapability(
|
||||
NET_CAPABILITY_NOT_METERED), false);
|
||||
@@ -1206,7 +1211,7 @@ public class ConnectivityManagerTest {
|
||||
oldMeteredPreference, newMeteredPreference);
|
||||
|
||||
// No disconnect from unmetered to metered.
|
||||
setWifiMeteredStatusAndWait(ssid, false);
|
||||
setWifiMeteredStatusAndWait(ssid, false /* isMetered */, false /* waitForValidation */);
|
||||
assertEquals(mCm.getNetworkCapabilities(network).hasCapability(
|
||||
NET_CAPABILITY_NOT_METERED), true);
|
||||
assertMultipathPreferenceIsEventually(network, newMeteredPreference,
|
||||
@@ -2322,8 +2327,10 @@ public class ConnectivityManagerTest {
|
||||
final boolean oldMeteredValue = wifiNetworkCapabilities.isMetered();
|
||||
|
||||
try {
|
||||
// This network will be used for unmetered.
|
||||
setWifiMeteredStatusAndWait(ssid, false /* isMetered */);
|
||||
// This network will be used for unmetered. Wait for it to be validated because
|
||||
// OEM_NETWORK_PREFERENCE_TEST only prefers NOT_METERED&VALIDATED to a network with
|
||||
// TRANSPORT_TEST, like OEM_NETWORK_PREFERENCE_OEM_PAID.
|
||||
setWifiMeteredStatusAndWait(ssid, false /* isMetered */, true /* waitForValidation */);
|
||||
|
||||
setOemNetworkPreferenceForMyPackage(OemNetworkPreferences.OEM_NETWORK_PREFERENCE_TEST);
|
||||
registerTestOemNetworkPreferenceCallbacks(defaultCallback, systemDefaultCallback);
|
||||
@@ -2332,9 +2339,10 @@ public class ConnectivityManagerTest {
|
||||
waitForAvailable(defaultCallback, wifiNetwork);
|
||||
waitForAvailable(systemDefaultCallback, wifiNetwork);
|
||||
|
||||
// Validate when setting unmetered to metered, unmetered is lost and replaced by the
|
||||
// network with the TEST transport.
|
||||
setWifiMeteredStatusAndWait(ssid, true /* isMetered */);
|
||||
// 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
|
||||
// is a bug that's only visible when the network is validated.
|
||||
setWifiMeteredStatusAndWait(ssid, true /* isMetered */, true /* waitForValidation */);
|
||||
defaultCallback.expectCallback(CallbackEntry.LOST, wifiNetwork,
|
||||
NETWORK_CALLBACK_TIMEOUT_MS);
|
||||
waitForAvailable(defaultCallback, tnt.getNetwork());
|
||||
@@ -2350,7 +2358,7 @@ public class ConnectivityManagerTest {
|
||||
NETWORK_CALLBACK_TIMEOUT_MS);
|
||||
waitForAvailable(defaultCallback);
|
||||
|
||||
setWifiMeteredStatusAndWait(ssid, oldMeteredValue);
|
||||
setWifiMeteredStatusAndWait(ssid, oldMeteredValue, false /* waitForValidation */);
|
||||
|
||||
// Cleanup any prior test state from setOemNetworkPreference
|
||||
clearOemNetworkPreference();
|
||||
|
||||
Reference in New Issue
Block a user