Make sure getActiveNetwork is consistent with default callbacks

Almost clean cherry-pick of ag/3889538.

Bug: 77737389
Test: runtest framework-net
      new test don't pass without the main code change, but they
      do with it
Change-Id: I0cd83a935ab0b349aa47e065b830e5a43ab9a091
Merged-In: Iaa0285825735d3f16bba6e4946723a437fd9b0b9
Merged-In: Ia8f985b448251f911484e6bd63fa562bffc1b0e4
This commit is contained in:
Chalard Jean
2018-04-18 20:18:38 +09:00
parent d94e48ff95
commit 818f6b5c6a
2 changed files with 73 additions and 6 deletions

View File

@@ -4170,4 +4170,53 @@ public class ConnectivityServiceTest {
mCm.unregisterNetworkCallback(vpnNetworkCallback);
mCm.unregisterNetworkCallback(defaultCallback);
}
@Test
public void testVpnWithAndWithoutInternet() {
final int uid = Process.myUid();
final TestNetworkCallback defaultCallback = new TestNetworkCallback();
mCm.registerDefaultNetworkCallback(defaultCallback);
defaultCallback.assertNoCallback();
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
mWiFiNetworkAgent.connect(true);
defaultCallback.expectAvailableThenValidatedCallbacks(mWiFiNetworkAgent);
assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
MockNetworkAgent vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN);
final ArraySet<UidRange> ranges = new ArraySet<>();
ranges.add(new UidRange(uid, uid));
when(mMockVpn.getNetId()).thenReturn(vpnNetworkAgent.getNetwork().netId);
vpnNetworkAgent.setUids(ranges);
vpnNetworkAgent.connect(true /* validated */, false /* hasInternet */);
defaultCallback.assertNoCallback();
assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
vpnNetworkAgent.disconnect();
defaultCallback.assertNoCallback();
vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN);
when(mMockVpn.getNetId()).thenReturn(vpnNetworkAgent.getNetwork().netId);
vpnNetworkAgent.setUids(ranges);
vpnNetworkAgent.connect(true /* validated */, true /* hasInternet */);
defaultCallback.expectAvailableThenValidatedCallbacks(vpnNetworkAgent);
assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
vpnNetworkAgent.disconnect();
defaultCallback.expectCallback(CallbackState.LOST, vpnNetworkAgent);
defaultCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
vpnNetworkAgent = new MockNetworkAgent(TRANSPORT_VPN);
when(mMockVpn.getNetId()).thenReturn(vpnNetworkAgent.getNetwork().netId);
ranges.clear();
vpnNetworkAgent.setUids(ranges);
vpnNetworkAgent.connect(false /* validated */, true /* hasInternet */);
defaultCallback.assertNoCallback();
mCm.unregisterNetworkCallback(defaultCallback);
}
}