diff --git a/thread/tests/integration/src/android/net/thread/BorderRoutingTest.java b/thread/tests/integration/src/android/net/thread/BorderRoutingTest.java index 9e8dc3a994..103282aca2 100644 --- a/thread/tests/integration/src/android/net/thread/BorderRoutingTest.java +++ b/thread/tests/integration/src/android/net/thread/BorderRoutingTest.java @@ -34,7 +34,6 @@ import static android.system.OsConstants.ICMP_ECHO; import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ECHO_REPLY_TYPE; import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ECHO_REQUEST_TYPE; -import static com.android.testutils.TestNetworkTrackerKt.initTestNetwork; import static com.android.testutils.TestPermissionUtil.runAsShell; import static com.google.common.truth.Truth.assertThat; @@ -49,11 +48,9 @@ import static java.util.Objects.requireNonNull; import android.content.Context; import android.net.IpPrefix; import android.net.LinkAddress; -import android.net.LinkProperties; -import android.net.MacAddress; -import android.net.RouteInfo; import android.net.thread.utils.FullThreadDevice; import android.net.thread.utils.InfraNetworkDevice; +import android.net.thread.utils.IntegrationTestUtils; import android.net.thread.utils.OtDaemonController; import android.net.thread.utils.ThreadFeatureCheckerRule; import android.net.thread.utils.ThreadFeatureCheckerRule.RequiresIpv6MulticastRouting; @@ -634,32 +631,16 @@ public class BorderRoutingTest { } private void setUpInfraNetwork() throws Exception { - LinkProperties lp = new LinkProperties(); - // NAT64 feature requires the infra network to have an IPv4 default route. - lp.addRoute( - new RouteInfo( - new IpPrefix("0.0.0.0/0") /* destination */, - null /* gateway */, - null, - RouteInfo.RTN_UNICAST, - 1500 /* mtu */)); - mInfraNetworkTracker = - runAsShell( - MANAGE_TEST_NETWORKS, - () -> initTestNetwork(mContext, lp, 5000 /* timeoutMs */)); - String infraNetworkName = mInfraNetworkTracker.getTestIface().getInterfaceName(); - mController.setTestNetworkAsUpstreamAndWait(infraNetworkName); + mInfraNetworkTracker = IntegrationTestUtils.setUpInfraNetwork(mContext, mController); } private void tearDownInfraNetwork() { - runAsShell(MANAGE_TEST_NETWORKS, () -> mInfraNetworkTracker.teardown()); + IntegrationTestUtils.tearDownInfraNetwork(mInfraNetworkTracker); } - private void startInfraDeviceAndWaitForOnLinkAddr() throws Exception { + private void startInfraDeviceAndWaitForOnLinkAddr() { mInfraDevice = - new InfraNetworkDevice(MacAddress.fromString("1:2:3:4:5:6"), mInfraNetworkReader); - mInfraDevice.runSlaac(Duration.ofSeconds(60)); - assertNotNull(mInfraDevice.ipv6Addr); + IntegrationTestUtils.startInfraDeviceAndWaitForOnLinkAddr(mInfraNetworkReader); } private void assertInfraLinkMemberOfGroup(Inet6Address address) throws Exception { diff --git a/thread/tests/integration/src/android/net/thread/utils/IntegrationTestUtils.kt b/thread/tests/integration/src/android/net/thread/utils/IntegrationTestUtils.kt index 484d3ab95e..fa9855e33f 100644 --- a/thread/tests/integration/src/android/net/thread/utils/IntegrationTestUtils.kt +++ b/thread/tests/integration/src/android/net/thread/utils/IntegrationTestUtils.kt @@ -550,4 +550,49 @@ object IntegrationTestUtils { deprecationTimeMillis, LinkAddress.LIFETIME_PERMANENT /* expirationTime */ ) } + + @JvmStatic + @JvmOverloads + fun startInfraDeviceAndWaitForOnLinkAddr( + tapPacketReader: TapPacketReader, + macAddress: MacAddress = MacAddress.fromString("1:2:3:4:5:6") + ): InfraNetworkDevice { + val infraDevice = InfraNetworkDevice(macAddress, tapPacketReader) + infraDevice.runSlaac(Duration.ofSeconds(60)) + requireNotNull(infraDevice.ipv6Addr) + return infraDevice + } + + @JvmStatic + @Throws(java.lang.Exception::class) + fun setUpInfraNetwork( + context: Context, controller: ThreadNetworkControllerWrapper + ): TestNetworkTracker { + val lp = LinkProperties() + + // TODO: use a fake DNS server + lp.setDnsServers(listOf(parseNumericAddress("8.8.8.8"))) + // NAT64 feature requires the infra network to have an IPv4 default route. + lp.addRoute( + RouteInfo( + IpPrefix("0.0.0.0/0") /* destination */, + null /* gateway */, + null /* iface */, + RouteInfo.RTN_UNICAST, 1500 /* mtu */ + ) + ) + val infraNetworkTracker: TestNetworkTracker = + runAsShell( + MANAGE_TEST_NETWORKS, + supplier = { initTestNetwork(context, lp, setupTimeoutMs = 5000) }) + val infraNetworkName: String = infraNetworkTracker.testIface.getInterfaceName() + controller.setTestNetworkAsUpstreamAndWait(infraNetworkName) + + return infraNetworkTracker + } + + @JvmStatic + fun tearDownInfraNetwork(testNetworkTracker: TestNetworkTracker) { + runAsShell(MANAGE_TEST_NETWORKS) { testNetworkTracker.teardown() } + } }