From 6aac2067f63989e22cb95488da8a5ef7ac806737 Mon Sep 17 00:00:00 2001 From: Chiachang Wang Date: Wed, 22 Apr 2020 11:01:25 +0800 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 --- .../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,