From 47e3788e3ec8b072f213551d7676b6a735094a96 Mon Sep 17 00:00:00 2001 From: markchien Date: Wed, 27 May 2020 18:16:37 +0800 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 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);