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

Commit 593a4e7a authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Automerger Merge Worker
Browse files

Merge "Address race condition in procstate time tracking" into sc-dev am:...

Merge "Address race condition in procstate time tracking" into sc-dev am: b1f548e3 am: f99c289b am: b40a34e6

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15177890

Change-Id: I14aee56d18b15736e121c202c45158fb5006062e
parents b7e4e86e b40a34e6
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.os;

import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP;
import static android.os.BatteryStatsManager.NUM_WIFI_STATES;
import static android.os.BatteryStatsManager.NUM_WIFI_SUPPL_STATES;

@@ -903,9 +902,9 @@ public abstract class BatteryStats implements Parcelable {
         * is not attributed to any non-critical process states.
         */
        public static final int[] CRITICAL_PROC_STATES = {
                PROCESS_STATE_TOP,
                PROCESS_STATE_BOUND_TOP, PROCESS_STATE_FOREGROUND_SERVICE,
                PROCESS_STATE_FOREGROUND
                Uid.PROCESS_STATE_TOP,
                Uid.PROCESS_STATE_FOREGROUND_SERVICE,
                Uid.PROCESS_STATE_FOREGROUND
        };

        public abstract long getProcessStateTime(int state, long elapsedRealtimeUs, int which);
+9 −3
Original line number Diff line number Diff line
@@ -584,7 +584,7 @@ public class BstatsCpuTimesValidationTest {
                actualCpuTimeMs += cpuTimesMs[i];
            }
            assertApproximateValue("Incorrect total cpu time, " + msgCpuTimes,
                    2 * WORK_DURATION_MS, actualCpuTimeMs);
                    WORK_DURATION_MS, actualCpuTimeMs);

            batteryOffScreenOn();
        } finally {
@@ -656,8 +656,14 @@ public class BstatsCpuTimesValidationTest {
        }
    }

    private void assertApproximateValue(String errorPrefix, long expectedValue, long actualValue) {
        assertValueRange(errorPrefix, actualValue, expectedValue * 0.5, expectedValue * 1.5);
    private void assertApproximateValue(String errorPrefix, long expectedValueMs,
            long actualValueMs) {
        // Allow the actual value to be 1 second smaller than the expected.
        // Also allow it to be up to 5 seconds larger, to accommodate the arbitrary
        // latency introduced by BatteryExternalStatsWorker.scheduleReadProcStateCpuTimes
        assertValueRange(errorPrefix, actualValueMs,
                expectedValueMs - 1000,
                expectedValueMs + 5000);
    }

    private void assertValueRange(String errorPrefix,