diff options
| author | Ken Chen <cken@google.com> | 2022-01-28 10:08:16 +0800 |
|---|---|---|
| committer | Patrick Rohr <prohr@google.com> | 2022-02-01 12:31:03 +0100 |
| commit | f5f51339af03c5d30c165a1e6a355f0a9f55d5df (patch) | |
| tree | 8ab166d768da6e0ec3f60ebc7c5e99a58d452a02 /tests/unit/java/com/android/server/ConnectivityServiceTest.java | |
| parent | 6ac2893743ab964689cc780204e4dc62ed6bf2d5 (diff) | |
Clean up BpfNetMaps
Cleans up BpfNetMaps.java before enabling mainline code path.
Bug: 202086915
Test: atest FrameworksNetTests
Change-Id: I28e5d63ed4624df540b1ca47b71899cff7321ded
Diffstat (limited to 'tests/unit/java/com/android/server/ConnectivityServiceTest.java')
| -rw-r--r-- | tests/unit/java/com/android/server/ConnectivityServiceTest.java | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 2985c41d87..e41a2ac8bb 100644 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -528,6 +528,7 @@ public class ConnectivityServiceTest { @Mock SystemConfigManager mSystemConfigManager; @Mock Resources mResources; @Mock PacProxyManager mPacProxyManager; + @Mock BpfNetMaps mBpfNetMaps; // BatteryStatsManager is final and cannot be mocked with regular mockito, so just mock the // underlying binder calls. @@ -1950,6 +1951,11 @@ public class ConnectivityServiceTest { return super.isFeatureEnabled(context, name, defaultEnabled); } } + + @Override + public BpfNetMaps getBpfNetMaps(INetd netd) { + return mBpfNetMaps; + } } private static void initAlarmManager(final AlarmManager am, final Handler alarmHandler) { @@ -10126,7 +10132,7 @@ public class ConnectivityServiceTest { // A connected VPN should have interface rules set up. There are two expected invocations, // one during the VPN initial connection, one during the VPN LinkProperties update. ArgumentCaptor<int[]> uidCaptor = ArgumentCaptor.forClass(int[].class); - verify(mMockNetd, times(2)).firewallAddUidInterfaceRules(eq("tun0"), uidCaptor.capture()); + verify(mBpfNetMaps, times(2)).addUidInterfaceRules(eq("tun0"), uidCaptor.capture()); assertContainsExactly(uidCaptor.getAllValues().get(0), APP1_UID, APP2_UID); assertContainsExactly(uidCaptor.getAllValues().get(1), APP1_UID, APP2_UID); assertTrue(mService.mPermissionMonitor.getVpnUidRanges("tun0").equals(vpnRange)); @@ -10135,7 +10141,7 @@ public class ConnectivityServiceTest { waitForIdle(); // Disconnected VPN should have interface rules removed - verify(mMockNetd).firewallRemoveUidInterfaceRules(uidCaptor.capture()); + verify(mBpfNetMaps).removeUidInterfaceRules(uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); assertNull(mService.mPermissionMonitor.getVpnUidRanges("tun0")); } @@ -10152,7 +10158,7 @@ public class ConnectivityServiceTest { assertVpnUidRangesUpdated(true, vpnRange, Process.SYSTEM_UID); // Legacy VPN should not have interface rules set up - verify(mMockNetd, never()).firewallAddUidInterfaceRules(any(), any()); + verify(mBpfNetMaps, never()).addUidInterfaceRules(any(), any()); } @Test @@ -10168,7 +10174,7 @@ public class ConnectivityServiceTest { assertVpnUidRangesUpdated(true, vpnRange, Process.SYSTEM_UID); // IPv6 unreachable route should not be misinterpreted as a default route - verify(mMockNetd, never()).firewallAddUidInterfaceRules(any(), any()); + verify(mBpfNetMaps, never()).addUidInterfaceRules(any(), any()); } @Test @@ -10185,33 +10191,33 @@ public class ConnectivityServiceTest { // Connected VPN should have interface rules set up. There are two expected invocations, // one during VPN uid update, one during VPN LinkProperties update ArgumentCaptor<int[]> uidCaptor = ArgumentCaptor.forClass(int[].class); - verify(mMockNetd, times(2)).firewallAddUidInterfaceRules(eq("tun0"), uidCaptor.capture()); + verify(mBpfNetMaps, times(2)).addUidInterfaceRules(eq("tun0"), uidCaptor.capture()); assertContainsExactly(uidCaptor.getAllValues().get(0), APP1_UID, APP2_UID); assertContainsExactly(uidCaptor.getAllValues().get(1), APP1_UID, APP2_UID); - reset(mMockNetd); - InOrder inOrder = inOrder(mMockNetd); + reset(mBpfNetMaps); + InOrder inOrder = inOrder(mBpfNetMaps); lp.setInterfaceName("tun1"); mMockVpn.sendLinkProperties(lp); waitForIdle(); // VPN handover (switch to a new interface) should result in rules being updated (old rules // removed first, then new rules added) - inOrder.verify(mMockNetd).firewallRemoveUidInterfaceRules(uidCaptor.capture()); + inOrder.verify(mBpfNetMaps).removeUidInterfaceRules(uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); - inOrder.verify(mMockNetd).firewallAddUidInterfaceRules(eq("tun1"), uidCaptor.capture()); + inOrder.verify(mBpfNetMaps).addUidInterfaceRules(eq("tun1"), uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); - reset(mMockNetd); + reset(mBpfNetMaps); lp = new LinkProperties(); lp.setInterfaceName("tun1"); lp.addRoute(new RouteInfo(new IpPrefix("192.0.2.0/24"), null, "tun1")); mMockVpn.sendLinkProperties(lp); waitForIdle(); // VPN not routing everything should no longer have interface filtering rules - verify(mMockNetd).firewallRemoveUidInterfaceRules(uidCaptor.capture()); + verify(mBpfNetMaps).removeUidInterfaceRules(uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); - reset(mMockNetd); + reset(mBpfNetMaps); lp = new LinkProperties(); lp.setInterfaceName("tun1"); lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), RTN_UNREACHABLE)); @@ -10219,7 +10225,7 @@ public class ConnectivityServiceTest { mMockVpn.sendLinkProperties(lp); waitForIdle(); // Back to routing all IPv6 traffic should have filtering rules - verify(mMockNetd).firewallAddUidInterfaceRules(eq("tun1"), uidCaptor.capture()); + verify(mBpfNetMaps).addUidInterfaceRules(eq("tun1"), uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); } @@ -10248,8 +10254,8 @@ public class ConnectivityServiceTest { mMockVpn.establish(lp, VPN_UID, vpnRanges); assertVpnUidRangesUpdated(true, vpnRanges, VPN_UID); - reset(mMockNetd); - InOrder inOrder = inOrder(mMockNetd); + reset(mBpfNetMaps); + InOrder inOrder = inOrder(mBpfNetMaps); // Update to new range which is old range minus APP1, i.e. only APP2 final Set<UidRange> newRanges = new HashSet<>(asList( @@ -10260,9 +10266,9 @@ public class ConnectivityServiceTest { ArgumentCaptor<int[]> uidCaptor = ArgumentCaptor.forClass(int[].class); // Verify old rules are removed before new rules are added - inOrder.verify(mMockNetd).firewallRemoveUidInterfaceRules(uidCaptor.capture()); + inOrder.verify(mBpfNetMaps).removeUidInterfaceRules(uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP1_UID, APP2_UID); - inOrder.verify(mMockNetd).firewallAddUidInterfaceRules(eq("tun0"), uidCaptor.capture()); + inOrder.verify(mBpfNetMaps).addUidInterfaceRules(eq("tun0"), uidCaptor.capture()); assertContainsExactly(uidCaptor.getValue(), APP2_UID); } |
