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

Commit 7a0c31fd authored by Xin Guan's avatar Xin Guan Committed by Android (Google) Code Review
Browse files

Merge "JobScheduler: Fix ThermalStatusRestrictionTest failure" into main

parents 72dad26d 978bea85
Loading
Loading
Loading
Loading
+91 −0
Original line number Diff line number Diff line
@@ -44,10 +44,13 @@ import android.app.job.JobInfo;
import android.content.ComponentName;
import android.content.Context;
import android.os.PowerManager;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.DeviceConfig;
import android.util.DebugUtils;

@@ -74,6 +77,8 @@ public class ThermalStatusRestrictionTest {
    private static final String SOURCE_PACKAGE = "com.android.frameworks.mockingservicestests";
    private static final int SOURCE_USER_ID = 0;

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private ThermalStatusRestriction mThermalStatusRestriction;
    private PowerManager.OnThermalStatusChangedListener mStatusChangedListener;

@@ -427,6 +432,7 @@ public class ThermalStatusRestrictionTest {
     */
    @Test
    @RequiresFlagsEnabled(FLAG_THERMAL_RESTRICTIONS_TO_FGS_JOBS)
    @DisableFlags(android.app.job.Flags.FLAG_IGNORE_IMPORTANT_WHILE_FOREGROUND)
    public void testIsJobRestrictedBiasFgs_flagThermalRestrictionsToFgsJobsEnabled() {
        JobStatusContainer jc =
                new JobStatusContainer("testIsJobRestrictedBiasFgs", mJobSchedulerService);
@@ -508,6 +514,91 @@ public class ThermalStatusRestrictionTest {
        }
    }

    @Test
    @RequiresFlagsEnabled(FLAG_THERMAL_RESTRICTIONS_TO_FGS_JOBS)
    @EnableFlags(android.app.job.Flags.FLAG_IGNORE_IMPORTANT_WHILE_FOREGROUND)
    public void testIsJobRestrictedBiasFgs_flagThermalRestrictionsToFgsJobsEnabled_ignoreIWF() {
        JobStatusContainer jc =
                new JobStatusContainer("testIsJobRestrictedBiasFgs", mJobSchedulerService);
        int jobBias = JobInfo.BIAS_FOREGROUND_SERVICE;
        for (int thermalStatus : jc.thermalStatuses) {
            String msg = debugTag(jobBias, thermalStatus);
            mStatusChangedListener.onThermalStatusChanged(thermalStatus);
            if (thermalStatus >= THERMAL_STATUS_SEVERE) {
                // Full restrictions on all jobs
                assertTrue(msg, isJobRestricted(jc.jobMinPriority, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobLowPriority, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobLowPriorityRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobLowPriorityRunningLong, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobDefaultPriority, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobHighPriority, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobHighPriorityRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobHighPriorityRunningLong, jobBias));
                assertTrue(msg, isJobRestricted(jc.ej, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejDowngraded, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejRetried, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejRunningLong, jobBias));
                assertTrue(msg, isJobRestricted(jc.ui, jobBias));
                assertTrue(msg, isJobRestricted(jc.uiRetried, jobBias));
                assertTrue(msg, isJobRestricted(jc.uiRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.uiRunningLong, jobBias));
            } else if (thermalStatus >= THERMAL_STATUS_MODERATE) {
                // No restrictions on user related jobs
                assertFalse(msg, isJobRestricted(jc.ui, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRetried, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRunningLong, jobBias));
                // Some restrictions on expedited jobs
                assertFalse(msg, isJobRestricted(jc.ej, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejDowngraded, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejRetried, jobBias));
                assertFalse(msg, isJobRestricted(jc.ejRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.ejRunningLong, jobBias));
                // Some restrictions on high priority jobs
                assertTrue(msg, isJobRestricted(jc.jobHighPriority, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobHighPriorityRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobHighPriorityRunningLong, jobBias));
                // Full restructions on important while foreground jobs as
                // the important while foreground flag is ignored.
                assertTrue(isJobRestricted(jc.importantWhileForeground, jobBias));
                assertTrue(isJobRestricted(jc.importantWhileForegroundRunning, jobBias));
                assertTrue(isJobRestricted(jc.importantWhileForegroundRunningLong, jobBias));
                // Full restriction on default priority jobs
                assertTrue(msg, isJobRestricted(jc.jobDefaultPriority, jobBias));
                // Full restriction on low priority jobs
                assertTrue(msg, isJobRestricted(jc.jobLowPriority, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobLowPriorityRunning, jobBias));
                assertTrue(msg, isJobRestricted(jc.jobLowPriorityRunningLong, jobBias));
                // Full restriction on min priority jobs
                assertTrue(msg, isJobRestricted(jc.jobMinPriority, jobBias));
            } else {
                // thermalStatus < THERMAL_STATUS_MODERATE
                // No restrictions on any job type
                assertFalse(msg, isJobRestricted(jc.ui, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRetried, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.uiRunningLong, jobBias));
                assertFalse(msg, isJobRestricted(jc.ej, jobBias));
                assertFalse(msg, isJobRestricted(jc.ejDowngraded, jobBias));
                assertFalse(msg, isJobRestricted(jc.ejRetried, jobBias));
                assertFalse(msg, isJobRestricted(jc.ejRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.ejRunningLong, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobHighPriority, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobHighPriorityRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobHighPriorityRunningLong, jobBias));
                assertFalse(msg, isJobRestricted(jc.importantWhileForeground, jobBias));
                assertFalse(msg, isJobRestricted(jc.importantWhileForegroundRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.importantWhileForegroundRunningLong, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobDefaultPriority, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobLowPriority, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobLowPriorityRunning, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobLowPriorityRunningLong, jobBias));
                assertFalse(msg, isJobRestricted(jc.jobMinPriority, jobBias));
            }
        }
    }

    /**
     * Test {@link JobSchedulerService#isJobRestricted(JobStatus)} when Job Bias is less than
     * Foreground Service and all Thermal states.