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
This commit is contained in:
Treehugger Robot
2020-05-28 02:06:01 +00:00
committed by Mark Chien
parent 3eeb88d3b0
commit 994edc463e

View File

@@ -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);