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

Commit 2c5045d4 authored by Kweku Adams's avatar Kweku Adams
Browse files

Explicitly ensure the standby bucket is updated in testing.

Also add a missing switch case.

Bug: 171305774
Test: atest --rerun-until-failure 5 com.android.server.job.controllers.QuotaControllerTest
Change-Id: I8fe79032da6c4f7d386729ce0cebc96f52805c95
parent 539bfca1
Loading
Loading
Loading
Loading
+37 −32
Original line number Diff line number Diff line
@@ -1679,9 +1679,17 @@ public final class QuotaController extends StateController {
            // Update job bookkeeping out of band.
            JobSchedulerBackgroundThread.getHandler().post(() -> {
                final int bucketIndex = JobSchedulerService.standbyBucketToBucketIndex(bucket);
                updateStandbyBucket(userId, packageName, bucketIndex);
            });
        }
    }

    @VisibleForTesting
    void updateStandbyBucket(
            final int userId, final @NonNull String packageName, final int bucketIndex) {
        if (DEBUG) {
                    Slog.i(TAG, "Moving pkg " + string(userId, packageName) + " to bucketIndex "
                            + bucketIndex);
            Slog.i(TAG, "Moving pkg " + string(userId, packageName)
                    + " to bucketIndex " + bucketIndex);
        }
        List<JobStatus> restrictedChanges = new ArrayList<>();
        synchronized (mLock) {
@@ -1693,8 +1701,7 @@ public final class QuotaController extends StateController {
                JobStatus js = jobs.valueAt(i);
                // Effective standby bucket can change after this in some situations so
                // use the real bucket so that the job is tracked by the controllers.
                        if ((bucketIndex == RESTRICTED_INDEX
                                || js.getStandbyBucket() == RESTRICTED_INDEX)
                if ((bucketIndex == RESTRICTED_INDEX || js.getStandbyBucket() == RESTRICTED_INDEX)
                        && bucketIndex != js.getStandbyBucket()) {
                    restrictedChanges.add(js);
                }
@@ -1711,8 +1718,6 @@ public final class QuotaController extends StateController {
        if (restrictedChanges.size() > 0) {
            mStateChangedListener.onRestrictedBucketChanged(restrictedChanges);
        }
            });
        }
    }

    private final class DeleteTimingSessionsFunctor implements Consumer<List<TimingSession>> {
+3 −0
Original line number Diff line number Diff line
@@ -284,6 +284,8 @@ public class QuotaControllerTest {
                return UsageStatsManager.STANDBY_BUCKET_FREQUENT;
            case RARE_INDEX:
                return UsageStatsManager.STANDBY_BUCKET_RARE;
            case RESTRICTED_INDEX:
                return UsageStatsManager.STANDBY_BUCKET_RESTRICTED;
            default:
                return UsageStatsManager.STANDBY_BUCKET_NEVER;
        }
@@ -292,6 +294,7 @@ public class QuotaControllerTest {
    private void setStandbyBucket(int bucketIndex) {
        when(mUsageStatsManager.getAppStandbyBucket(eq(SOURCE_PACKAGE), eq(SOURCE_USER_ID),
                anyLong())).thenReturn(bucketIndexToUsageStatsBucket(bucketIndex));
        mQuotaController.updateStandbyBucket(SOURCE_USER_ID, SOURCE_PACKAGE, bucketIndex);
    }

    private void setStandbyBucket(int bucketIndex, JobStatus... jobs) {