Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57908d9f authored by Bookatz's avatar Bookatz
Browse files

MultiUserPerfTest - test restart profile

Creates a profile, starts it, stops it, then restarts it, timing how
long the restart takes. This gives an indication of how long it takes to
start a previously-initialized profile, and mimics toggling
setQuietModeEnabled.

Right now, this process is especially slow due to
RoleManagerService.onStartUser(), so it is worthwhile tracking this.

Bug: 129415917
Test: atest  android.multiuser.UserLifecycleTests#managedProfileUnlock_stopped
Change-Id: Ic7f3bdb6fa7daaab53cb23dbf8e8a68e293d23b2
parent b0ee8019
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -188,6 +188,34 @@ public class UserLifecycleTests {
        }
    }

    /** Tests starting an already-created, but no-longer-running, profile. */
    @Test
    public void managedProfileUnlock_stopped() throws Exception {
        while (mRunner.keepRunning()) {
            mRunner.pauseTiming();
            final UserInfo userInfo = mUm.createProfileForUser("TestUser",
                    UserInfo.FLAG_MANAGED_PROFILE, mAm.getCurrentUser());
            // Start the profile initially, then stop it. Similar to setQuietModeEnabled.
            final CountDownLatch latch1 = new CountDownLatch(1);
            registerBroadcastReceiver(Intent.ACTION_USER_UNLOCKED, latch1, userInfo.id);
            mIam.startUserInBackground(userInfo.id);
            latch1.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS);
            stopUser(userInfo.id, true);

            // Now we restart the profile.
            final CountDownLatch latch2 = new CountDownLatch(1);
            registerBroadcastReceiver(Intent.ACTION_USER_UNLOCKED, latch2, userInfo.id);
            mRunner.resumeTiming();

            mIam.startUserInBackground(userInfo.id);
            latch2.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS);

            mRunner.pauseTiming();
            removeUser(userInfo.id);
            mRunner.resumeTiming();
        }
    }

    @Test
    public void ephemeralUserStopped() throws Exception {
        while (mRunner.keepRunning()) {