diff options
Diffstat (limited to 'tests')
6 files changed, 74 insertions, 54 deletions
diff --git a/tests/net/Android.mk b/tests/net/Android.mk index f6f35fdadcd1..685067377166 100644 --- a/tests/net/Android.mk +++ b/tests/net/Android.mk @@ -54,6 +54,7 @@ LOCAL_JNI_SHARED_LIBRARIES := \ libnativehelper \ libpackagelistparser \ libpcre2 \ + libprocessgroup \ libselinux \ libui \ libutils \ diff --git a/tests/net/java/android/net/ip/IpClientTest.java b/tests/net/java/android/net/ip/IpClientTest.java index a2dcfef50a49..7a83757aa262 100644 --- a/tests/net/java/android/net/ip/IpClientTest.java +++ b/tests/net/java/android/net/ip/IpClientTest.java @@ -122,13 +122,14 @@ public class IpClientTest { private IpClient makeIpClient(String ifname) throws Exception { setTestInterfaceParams(ifname); final IpClient ipc = new IpClient(mContext, ifname, mCb, mDependecies); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).disableIpv6(ifname); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).clearInterfaceAddresses(ifname); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceSetEnableIPv6(ifname, false); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceClearAddrs(ifname); ArgumentCaptor<BaseNetworkObserver> arg = ArgumentCaptor.forClass(BaseNetworkObserver.class); verify(mNMService, times(1)).registerObserver(arg.capture()); mObserver = arg.getValue(); reset(mNMService); + reset(mNetd); // Verify IpClient doesn't call onLinkPropertiesChange() when it starts. verify(mCb, never()).onLinkPropertiesChange(any()); reset(mCb); @@ -200,8 +201,8 @@ public class IpClientTest { verify(mCb, never()).onProvisioningFailure(any()); ipc.shutdown(); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).disableIpv6(iface); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).clearInterfaceAddresses(iface); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceSetEnableIPv6(iface, false); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceClearAddrs(iface); verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)) .onLinkPropertiesChange(eq(makeEmptyLinkProperties(iface))); } @@ -251,8 +252,8 @@ public class IpClientTest { verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)).onProvisioningSuccess(eq(want)); ipc.shutdown(); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).disableIpv6(iface); - verify(mNMService, timeout(TEST_TIMEOUT_MS).times(1)).clearInterfaceAddresses(iface); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceSetEnableIPv6(iface, false); + verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceClearAddrs(iface); verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)) .onLinkPropertiesChange(eq(makeEmptyLinkProperties(iface))); } diff --git a/tests/net/java/android/net/ip/IpServerTest.java b/tests/net/java/android/net/ip/IpServerTest.java index c3162af1868d..80aac047a723 100644 --- a/tests/net/java/android/net/ip/IpServerTest.java +++ b/tests/net/java/android/net/ip/IpServerTest.java @@ -33,6 +33,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; @@ -47,6 +48,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; +import android.net.INetd; import android.net.INetworkStatsService; import android.net.InterfaceConfiguration; import android.net.IpPrefix; @@ -92,6 +94,7 @@ public class IpServerTest { private static final int MAKE_DHCPSERVER_TIMEOUT_MS = 1000; @Mock private INetworkManagementService mNMService; + @Mock private INetd mNetd; @Mock private INetworkStatsService mStatsService; @Mock private IpServer.Callback mCallback; @Mock private InterfaceConfiguration mInterfaceConfiguration; @@ -112,16 +115,6 @@ public class IpServerTest { } private void initStateMachine(int interfaceType, boolean usingLegacyDhcp) throws Exception { - mIpServer = new IpServer( - IFACE_NAME, mLooper.getLooper(), interfaceType, mSharedLog, - mNMService, mStatsService, mCallback, usingLegacyDhcp, mDependencies); - mIpServer.start(); - // Starting the state machine always puts us in a consistent state and notifies - // the rest of the world that we've changed from an unknown to available state. - mLooper.dispatchAll(); - reset(mNMService, mStatsService, mCallback); - when(mNMService.getInterfaceConfig(IFACE_NAME)).thenReturn(mInterfaceConfiguration); - doAnswer(inv -> { final IDhcpServerCallbacks cb = inv.getArgument(2); new Thread(() -> { @@ -135,6 +128,17 @@ public class IpServerTest { }).when(mDependencies).makeDhcpServer(any(), mDhcpParamsCaptor.capture(), any()); when(mDependencies.getRouterAdvertisementDaemon(any())).thenReturn(mRaDaemon); when(mDependencies.getInterfaceParams(IFACE_NAME)).thenReturn(TEST_IFACE_PARAMS); + when(mDependencies.getNetdService()).thenReturn(mNetd); + + mIpServer = new IpServer( + IFACE_NAME, mLooper.getLooper(), interfaceType, mSharedLog, + mNMService, mStatsService, mCallback, usingLegacyDhcp, mDependencies); + mIpServer.start(); + // Starting the state machine always puts us in a consistent state and notifies + // the rest of the world that we've changed from an unknown to available state. + mLooper.dispatchAll(); + reset(mNMService, mStatsService, mCallback); + when(mNMService.getInterfaceConfig(IFACE_NAME)).thenReturn(mInterfaceConfiguration); when(mRaDaemon.start()).thenReturn(true); } @@ -223,9 +227,9 @@ public class IpServerTest { initTetheredStateMachine(TETHERING_BLUETOOTH, null); dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED); - InOrder inOrder = inOrder(mNMService, mStatsService, mCallback); + InOrder inOrder = inOrder(mNMService, mNetd, mStatsService, mCallback); inOrder.verify(mNMService).untetherInterface(IFACE_NAME); - inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any()); + inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg -> IFACE_NAME.equals(cfg.ifName))); inOrder.verify(mCallback).updateInterfaceState( mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); inOrder.verify(mCallback).updateLinkProperties( @@ -318,12 +322,12 @@ public class IpServerTest { initTetheredStateMachine(TETHERING_BLUETOOTH, UPSTREAM_IFACE); dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED); - InOrder inOrder = inOrder(mNMService, mStatsService, mCallback); + InOrder inOrder = inOrder(mNMService, mNetd, mStatsService, mCallback); inOrder.verify(mStatsService).forceUpdate(); inOrder.verify(mNMService).stopInterfaceForwarding(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).disableNat(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).untetherInterface(IFACE_NAME); - inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any()); + inOrder.verify(mNetd).interfaceSetCfg(argThat(cfg -> IFACE_NAME.equals(cfg.ifName))); inOrder.verify(mCallback).updateInterfaceState( mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); inOrder.verify(mCallback).updateLinkProperties( diff --git a/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java b/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java index 6f711c0b5743..b6d01dbc1cac 100644 --- a/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java +++ b/tests/net/java/android/net/shared/LinkPropertiesParcelableUtilTest.java @@ -48,61 +48,52 @@ public class LinkPropertiesParcelableUtilTest { private LinkProperties mLinkProperties; private static final String TEST_LINKPROPS_IFACE = "TEST_IFACE"; - private static final String TEST_STACKED_LINK_1_IFACE = "TEST_STACKED_IFACE_1"; - private static final String TEST_STACKED_LINK_2_IFACE = "TEST_STACKED_IFACE_2"; @Before public void setUp() { - mLinkProperties = makeLinkProperties(TEST_LINKPROPS_IFACE); - mLinkProperties.addStackedLink(makeLinkProperties(TEST_STACKED_LINK_1_IFACE)); - mLinkProperties.addStackedLink(makeLinkProperties(TEST_STACKED_LINK_2_IFACE)); - } - - private static LinkProperties makeLinkProperties(String iface) { - final LinkProperties lp = new LinkProperties(); - lp.setInterfaceName(iface); - lp.setLinkAddresses(Arrays.asList( + mLinkProperties = new LinkProperties(); + mLinkProperties.setInterfaceName(TEST_LINKPROPS_IFACE); + mLinkProperties.setLinkAddresses(Arrays.asList( new LinkAddress(InetAddresses.parseNumericAddress("192.168.0.42"), 16), new LinkAddress(InetAddresses.parseNumericAddress("2001:db8::7"), 42))); - lp.setDnsServers(Arrays.asList( + mLinkProperties.setDnsServers(Arrays.asList( InetAddresses.parseNumericAddress("2001:db8::42"), InetAddresses.parseNumericAddress("192.168.1.1") )); - lp.setValidatedPrivateDnsServers(Arrays.asList( + mLinkProperties.setValidatedPrivateDnsServers(Arrays.asList( InetAddresses.parseNumericAddress("2001:db8::43"), InetAddresses.parseNumericAddress("192.168.42.43") )); - lp.setPcscfServers(Arrays.asList( + mLinkProperties.setPcscfServers(Arrays.asList( InetAddresses.parseNumericAddress("2001:db8::47"), InetAddresses.parseNumericAddress("192.168.42.47") )); - lp.setUsePrivateDns(true); - lp.setPrivateDnsServerName("test.example.com"); - lp.setDomains("test1.example.com,test2.example.com"); - lp.addRoute(new RouteInfo( + mLinkProperties.setUsePrivateDns(true); + mLinkProperties.setPrivateDnsServerName("test.example.com"); + mLinkProperties.setDomains("test1.example.com,test2.example.com"); + mLinkProperties.addRoute(new RouteInfo( new IpPrefix(InetAddresses.parseNumericAddress("2001:db8::44"), 45), InetAddresses.parseNumericAddress("2001:db8::45"), - iface, + TEST_LINKPROPS_IFACE, RouteInfo.RTN_UNICAST )); - lp.addRoute(new RouteInfo( + mLinkProperties.addRoute(new RouteInfo( new IpPrefix(InetAddresses.parseNumericAddress("192.168.44.45"), 16), InetAddresses.parseNumericAddress("192.168.45.1"), - iface, + TEST_LINKPROPS_IFACE, RouteInfo.RTN_THROW )); - lp.setHttpProxy(new ProxyInfo("test3.example.com", 8000, + mLinkProperties.setHttpProxy(new ProxyInfo("test3.example.com", 8000, "excl1.example.com,excl2.example.com")); - lp.setMtu(5000); - lp.setTcpBufferSizes("1,2,3,4,5,6"); - lp.setNat64Prefix(new IpPrefix(InetAddresses.parseNumericAddress("2001:db8::48"), 96)); + mLinkProperties.setMtu(5000); + mLinkProperties.setTcpBufferSizes("1,2,3,4,5,6"); + mLinkProperties.setNat64Prefix( + new IpPrefix(InetAddresses.parseNumericAddress("2001:db8::48"), 96)); // Verify that this test does not miss any new field added later. // If any added field is not included in LinkProperties#equals, assertLinkPropertiesEquals // must also be updated. assertFieldCountEquals(14, LinkProperties.class); - - return lp; } @Test @@ -186,7 +177,7 @@ public class LinkPropertiesParcelableUtilTest { private static void assertLinkPropertiesEquals(LinkProperties expected, LinkProperties actual) { assertEquals(expected, actual); - // LinkProperties equals() does not include stacked links - assertEquals(expected.getStackedLinks(), actual.getStackedLinks()); + // Equality on stacked links is not tested as they should not be passed to processes using + // LinkPropertiesParcelable. } } diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java index 1ea83c2bbb6b..b6356076db60 100644 --- a/tests/net/java/com/android/server/connectivity/TetheringTest.java +++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java @@ -803,13 +803,14 @@ public class TetheringTest { sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED); mLooper.dispatchAll(); - // We verify get/set called thrice here: once for setup and twice during - // teardown because all events happen over the course of the single + // We verify get/set called thrice here: twice for setup (on NMService) and once during + // teardown (on Netd) because all events happen over the course of the single // dispatchAll() above. Note that once the IpServer IPv4 address config // code is refactored the two calls during shutdown will revert to one. verify(mNMService, times(2)).getInterfaceConfig(TEST_WLAN_IFNAME); - verify(mNMService, times(3)) + verify(mNMService, times(2)) .setInterfaceConfig(eq(TEST_WLAN_IFNAME), any(InterfaceConfiguration.class)); + verify(mNetd, times(1)).interfaceSetCfg(argThat(p -> TEST_WLAN_IFNAME.equals(p.ifName))); verify(mNMService, times(1)).tetherInterface(TEST_WLAN_IFNAME); verify(mWifiManager).updateInterfaceIpState( TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_TETHERED); diff --git a/tests/net/java/com/android/server/connectivity/VpnTest.java b/tests/net/java/com/android/server/connectivity/VpnTest.java index 9bf758797ed2..0b74d878f069 100644 --- a/tests/net/java/com/android/server/connectivity/VpnTest.java +++ b/tests/net/java/com/android/server/connectivity/VpnTest.java @@ -57,7 +57,6 @@ import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; import android.content.res.Resources; import android.net.ConnectivityManager; -import android.net.IConnectivityManager; import android.net.IpPrefix; import android.net.LinkProperties; import android.net.Network; @@ -97,7 +96,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -240,6 +238,30 @@ public class VpnTest { } @Test + public void testGetAlwaysAndOnGetLockDown() throws Exception { + final Vpn vpn = createVpn(primaryUser.id); + + // Default state. + assertFalse(vpn.getAlwaysOn()); + assertFalse(vpn.getLockdown()); + + // Set always-on without lockdown. + assertTrue(vpn.setAlwaysOnPackage(PKGS[1], false)); + assertTrue(vpn.getAlwaysOn()); + assertFalse(vpn.getLockdown()); + + // Set always-on with lockdown. + assertTrue(vpn.setAlwaysOnPackage(PKGS[1], true)); + assertTrue(vpn.getAlwaysOn()); + assertTrue(vpn.getLockdown()); + + // Remove always-on configuration. + assertTrue(vpn.setAlwaysOnPackage(null, false)); + assertFalse(vpn.getAlwaysOn()); + assertFalse(vpn.getLockdown()); + } + + @Test public void testLockdownChangingPackage() throws Exception { final Vpn vpn = createVpn(primaryUser.id); final UidRange user = UidRange.createForUser(primaryUser.id); |