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