[VCN01] Add NOT_VCN_MANAGED capability
Add new capability to indicate whether a network is
managed by Virtual Carrier Network (VCN). This is needed
to identify networks between VCN managed network and
others. And this capability will be:
1. mutable
2. requestable
3. set by default for network agents and requests
4. allowed for test networks
Test: 1. atest FrameworksNetTests CtsNetTestCases
2. adb shell dumpsys connectivity
3. atest ConnectivityServiceTest#testLoseMutableAndRequestableCaps
Bug: 175662146
Change-Id: Ia5eeb3912a687164fa95d7ba5516fd73abca79ba
This commit is contained in:
@@ -63,6 +63,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_RCS;
|
||||
@@ -6906,36 +6907,58 @@ public class ConnectivityServiceTest {
|
||||
mCm.unregisterNetworkCallback(vpnUidCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test mutable and requestable network capabilities such as
|
||||
* {@link NetworkCapabilities#NET_CAPABILITY_TRUSTED} and
|
||||
* {@link NetworkCapabilities#NET_CAPABILITY_NOT_VCN_MANAGED}. Verify that the
|
||||
* {@code ConnectivityService} re-assign the networks accordingly.
|
||||
*/
|
||||
@Test
|
||||
public final void testLoseTrusted() throws Exception {
|
||||
final NetworkRequest trustedRequest = new NetworkRequest.Builder()
|
||||
.addCapability(NET_CAPABILITY_TRUSTED)
|
||||
.build();
|
||||
final TestNetworkCallback trustedCallback = new TestNetworkCallback();
|
||||
mCm.requestNetwork(trustedRequest, trustedCallback);
|
||||
public final void testLoseMutableAndRequestableCaps() throws Exception {
|
||||
final int[] testCaps = new int [] {
|
||||
NET_CAPABILITY_TRUSTED,
|
||||
NET_CAPABILITY_NOT_VCN_MANAGED
|
||||
};
|
||||
for (final int testCap : testCaps) {
|
||||
// Create requests with and without the testing capability.
|
||||
final TestNetworkCallback callbackWithCap = new TestNetworkCallback();
|
||||
final TestNetworkCallback callbackWithoutCap = new TestNetworkCallback();
|
||||
mCm.requestNetwork(new NetworkRequest.Builder().addCapability(testCap).build(),
|
||||
callbackWithCap);
|
||||
mCm.requestNetwork(new NetworkRequest.Builder().removeCapability(testCap).build(),
|
||||
callbackWithoutCap);
|
||||
|
||||
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
|
||||
mCellNetworkAgent.connect(true);
|
||||
trustedCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
// Setup networks with testing capability and verify the default network changes.
|
||||
mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
|
||||
mCellNetworkAgent.connect(true);
|
||||
callbackWithCap.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
callbackWithoutCap.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
|
||||
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
|
||||
mWiFiNetworkAgent.connect(true);
|
||||
trustedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mWiFiNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
|
||||
mWiFiNetworkAgent.connect(true);
|
||||
callbackWithCap.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
||||
callbackWithoutCap.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mWiFiNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
|
||||
mWiFiNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
|
||||
trustedCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
// Remove the testing capability on wifi, verify the callback and default network
|
||||
// changes back to cellular.
|
||||
mWiFiNetworkAgent.removeCapability(testCap);
|
||||
callbackWithCap.expectAvailableCallbacksValidated(mCellNetworkAgent);
|
||||
callbackWithoutCap.expectCapabilitiesWithout(testCap, mWiFiNetworkAgent);
|
||||
verify(mMockNetd).networkSetDefault(eq(mCellNetworkAgent.getNetwork().netId));
|
||||
reset(mMockNetd);
|
||||
|
||||
mCellNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
|
||||
trustedCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
|
||||
verify(mMockNetd).networkClearDefault();
|
||||
mCellNetworkAgent.removeCapability(testCap);
|
||||
callbackWithCap.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
|
||||
callbackWithoutCap.assertNoCallback();
|
||||
verify(mMockNetd).networkClearDefault();
|
||||
|
||||
mCm.unregisterNetworkCallback(trustedCallback);
|
||||
mCm.unregisterNetworkCallback(callbackWithCap);
|
||||
mCm.unregisterNetworkCallback(callbackWithoutCap);
|
||||
}
|
||||
}
|
||||
|
||||
@Ignore // 40%+ flakiness : figure out why and re-enable.
|
||||
|
||||
Reference in New Issue
Block a user