From ea4d25a7504466362317d99deb9d9b20014e2e69 Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Thu, 1 Apr 2021 06:23:55 +0000 Subject: [PATCH] Fix testLegacyLockdownVpn flaky When WiFi disconnects, the VPN disconnects immediately. The broadcast can therefore be sent before the broadcast receiver is registered, which causes the receiver to not see the broadcast. The puzzling part is that CONNECTIVITY_ACTION is a sticky broadcast, so one would expect the broadcast to still be received, even if the registration is done after the broadcast is sent. The reason this doesn't happen is that the context used by the test is a BroadcastInterceptingContext, which does not treat sticky broadcasts as sticky. Bug: 184115648 Test: atest --iterations 1000 'ConnectivityServiceTest#testLegacyLockdownVpn' Change-Id: Ib44c92839d25951cc7d2db0f923e1b104690e1e0 --- tests/net/java/com/android/server/ConnectivityServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 14c72f1445a97..ad934204c4bd1 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -8133,12 +8133,12 @@ public class ConnectivityServiceTest { assertExtraInfoFromCmPresent(mWiFiNetworkAgent); b1 = expectConnectivityAction(TYPE_WIFI, DetailedState.DISCONNECTED); + b2 = expectConnectivityAction(TYPE_VPN, DetailedState.DISCONNECTED); mWiFiNetworkAgent.disconnect(); callback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent); systemDefaultCallback.expectCallback(CallbackEntry.LOST, mWiFiNetworkAgent); b1.expectBroadcast(); callback.expectCapabilitiesThat(mMockVpn, nc -> !nc.hasTransport(TRANSPORT_WIFI)); - b2 = expectConnectivityAction(TYPE_VPN, DetailedState.DISCONNECTED); mMockVpn.expectStopVpnRunnerPrivileged(); callback.expectCallback(CallbackEntry.LOST, mMockVpn); b2.expectBroadcast();