From f848c6c68936600be29ee7adc8f9b18f51563799 Mon Sep 17 00:00:00 2001 From: Patrick Rohr Date: Fri, 21 Jul 2023 15:39:32 -0700 Subject: [PATCH 1/2] ethernet: test adding listener after removing server mode iface Tests that registering a EthernetStateListener functions as expected after requesting a tethering interface and subsequently removing that interface. Test: atest testCallbacks_afterRemovingServerModeInterface Bug: 290971780 Change-Id: I7b6e1a3b3ac23f4fbdd2d20f63f83d59c4d4999d --- .../net/src/android/net/cts/EthernetManagerTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt index 7fe9299b8e..706f3e88b4 100644 --- a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt +++ b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt @@ -667,6 +667,20 @@ class EthernetManagerTest { listener.expectCallback(iface, STATE_LINK_UP, ROLE_CLIENT) } + @Test + fun testCallbacks_afterRemovingServerModeInterface() { + // do not run this test if an interface that can be used for tethering already exists. + assumeNoInterfaceForTetheringAvailable() + + val iface = createInterface() + requestTetheredInterface().expectOnAvailable() + removeInterface(iface) + + val listener = EthernetStateListener() + addInterfaceStateListener(listener) + listener.assertNoCallback() + } + @Test fun testGetInterfaceList() { // Create two test interfaces and check the return list contains the interface names. From f454f89354e00fafd4d55d1e9d148733e77669c9 Mon Sep 17 00:00:00 2001 From: Patrick Rohr Date: Wed, 9 Aug 2023 06:51:51 -0700 Subject: [PATCH 2/2] ethernet: clean up EthernetManagerTest createChangeEvent is not expected to be called from a test, so make it private. Also delete pollOrThrow as polling inline creates a better log output. Test: atest EthernetManagerTest Change-Id: I2399960fee2c51fdf340186189ae83a20c4ac6f3 --- tests/cts/net/src/android/net/cts/EthernetManagerTest.kt | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt index 706f3e88b4..3146b4190c 100644 --- a/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt +++ b/tests/cts/net/src/android/net/cts/EthernetManagerTest.kt @@ -92,7 +92,6 @@ import kotlin.test.assertFalse import kotlin.test.assertNotNull import kotlin.test.assertNull import kotlin.test.assertTrue -import kotlin.test.fail import org.junit.After import org.junit.Assume.assumeFalse import org.junit.Assume.assumeTrue @@ -254,7 +253,7 @@ class EthernetManagerTest { } fun expectCallback(expected: T): T { - val event = pollOrThrow() + val event = events.poll(TIMEOUT_MS) assertEquals(expected, event) return event as T } @@ -267,14 +266,10 @@ class EthernetManagerTest { expectCallback(EthernetStateChanged(state)) } - fun createChangeEvent(iface: String, state: Int, role: Int) = + private fun createChangeEvent(iface: String, state: Int, role: Int) = InterfaceStateChanged(iface, state, role, if (state != STATE_ABSENT) DEFAULT_IP_CONFIGURATION else null) - fun pollOrThrow(): CallbackEntry { - return events.poll(TIMEOUT_MS) ?: fail("Did not receive callback after ${TIMEOUT_MS}ms") - } - fun eventuallyExpect(expected: CallbackEntry) { val cb = events.poll(TIMEOUT_MS) { it == expected } assertNotNull(cb, "Never received expected $expected. Received: ${events.backtrace()}")