From 5dad137ec1df8c30047222c9c956828229e6dc95 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 14c72f1445..ad934204c4 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();