Merge "Update TetheringTests for new connectivity shims" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b81724602f
@@ -36,6 +36,7 @@ import android.os.Handler;
|
|||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -67,10 +68,10 @@ public class TestConnectivityManager extends ConnectivityManager {
|
|||||||
public static final boolean BROADCAST_FIRST = false;
|
public static final boolean BROADCAST_FIRST = false;
|
||||||
public static final boolean CALLBACKS_FIRST = true;
|
public static final boolean CALLBACKS_FIRST = true;
|
||||||
|
|
||||||
final Map<NetworkCallback, NetworkRequestInfo> mAllCallbacks = new ArrayMap<>();
|
final Map<NetworkCallback, NetworkCallbackInfo> mAllCallbacks = new ArrayMap<>();
|
||||||
// This contains the callbacks tracking the system default network, whether it's registered
|
// This contains the callbacks tracking the system default network, whether it's registered
|
||||||
// with registerSystemDefaultNetworkCallback (S+) or with a custom request (R-).
|
// with registerSystemDefaultNetworkCallback (S+) or with a custom request (R-).
|
||||||
final Map<NetworkCallback, NetworkRequestInfo> mTrackingDefault = new ArrayMap<>();
|
final Map<NetworkCallback, NetworkCallbackInfo> mTrackingDefault = new ArrayMap<>();
|
||||||
final Map<NetworkCallback, NetworkRequestInfo> mListening = new ArrayMap<>();
|
final Map<NetworkCallback, NetworkRequestInfo> mListening = new ArrayMap<>();
|
||||||
final Map<NetworkCallback, NetworkRequestInfo> mRequested = new ArrayMap<>();
|
final Map<NetworkCallback, NetworkRequestInfo> mRequested = new ArrayMap<>();
|
||||||
final Map<NetworkCallback, Integer> mLegacyTypeMap = new ArrayMap<>();
|
final Map<NetworkCallback, Integer> mLegacyTypeMap = new ArrayMap<>();
|
||||||
@@ -91,15 +92,21 @@ public class TestConnectivityManager extends ConnectivityManager {
|
|||||||
mContext = ctx;
|
mContext = ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NetworkRequestInfo {
|
static class NetworkCallbackInfo {
|
||||||
public final NetworkRequest request;
|
|
||||||
public final Handler handler;
|
public final Handler handler;
|
||||||
NetworkRequestInfo(NetworkRequest r, Handler h) {
|
NetworkCallbackInfo(Handler h) {
|
||||||
request = r;
|
|
||||||
handler = h;
|
handler = h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class NetworkRequestInfo extends NetworkCallbackInfo {
|
||||||
|
public final NetworkRequest request;
|
||||||
|
NetworkRequestInfo(NetworkRequest r, Handler h) {
|
||||||
|
super(h);
|
||||||
|
request = r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
boolean hasNoCallbacks() {
|
boolean hasNoCallbacks() {
|
||||||
return mAllCallbacks.isEmpty()
|
return mAllCallbacks.isEmpty()
|
||||||
&& mTrackingDefault.isEmpty()
|
&& mTrackingDefault.isEmpty()
|
||||||
@@ -145,7 +152,7 @@ public class TestConnectivityManager extends ConnectivityManager {
|
|||||||
private void sendDefaultNetworkCallbacks(TestNetworkAgent formerDefault,
|
private void sendDefaultNetworkCallbacks(TestNetworkAgent formerDefault,
|
||||||
TestNetworkAgent defaultNetwork) {
|
TestNetworkAgent defaultNetwork) {
|
||||||
for (NetworkCallback cb : mTrackingDefault.keySet()) {
|
for (NetworkCallback cb : mTrackingDefault.keySet()) {
|
||||||
final NetworkRequestInfo nri = mTrackingDefault.get(cb);
|
final NetworkCallbackInfo nri = mTrackingDefault.get(cb);
|
||||||
if (defaultNetwork != null) {
|
if (defaultNetwork != null) {
|
||||||
nri.handler.post(() -> cb.onAvailable(defaultNetwork.networkId));
|
nri.handler.post(() -> cb.onAvailable(defaultNetwork.networkId));
|
||||||
nri.handler.post(() -> cb.onCapabilitiesChanged(
|
nri.handler.post(() -> cb.onCapabilitiesChanged(
|
||||||
@@ -191,19 +198,27 @@ public class TestConnectivityManager extends ConnectivityManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void requestNetwork(NetworkRequest req, NetworkCallback cb, Handler h) {
|
public void requestNetwork(NetworkRequest req, NetworkCallback cb, Handler h) {
|
||||||
assertFalse(mAllCallbacks.containsKey(cb));
|
|
||||||
mAllCallbacks.put(cb, new NetworkRequestInfo(req, h));
|
|
||||||
// For R- devices, Tethering will invoke this function in 2 cases, one is to request mobile
|
// For R- devices, Tethering will invoke this function in 2 cases, one is to request mobile
|
||||||
// network, the other is to track system default network.
|
// network, the other is to track system default network.
|
||||||
if (looksLikeDefaultRequest(req)) {
|
if (looksLikeDefaultRequest(req)) {
|
||||||
assertFalse(mTrackingDefault.containsKey(cb));
|
registerSystemDefaultNetworkCallback(cb, h);
|
||||||
mTrackingDefault.put(cb, new NetworkRequestInfo(req, h));
|
|
||||||
} else {
|
} else {
|
||||||
|
assertFalse(mAllCallbacks.containsKey(cb));
|
||||||
|
mAllCallbacks.put(cb, new NetworkRequestInfo(req, h));
|
||||||
assertFalse(mRequested.containsKey(cb));
|
assertFalse(mRequested.containsKey(cb));
|
||||||
mRequested.put(cb, new NetworkRequestInfo(req, h));
|
mRequested.put(cb, new NetworkRequestInfo(req, h));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerSystemDefaultNetworkCallback(
|
||||||
|
@NonNull NetworkCallback cb, @NonNull Handler h) {
|
||||||
|
assertFalse(mAllCallbacks.containsKey(cb));
|
||||||
|
mAllCallbacks.put(cb, new NetworkCallbackInfo(h));
|
||||||
|
assertFalse(mTrackingDefault.containsKey(cb));
|
||||||
|
mTrackingDefault.put(cb, new NetworkCallbackInfo(h));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void requestNetwork(NetworkRequest req, NetworkCallback cb) {
|
public void requestNetwork(NetworkRequest req, NetworkCallback cb) {
|
||||||
fail("Should never be called.");
|
fail("Should never be called.");
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
|
|||||||
import static android.system.OsConstants.RT_SCOPE_UNIVERSE;
|
import static android.system.OsConstants.RT_SCOPE_UNIVERSE;
|
||||||
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
|
||||||
|
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
|
||||||
import static com.android.net.module.util.Inet4AddressUtils.inet4AddressToIntHTH;
|
import static com.android.net.module.util.Inet4AddressUtils.inet4AddressToIntHTH;
|
||||||
import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
|
import static com.android.net.module.util.Inet4AddressUtils.intToInet4AddressHTH;
|
||||||
import static com.android.networkstack.tethering.OffloadHardwareInterface.OFFLOAD_HAL_VERSION_1_0;
|
import static com.android.networkstack.tethering.OffloadHardwareInterface.OFFLOAD_HAL_VERSION_1_0;
|
||||||
@@ -779,10 +780,17 @@ public class TetheringTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void verifyDefaultNetworkRequestFiled() {
|
private void verifyDefaultNetworkRequestFiled() {
|
||||||
ArgumentCaptor<NetworkRequest> reqCaptor = ArgumentCaptor.forClass(NetworkRequest.class);
|
if (isAtLeastS()) {
|
||||||
|
verify(mCm, times(1)).registerSystemDefaultNetworkCallback(
|
||||||
|
any(NetworkCallback.class), any(Handler.class));
|
||||||
|
} else {
|
||||||
|
ArgumentCaptor<NetworkRequest> reqCaptor = ArgumentCaptor.forClass(
|
||||||
|
NetworkRequest.class);
|
||||||
verify(mCm, times(1)).requestNetwork(reqCaptor.capture(),
|
verify(mCm, times(1)).requestNetwork(reqCaptor.capture(),
|
||||||
any(NetworkCallback.class), any(Handler.class));
|
any(NetworkCallback.class), any(Handler.class));
|
||||||
assertTrue(TestConnectivityManager.looksLikeDefaultRequest(reqCaptor.getValue()));
|
assertTrue(TestConnectivityManager.looksLikeDefaultRequest(reqCaptor.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
// The default network request is only ever filed once.
|
// The default network request is only ever filed once.
|
||||||
verifyNoMoreInteractions(mCm);
|
verifyNoMoreInteractions(mCm);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
|
|||||||
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
||||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||||
|
|
||||||
|
import static com.android.modules.utils.build.SdkLevel.isAtLeastS;
|
||||||
import static com.android.networkstack.tethering.UpstreamNetworkMonitor.TYPE_NONE;
|
import static com.android.networkstack.tethering.UpstreamNetworkMonitor.TYPE_NONE;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
@@ -172,12 +173,17 @@ public class UpstreamNetworkMonitorTest {
|
|||||||
// Verify the fired default request matches expectation.
|
// Verify the fired default request matches expectation.
|
||||||
final ArgumentCaptor<NetworkRequest> requestCaptor =
|
final ArgumentCaptor<NetworkRequest> requestCaptor =
|
||||||
ArgumentCaptor.forClass(NetworkRequest.class);
|
ArgumentCaptor.forClass(NetworkRequest.class);
|
||||||
verify(mCM, times(1)).requestNetwork(
|
|
||||||
|
if (isAtLeastS()) {
|
||||||
|
verify(mCM).registerSystemDefaultNetworkCallback(any(), any());
|
||||||
|
} else {
|
||||||
|
verify(mCM).requestNetwork(
|
||||||
requestCaptor.capture(), any(NetworkCallback.class), any(Handler.class));
|
requestCaptor.capture(), any(NetworkCallback.class), any(Handler.class));
|
||||||
// For R- devices, Tethering will invoke this function in 2 cases, one is to
|
// For R- devices, Tethering will invoke this function in 2 cases, one is to
|
||||||
// request mobile network, the other is to track system default network. Verify
|
// request mobile network, the other is to track system default network. Verify
|
||||||
// the request is the one tracks default network.
|
// the request is the one tracks default network.
|
||||||
assertTrue(TestConnectivityManager.looksLikeDefaultRequest(requestCaptor.getValue()));
|
assertTrue(TestConnectivityManager.looksLikeDefaultRequest(requestCaptor.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
mUNM.startObserveAllNetworks();
|
mUNM.startObserveAllNetworks();
|
||||||
verify(mCM, times(1)).registerNetworkCallback(
|
verify(mCM, times(1)).registerNetworkCallback(
|
||||||
|
|||||||
Reference in New Issue
Block a user