From 1136e51d551fe34b3675e40790c77d86bfbcfbbd Mon Sep 17 00:00:00 2001 From: Chiachang Wang Date: Wed, 22 Apr 2020 07:45:16 +0000 Subject: [PATCH] Check target transport type for meterness change When test case updates the wifi network from unmetered to metered, test case will wait for wifi network reconnect. However, if other metered networks are also connected at the same time, test case may mis-take the network as the target network. Thus, add transport type check to ensure the transport type of the network is the expected one. Bug: 153400606 Test: atest CtsNetTestCasesLatestSdk:\ android.net.cts.ConnectivityManagerTest#\ testGetMultipathPreference Change-Id: I75dab1a00bbe1a1c75b548a6ce4ae3eacd325d92 Merged-In: I75dab1a00bbe1a1c75b548a6ce4ae3eacd325d92 (cherry picked from commit 495971d7b6abc65e6d506072038f499682f59f4d) --- .../src/android/net/cts/ConnectivityManagerTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java index 3a52ee60a3..1ee08ffa7a 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java @@ -639,11 +639,14 @@ public class ConnectivityManagerTest extends AndroidTestCase { } } - private void waitForActiveNetworkMetered(boolean requestedMeteredness) throws Exception { + private void waitForActiveNetworkMetered(int targetTransportType, boolean requestedMeteredness) + throws Exception { final CountDownLatch latch = new CountDownLatch(1); final NetworkCallback networkCallback = new NetworkCallback() { @Override public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) { + if (!nc.hasTransport(targetTransportType)) return; + final boolean metered = !nc.hasCapability(NET_CAPABILITY_NOT_METERED); if (metered == requestedMeteredness) { latch.countDown(); @@ -720,10 +723,10 @@ public class ConnectivityManagerTest extends AndroidTestCase { Settings.Global.putString(resolver, NETWORK_METERED_MULTIPATH_PREFERENCE, Integer.toString(newMeteredPreference)); setWifiMeteredStatus(ssid, "true"); - waitForActiveNetworkMetered(true); + waitForActiveNetworkMetered(TRANSPORT_WIFI, true); // Wifi meterness changes from unmetered to metered will disconnect and reconnect since // R. - final Network network = mCm.getActiveNetwork(); + final Network network = ensureWifiConnected(); assertEquals(ssid, unquoteSSID(mWifiManager.getConnectionInfo().getSSID())); assertEquals(mCm.getNetworkCapabilities(network).hasCapability( NET_CAPABILITY_NOT_METERED), false); @@ -741,7 +744,7 @@ public class ConnectivityManagerTest extends AndroidTestCase { setWifiMeteredStatus(ssid, "false"); // No disconnect from unmetered to metered. - waitForActiveNetworkMetered(false); + waitForActiveNetworkMetered(TRANSPORT_WIFI, false); assertEquals(mCm.getNetworkCapabilities(network).hasCapability( NET_CAPABILITY_NOT_METERED), true); assertMultipathPreferenceIsEventually(network, newMeteredPreference,