Support initTestNetwork with LinkProperties
This is the follow CL to fix the comment from
https://android-review.googlesource.com/c/platform/frameworks/libs/net/+/1810276/3/common/testutils/devicetests/com/android/testutils/TestNetworkTracker.kt#45
TestNetworkService only default configure interface name, link addresses,
and routing. To support specify some configuration (e.g. dns server) which
TestNetworkService doesn't default configuration, extend iniTestNetwork
pass LinkProperties.
Bug: 183166581
Test: atest EthernetTetheringTest
atest ConnectivityManagerTest
atest TetheringModuleTest
atest CaptivePortalLoginActivityTest
Change-Id: I560d95516159fa05007057614ac47591fbb3a08c
diff --git a/staticlibs/testutils/devicetests/com/android/testutils/TestNetworkTracker.kt b/staticlibs/testutils/devicetests/com/android/testutils/TestNetworkTracker.kt
index 40731ea..bdea6c7 100644
--- a/staticlibs/testutils/devicetests/com/android/testutils/TestNetworkTracker.kt
+++ b/staticlibs/testutils/devicetests/com/android/testutils/TestNetworkTracker.kt
@@ -23,6 +23,7 @@
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
+import android.net.LinkProperties
import android.net.TestNetworkInterface
import android.net.TestNetworkManager
import android.os.Binder
@@ -32,6 +33,7 @@
/**
* Create a test network based on a TUN interface with a LinkAddress.
+ * TODO: remove this function after fixing all the callers.
*
* This method will block until the test network is available. Requires
* [android.Manifest.permission.CHANGE_NETWORK_STATE] and
@@ -42,11 +44,13 @@
interfaceAddr: LinkAddress,
setupTimeoutMs: Long = 10_000L
): TestNetworkTracker {
- return initTestNetwork(context, listOf(interfaceAddr), setupTimeoutMs)
+ val lp = LinkProperties()
+ lp.addLinkAddress(interfaceAddr)
+ return initTestNetwork(context, lp, setupTimeoutMs)
}
/**
- * Create a test network based on a TUN interface with giving LinkAddress list.
+ * Create a test network based on a TUN interface
*
* This method will block until the test network is available. Requires
* [android.Manifest.permission.CHANGE_NETWORK_STATE] and
@@ -54,13 +58,14 @@
*/
fun initTestNetwork(
context: Context,
- linkAddrs: List<LinkAddress>,
+ lp: LinkProperties,
setupTimeoutMs: Long = 10_000L
): TestNetworkTracker {
val tnm = context.getSystemService(TestNetworkManager::class.java)
- val iface = if (isAtLeastS()) tnm.createTunInterface(linkAddrs)
- else tnm.createTunInterface(linkAddrs.toTypedArray())
- return TestNetworkTracker(context, iface, tnm, setupTimeoutMs)
+ val iface = if (isAtLeastS()) tnm.createTunInterface(lp.getLinkAddresses())
+ else tnm.createTunInterface(lp.getLinkAddresses().toTypedArray())
+ lp.setInterfaceName(iface.interfaceName)
+ return TestNetworkTracker(context, iface, tnm, lp, setupTimeoutMs)
}
/**
@@ -72,6 +77,7 @@
val context: Context,
val iface: TestNetworkInterface,
val tnm: TestNetworkManager,
+ val lp: LinkProperties,
setupTimeoutMs: Long
) {
private val cm = context.getSystemService(ConnectivityManager::class.java)
@@ -98,7 +104,7 @@
cm.requestNetwork(networkRequest, networkCallback)
try {
- tnm.setupTestNetwork(iface.interfaceName, binder)
+ tnm.setupTestNetwork(lp, true /* isMetered */, binder)
network = networkFuture.get(setupTimeoutMs, TimeUnit.MILLISECONDS)
} catch (e: Throwable) {
teardown()
@@ -112,4 +118,4 @@
cm.unregisterNetworkCallback(networkCallback)
tnm.teardownTestNetwork(network)
}
-}
\ No newline at end of file
+}