Request Test Networks for VCNs when in Test Mode.
This CL updates UnderlyingNetworkTracker to request Test Networks for route selection when the VCN it is tracking for is in test-mode. Bug: 182291467 Test: atest FrameworksVcnTests CtsVcnTestCases Change-Id: Icb59b15df61ec43fe76e250977a985caa6a1dffc
This commit is contained in:
@@ -158,8 +158,15 @@ public class UnderlyingNetworkTracker {
|
||||
* carrier owned networks may be selected, as the request specifies only subIds in the VCN's
|
||||
* subscription group, while the VCN networks are excluded by virtue of not having subIds set on
|
||||
* the VCN-exposed networks.
|
||||
*
|
||||
* <p>If the VCN that this UnderlyingNetworkTracker belongs to is in test-mode, this will return
|
||||
* a NetworkRequest that only matches Test Networks.
|
||||
*/
|
||||
private NetworkRequest getRouteSelectionRequest() {
|
||||
if (mVcnContext.isInTestMode()) {
|
||||
return getTestNetworkRequest(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup));
|
||||
}
|
||||
|
||||
return getBaseNetworkRequestBuilder()
|
||||
.setSubscriptionIds(mLastSnapshot.getAllSubIdsInGroup(mSubscriptionGroup))
|
||||
.build();
|
||||
@@ -210,6 +217,16 @@ public class UnderlyingNetworkTracker {
|
||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED);
|
||||
}
|
||||
|
||||
/** Builds and returns a NetworkRequest for the given subIds to match Test Networks. */
|
||||
private NetworkRequest getTestNetworkRequest(@NonNull Set<Integer> subIds) {
|
||||
return getBaseNetworkRequestBuilder()
|
||||
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
|
||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
||||
.setSubscriptionIds(subIds)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update this UnderlyingNetworkTracker's TelephonySubscriptionSnapshot.
|
||||
*
|
||||
|
||||
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -119,7 +120,7 @@ public class UnderlyingNetworkTrackerTest {
|
||||
mTestLooper.getLooper(),
|
||||
mVcnNetworkProvider,
|
||||
false /* isInTestMode */));
|
||||
doNothing().when(mVcnContext).ensureRunningOnLooperThread();
|
||||
resetVcnContext();
|
||||
|
||||
setupSystemService(
|
||||
mContext,
|
||||
@@ -138,6 +139,11 @@ public class UnderlyingNetworkTrackerTest {
|
||||
mNetworkTrackerCb);
|
||||
}
|
||||
|
||||
private void resetVcnContext() {
|
||||
reset(mVcnContext);
|
||||
doNothing().when(mVcnContext).ensureRunningOnLooperThread();
|
||||
}
|
||||
|
||||
private static LinkProperties getLinkPropertiesWithName(String iface) {
|
||||
LinkProperties linkProperties = new LinkProperties();
|
||||
linkProperties.setInterfaceName(iface);
|
||||
@@ -155,7 +161,29 @@ public class UnderlyingNetworkTrackerTest {
|
||||
verifyNetworkRequestsRegistered(INITIAL_SUB_IDS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNetworkCallbacksRegisteredOnStartupForTestMode() {
|
||||
resetVcnContext();
|
||||
when(mVcnContext.isInTestMode()).thenReturn(true);
|
||||
reset(mConnectivityManager);
|
||||
|
||||
mUnderlyingNetworkTracker =
|
||||
new UnderlyingNetworkTracker(
|
||||
mVcnContext,
|
||||
SUB_GROUP,
|
||||
mSubscriptionSnapshot,
|
||||
Collections.singleton(NetworkCapabilities.NET_CAPABILITY_INTERNET),
|
||||
mNetworkTrackerCb);
|
||||
|
||||
verifyNetworkRequestsRegistered(INITIAL_SUB_IDS, true /* expectTestMode */);
|
||||
}
|
||||
|
||||
private void verifyNetworkRequestsRegistered(Set<Integer> expectedSubIds) {
|
||||
verifyNetworkRequestsRegistered(expectedSubIds, false /* expectTestMode */);
|
||||
}
|
||||
|
||||
private void verifyNetworkRequestsRegistered(
|
||||
Set<Integer> expectedSubIds, boolean expectTestMode) {
|
||||
verify(mConnectivityManager)
|
||||
.requestBackgroundNetwork(
|
||||
eq(getWifiRequest(expectedSubIds)),
|
||||
@@ -168,10 +196,16 @@ public class UnderlyingNetworkTrackerTest {
|
||||
any(NetworkBringupCallback.class), any());
|
||||
}
|
||||
|
||||
final NetworkRequest expectedRouteSelectionRequest =
|
||||
expectTestMode
|
||||
? getTestNetworkRequest(expectedSubIds)
|
||||
: getRouteSelectionRequest(expectedSubIds);
|
||||
|
||||
verify(mConnectivityManager)
|
||||
.requestBackgroundNetwork(
|
||||
eq(getRouteSelectionRequest(expectedSubIds)),
|
||||
any(RouteSelectionCallback.class), any());
|
||||
eq(expectedRouteSelectionRequest),
|
||||
any(RouteSelectionCallback.class),
|
||||
any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -210,6 +244,15 @@ public class UnderlyingNetworkTrackerTest {
|
||||
return getExpectedRequestBase().setSubscriptionIds(netCapsSubIds).build();
|
||||
}
|
||||
|
||||
private NetworkRequest getTestNetworkRequest(Set<Integer> netCapsSubIds) {
|
||||
return getExpectedRequestBase()
|
||||
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
|
||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
||||
.setSubscriptionIds(netCapsSubIds)
|
||||
.build();
|
||||
}
|
||||
|
||||
private NetworkRequest.Builder getExpectedRequestBase() {
|
||||
final NetworkRequest.Builder builder =
|
||||
new NetworkRequest.Builder()
|
||||
|
||||
Reference in New Issue
Block a user