From f256a043b27a17522dd9d1e6ac02384246f1d24e Mon Sep 17 00:00:00 2001 From: Junyu Lai Date: Thu, 10 Nov 2022 16:01:11 +0800 Subject: [PATCH] Use eventually expect to wait for blocked status change While the test case was running, if the network condition changes, e.g. IPv6 RA received, the test case would fail since unexpected LinkPropertiesChanged event was received, while blockedStatusChanged event was expected. Make the test wait for the expected event and ignore others to make the test more robust. Test: atest android.net.cts.ConnectivityManagerTest#testBlockedStatusCallback \ --rerun-until-failure 100 Fix: 242833720 Change-Id: Ic3cd47773955d27445511dbd94733f91e3037596 --- .../android/net/cts/ConnectivityManagerTest.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java index 8dbcc0032d..4a2e9ec26e 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java @@ -2348,8 +2348,9 @@ public class ConnectivityManagerTest { super.expectAvailableCallbacks(network, false /* suspended */, true /* validated */, BLOCKED_REASON_NONE, NETWORK_CALLBACK_TIMEOUT_MS); } - public void expectBlockedStatusCallback(Network network, int blockedStatus) { - super.expectBlockedStatusCallback(blockedStatus, network, NETWORK_CALLBACK_TIMEOUT_MS); + public void eventuallyExpectBlockedStatusCallback(Network network, int blockedStatus) { + super.eventuallyExpect(CallbackEntry.BLOCKED_STATUS_INT, NETWORK_CALLBACK_TIMEOUT_MS, + (it) -> it.getNetwork().equals(network) && it.getBlocked() == blockedStatus); } public void onBlockedStatusChanged(Network network, int blockedReasons) { getHistory().add(new CallbackEntry.BlockedStatusInt(network, blockedReasons)); @@ -2394,12 +2395,14 @@ public class ConnectivityManagerTest { final Range otherUidRange = new Range<>(otherUid, otherUid); setRequireVpnForUids(true, List.of(myUidRange)); - myUidCallback.expectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_LOCKDOWN_VPN); + myUidCallback.eventuallyExpectBlockedStatusCallback(defaultNetwork, + BLOCKED_REASON_LOCKDOWN_VPN); otherUidCallback.assertNoBlockedStatusCallback(); setRequireVpnForUids(true, List.of(myUidRange, otherUidRange)); myUidCallback.assertNoBlockedStatusCallback(); - otherUidCallback.expectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_LOCKDOWN_VPN); + otherUidCallback.eventuallyExpectBlockedStatusCallback(defaultNetwork, + BLOCKED_REASON_LOCKDOWN_VPN); // setRequireVpnForUids does no deduplication or refcounting. Removing myUidRange does not // unblock myUid because it was added to the blocked ranges twice. @@ -2408,8 +2411,8 @@ public class ConnectivityManagerTest { otherUidCallback.assertNoBlockedStatusCallback(); setRequireVpnForUids(false, List.of(myUidRange, otherUidRange)); - myUidCallback.expectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_NONE); - otherUidCallback.expectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_NONE); + myUidCallback.eventuallyExpectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_NONE); + otherUidCallback.eventuallyExpectBlockedStatusCallback(defaultNetwork, BLOCKED_REASON_NONE); myUidCallback.assertNoBlockedStatusCallback(); otherUidCallback.assertNoBlockedStatusCallback();