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 ff21ccf728)
This commit is contained in:
@@ -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(
|
||||
"android.app.role.SYSTEM_AUTOMOTIVE_PROJECTION",
|
||||
mContext.getPackageName(),
|
||||
/* flags= */ 0,
|
||||
Process.myUserHandle(),
|
||||
mContext.getMainExecutor(),
|
||||
future));
|
||||
runWithShellPermissionIdentity(
|
||||
() -> {
|
||||
roleManager.setBypassingRoleQualification(true);
|
||||
roleManager.addRoleHolderAsUser(
|
||||
"android.app.role.SYSTEM_AUTOMOTIVE_PROJECTION",
|
||||
mContext.getPackageName(),
|
||||
/* flags= */ 0,
|
||||
Process.myUserHandle(),
|
||||
mContext.getMainExecutor(),
|
||||
future);
|
||||
});
|
||||
|
||||
assertThat(future.get()).isEqualTo(true);
|
||||
mService.cancelBugreport(Binder.getCallingUid(), mContext.getPackageName());
|
||||
|
||||
Reference in New Issue
Block a user