From 994edc463e98b41e9f11d1af7b160722148fb841 Mon Sep 17 00:00:00 2001 From: Treehugger Robot Date: Thu, 28 May 2020 02:06:01 +0000 Subject: [PATCH] Fix testTetheringUpstream flaky testTetheringUpstream test case need cellular network. So it disable wifi and getActiveNetwork to check whether current network is cellular. But there is a race that call getActiveNetwork right away after disconnect wifi. getActiveNetwork may return null because switching network is not ready yet. Bug: 156314879 Test: atest CtsTetheringTest Merged-In: I6b433560fb27a3b4bd80c4198ccdb58a5be701b6 Change-Id: I6b433560fb27a3b4bd80c4198ccdb58a5be701b6 --- .../android/tethering/cts/TetheringManagerTest.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java index 8665c7ed5e..10555312f7 100644 --- a/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java +++ b/tests/cts/tethering/src/android/tethering/cts/TetheringManagerTest.java @@ -56,6 +56,7 @@ import android.net.TetheringManager.TetheringEventCallback; import android.net.TetheringManager.TetheringInterfaceRegexps; import android.net.TetheringManager.TetheringRequest; import android.net.cts.util.CtsNetUtils; +import android.net.cts.util.CtsNetUtils.TestNetworkCallback; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.PersistableBundle; @@ -714,7 +715,15 @@ public class TetheringManagerTest { mCtsNetUtils.disconnectFromWifi(null); } - final Network activeNetwork = mCm.getActiveNetwork(); + final TestNetworkCallback networkCallback = new TestNetworkCallback(); + Network activeNetwork = null; + try { + mCm.registerDefaultNetworkCallback(networkCallback); + activeNetwork = networkCallback.waitForAvailable(); + } finally { + mCm.unregisterNetworkCallback(networkCallback); + } + assertNotNull("No active network. Please ensure the device has working mobile data.", activeNetwork); final NetworkCapabilities activeNetCap = mCm.getNetworkCapabilities(activeNetwork);