ethernet: add test for removing interface while in server mode
Bug: 236892130
Bug: 252963267
Test: atest EthernetManagerTest#testRemoveInterface_whileInServerMode
Change-Id: I3ca71cd87301da8e96d31f7632b69d318ee97d4a
(cherry picked from commit f34945bf6f7e1db2b4361f4938f5d2a35bc23707)
Merged-In: I3ca71cd87301da8e96d31f7632b69d318ee97d4a
diff --git a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt
index 5dbdd8a..c590bd7 100644
--- a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt
+++ b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt
@@ -74,6 +74,7 @@
import java.net.Inet6Address
import java.util.concurrent.CompletableFuture
import java.util.concurrent.ExecutionException
+import java.util.concurrent.TimeoutException
import java.util.concurrent.TimeUnit
import java.util.function.IntConsumer
import kotlin.test.assertEquals
@@ -403,6 +404,21 @@
}
}
+ private fun assumeNoInterfaceForTetheringAvailable() {
+ // Interfaces that have configured NetworkCapabilities will never be used for tethering,
+ // see aosp/2123900.
+ try {
+ // assumeException does not exist.
+ requestTetheredInterface().expectOnAvailable()
+ // interface used for tethering is available, throw an assumption error.
+ assumeTrue(false)
+ } catch (e: TimeoutException) {
+ // do nothing -- the TimeoutException indicates that no interface is available for
+ // tethering.
+ releaseTetheredInterface()
+ }
+ }
+
// TODO: this function is now used in two places (EthernetManagerTest and
// EthernetTetheringTest), so it should be moved to testutils.
private fun isAdbOverNetwork(): Boolean {
@@ -414,6 +430,7 @@
@Test
fun testCallbacks_forServerModeInterfaces() {
// do not run this test when adb might be connected over ethernet.
+ // TODO: Consider using assumeNoInterfaceForTetheringAvailable() instead, so this runs on CF
assumeFalse(isAdbOverNetwork())
val listener = EthernetStateListener()