From dde7a3317310f4fc5be726cde168573346240502 Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Fri, 29 Jul 2022 11:05:57 +0100 Subject: [PATCH] wait-for-broadcast-idle before stopUser in UserLifecycleTests. Stopping a user heavily depends on broadcast queue, and that gets crowded after user creation and switches. Which leads to a timeout on stopping user. This CL makes sure broadcast queue is idle before stopping a user, to prevent the timeout. Bug: 200217686 Test: atest MultiUserPerfTests:android.multiuser.UserLifecycleTests --no-bazel-mode Change-Id: Ic08933212d1e4c8f4966cf1c86b9083b708fcd51 --- .../src/android/multiuser/UserLifecycleTests.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java index 448ee6160ce08..40a3c92925745 100644 --- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java +++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java @@ -316,6 +316,8 @@ public class UserLifecycleTests { mIam.startUserInBackground(userId); }, Intent.ACTION_USER_STARTED, Intent.ACTION_MEDIA_MOUNTED); + waitForBroadcastIdle(); + mRunner.resumeTiming(); Log.i(TAG, "Starting timer"); @@ -678,6 +680,8 @@ public class UserLifecycleTests { } private void stopUser(int userId, boolean force) throws RemoteException { + waitForBroadcastIdle(); + final CountDownLatch latch = new CountDownLatch(1); mIam.stopUser(userId, force /* force */, new IStopUserCallback.Stub() { @Override @@ -882,4 +886,8 @@ public class UserLifecycleTests { assertEquals("", ShellHelper.runShellCommand("setprop " + name + " " + value)); return oldValue; } + + private void waitForBroadcastIdle() { + ShellHelper.runShellCommand("am wait-for-broadcast-idle"); + } }