Update network object when wifi meterness is changed

The new wifi disconnect behavior is introduced. When wifi
network is changed from unmetered to metered, the wifi
network will disconnect and reconnect. Update the test to
verify the same SSID wifi is connected and also update the
target network to verfiy the metered preference.

Bug: 153400606
Test: atest CtsNetTestCases:android.net.cts.ConnectivityManagerTest\
      #testGetMultipathPreference
Change-Id: Ic298d3d85d8c6b77c8df7614a945f2c22dcdff38
Merged-In: Ic298d3d85d8c6b77c8df7614a945f2c22dcdff38
(cherry picked from commit 37d5d4387cce865d159e80e5101685b4c2a13731)
This commit is contained in:
Chiachang Wang
2020-04-20 15:15:58 +00:00
parent 958e8d1ceb
commit 3ee47d4233

View File

@@ -709,7 +709,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
@AppModeFull(reason = "Cannot get WifiManager in instant app mode") @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
public void testGetMultipathPreference() throws Exception { public void testGetMultipathPreference() throws Exception {
final ContentResolver resolver = mContext.getContentResolver(); final ContentResolver resolver = mContext.getContentResolver();
final Network network = ensureWifiConnected(); ensureWifiConnected();
final String ssid = unquoteSSID(mWifiManager.getConnectionInfo().getSSID()); final String ssid = unquoteSSID(mWifiManager.getConnectionInfo().getSSID());
final String oldMeteredSetting = getWifiMeteredStatus(ssid); final String oldMeteredSetting = getWifiMeteredStatus(ssid);
final String oldMeteredMultipathPreference = Settings.Global.getString( final String oldMeteredMultipathPreference = Settings.Global.getString(
@@ -721,6 +721,10 @@ public class ConnectivityManagerTest extends AndroidTestCase {
Integer.toString(newMeteredPreference)); Integer.toString(newMeteredPreference));
setWifiMeteredStatus(ssid, "true"); setWifiMeteredStatus(ssid, "true");
waitForActiveNetworkMetered(true); waitForActiveNetworkMetered(true);
// Wifi meterness changes from unmetered to metered will disconnect and reconnect since
// R.
final Network network = mCm.getActiveNetwork();
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);
assertMultipathPreferenceIsEventually(network, initialMeteredPreference, assertMultipathPreferenceIsEventually(network, initialMeteredPreference,
@@ -736,6 +740,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
oldMeteredPreference, newMeteredPreference); oldMeteredPreference, newMeteredPreference);
setWifiMeteredStatus(ssid, "false"); setWifiMeteredStatus(ssid, "false");
// No disconnect from unmetered to metered.
waitForActiveNetworkMetered(false); waitForActiveNetworkMetered(false);
assertEquals(mCm.getNetworkCapabilities(network).hasCapability( assertEquals(mCm.getNetworkCapabilities(network).hasCapability(
NET_CAPABILITY_NOT_METERED), true); NET_CAPABILITY_NOT_METERED), true);