From 00b45fc970eb1f2b5940ad218066fa34c01bbd97 Mon Sep 17 00:00:00 2001 From: Mark Chien Date: Tue, 26 Mar 2024 06:31:34 +0000 Subject: [PATCH] Add a test to catch wifi tethering no upstream bug If P2P is enabled first then turn on wifi tethering, it doesn't have upstream. Bug: 329552689 Test: atest TetheringTests Change-Id: Ia39031167a3cf7751ae549ea5ce147cb9cb87607 --- .../networkstack/tethering/TetheringTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java b/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java index 750bfce951..f01e1bbd4d 100644 --- a/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java +++ b/Tethering/tests/unit/src/com/android/networkstack/tethering/TetheringTest.java @@ -3622,6 +3622,43 @@ public class TetheringTest { InetAddresses.parseNumericAddress(ifaceConfig.ipv4Addr), ifaceConfig.prefixLength); assertFalse(sapPrefix.equals(lohsPrefix)); } + + @Test + public void testWifiTetheringWhenP2pActive() throws Exception { + initTetheringOnTestThread(); + // Enable wifi P2P. + sendWifiP2pConnectionChanged(true, true, TEST_P2P_IFNAME); + verifyInterfaceServingModeStarted(TEST_P2P_IFNAME); + verifyTetheringBroadcast(TEST_P2P_IFNAME, EXTRA_AVAILABLE_TETHER); + verifyTetheringBroadcast(TEST_P2P_IFNAME, EXTRA_ACTIVE_LOCAL_ONLY); + verify(mUpstreamNetworkMonitor).startObserveAllNetworks(); + // Verify never enable upstream if only P2P active. + verify(mUpstreamNetworkMonitor, never()).setTryCell(true); + assertEquals(TETHER_ERROR_NO_ERROR, mTethering.getLastErrorForTest(TEST_P2P_IFNAME)); + + when(mWifiManager.startTetheredHotspot(any())).thenReturn(true); + // Emulate pressing the WiFi tethering button. + mTethering.startTethering(createTetheringRequestParcel(TETHERING_WIFI), TEST_CALLER_PKG, + null); + mLooper.dispatchAll(); + verify(mWifiManager).startTetheredHotspot(null); + verifyNoMoreInteractions(mWifiManager); + + mTethering.interfaceStatusChanged(TEST_WLAN_IFNAME, true); + sendWifiApStateChanged(WIFI_AP_STATE_ENABLED, TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED); + + verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER); + verify(mWifiManager).updateInterfaceIpState( + TEST_WLAN_IFNAME, WifiManager.IFACE_IP_MODE_UNSPECIFIED); + + verify(mWifiManager).updateInterfaceIpState(TEST_WLAN_IFNAME, IFACE_IP_MODE_TETHERED); + verifyNoMoreInteractions(mWifiManager); + + verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_ACTIVE_TETHER); + // FIXME: wifi tethering doesn't have upstream when P2P is enabled. + verify(mUpstreamNetworkMonitor, never()).setTryCell(true); + } + // TODO: Test that a request for hotspot mode doesn't interfere with an // already operating tethering mode interface. }