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

Commit b5c54ae0 authored by Chris Baron's avatar Chris Baron
Browse files

Remove flakyness in BugreportManagerServiceImplTest.

Changes to RoleManager are persisting between test runs (changes must be stored statically).

Ran BugreportManagerServiceImplTest 100 times with no flakes.

Change-Id: Ic65ad65ad595c4452bd6c063e3faa9f4ad2ecc9a
Merged-In: Ic65ad65ad595c4452bd6c063e3faa9f4ad2ecc9a
Bug: 282715698
(cherry picked from commit ff21ccf7)
parent c25d75a1
Loading
Loading
Loading
Loading
+33 −8
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.util.Pair;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -68,6 +69,27 @@ public class BugreportManagerServiceImplTest {
        mBugreportFileManager = new BugreportManagerServiceImpl.BugreportFileManager();
    }

    @After
    public void tearDown() throws Exception {
        // Changes to RoleManager persist between tests, so we need to clear out any funny
        // business we did in previous tests.
        RoleManager roleManager = mContext.getSystemService(RoleManager.class);
        CallbackFuture future = new CallbackFuture();
        runWithShellPermissionIdentity(
                () -> {
                    roleManager.setBypassingRoleQualification(false);
                    roleManager.removeRoleHolderAsUser(
                            "android.app.role.SYSTEM_AUTOMOTIVE_PROJECTION",
                            mContext.getPackageName(),
                            /* flags= */ 0,
                            Process.myUserHandle(),
                            mContext.getMainExecutor(),
                            future);
                });

        assertThat(future.get()).isEqualTo(true);
    }

    @Test
    public void testBugreportFileManagerFileExists() {
        Pair<Integer, String> callingInfo = new Pair<>(mCallingUid, mCallingPackage);
@@ -131,14 +153,17 @@ public class BugreportManagerServiceImplTest {
                new BugreportManagerServiceImpl.Injector(mContext, new ArraySet<>()));
        RoleManager roleManager = mContext.getSystemService(RoleManager.class);
        CallbackFuture future = new CallbackFuture();
        runWithShellPermissionIdentity(() -> roleManager.setBypassingRoleQualification(true));
        runWithShellPermissionIdentity(() -> roleManager.addRoleHolderAsUser(
        runWithShellPermissionIdentity(
                () -> {
                    roleManager.setBypassingRoleQualification(true);
                    roleManager.addRoleHolderAsUser(
                            "android.app.role.SYSTEM_AUTOMOTIVE_PROJECTION",
                            mContext.getPackageName(),
                            /* flags= */ 0,
                            Process.myUserHandle(),
                            mContext.getMainExecutor(),
                future));
                            future);
                });

        assertThat(future.get()).isEqualTo(true);
        mService.cancelBugreport(Binder.getCallingUid(), mContext.getPackageName());