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

Commit 8332da65 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add `dumpsys batterystats --sync` command for use in tests" into main

parents 175697c7 176ade44
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -3008,12 +3008,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        pw.println("     --proto: output as a binary protobuffer");
        pw.println("     --model power-profile: use the power profile model"
                + " even if measured energy is available");
        if (Flags.streamlinedBatteryStats()) {
            pw.println("  --sample: collect and dump a sample of stats for debugging purpose");
        }
        if (isBatteryUsageStatsAccumulationSupported()) {
            pw.println("     --accumulated: continuously accumulated since setup or reset-all");
        }
        if (Flags.streamlinedBatteryStats()) {
            pw.println("  --sample: collect and dump a sample of stats for debugging purpose");
        }
        pw.println("  --sync: wait for delayed processing to finish (for use in tests)");
        pw.println("  <package.name>: optional name of package to filter output by.");
        pw.println("  -h: print this help text.");
        pw.println("Battery stats (batterystats) commands:");
@@ -3318,6 +3319,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub
                    return;
                } else if ("-a".equals(arg)) {
                    flags |= BatteryStats.DUMP_VERBOSE;
                } else if ("--sync".equals(arg)) {
                    finishDelayedOperations(pw);
                    return;
                } else if ("--debug".equals(arg)) {
                    i++;
                    if (i >= args.length) {
@@ -3466,6 +3470,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        }
    }

    private void finishDelayedOperations(PrintWriter pw) {
        mStats.collectPowerStatsSamples();
        mBatteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(mStats, mHandler, true);
        awaitCompletion();

        pw.println("BatteryStats sync complete");
    }

    /**
     * Gets a snapshot of cellular stats
     * @hide
+1 −1
Original line number Diff line number Diff line
@@ -14971,7 +14971,7 @@ public class BatteryStatsImpl extends BatteryStats {
        mBatteryTimeToFullSeconds = chargeTimeToFullSeconds;
        if (mAccumulateBatteryUsageStats) {
            mBatteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(this, mHandler);
            mBatteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(this, mHandler, false);
        }
        if (requestStepDetails) {
            mStepDetailsProvider.requestUpdate();
+10 −7
Original line number Diff line number Diff line
@@ -182,7 +182,9 @@ public class BatteryUsageStatsProvider {
    /**
     * Conditionally runs a battery usage stats accumulation on the supplied handler.
     */
    public void accumulateBatteryUsageStatsAsync(BatteryStatsImpl stats, Handler handler) {
    public void accumulateBatteryUsageStatsAsync(BatteryStatsImpl stats, Handler handler,
            boolean forceUpdate) {
        if (!forceUpdate) {
            synchronized (this) {
                long historySize = stats.getHistory().getMonotonicHistorySize();
                long delta = historySize - mLastAccumulationMonotonicHistorySize;
@@ -191,6 +193,7 @@ public class BatteryUsageStatsProvider {
                }
                mLastAccumulationMonotonicHistorySize = historySize;
            }
        }

        BatteryStatsSession session = stats.getBatteryStatsSession();

+7 −7
Original line number Diff line number Diff line
@@ -650,7 +650,7 @@ public class BatteryUsageStatsProviderTest {
                accumulatedBatteryUsageStatsSpanSize);

        // This produces zero accumulated power, because we haven't recorded any event yet.
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);

        // Make sure the accumulated stats are computed and saved before generating more history
        mStatsRule.waitForBackgroundThread();
@@ -665,7 +665,7 @@ public class BatteryUsageStatsProviderTest {
        }

        setTime(15 * MINUTE_IN_MS);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        setTime(20 * MINUTE_IN_MS);
@@ -683,7 +683,7 @@ public class BatteryUsageStatsProviderTest {

        // The battery charge has dropped from 3_600_000 to 3_000_000, so at this point we should
        // see 600 mAh of total drain
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        setTime(30 * MINUTE_IN_MS);
@@ -693,7 +693,7 @@ public class BatteryUsageStatsProviderTest {
        }

        setTime(35 * MINUTE_IN_MS);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        setTime(50 * MINUTE_IN_MS);
@@ -707,7 +707,7 @@ public class BatteryUsageStatsProviderTest {
        setTime(55 * MINUTE_IN_MS);

        // Battery discharged another 600 mAh
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        // This section has not been saved yet, but should be added to the accumulated totals
@@ -718,7 +718,7 @@ public class BatteryUsageStatsProviderTest {
        }

        setTime(85 * MINUTE_IN_MS);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        setTime(110 * MINUTE_IN_MS);
@@ -727,7 +727,7 @@ public class BatteryUsageStatsProviderTest {
                    110 * MINUTE_IN_MS, 110 * MINUTE_IN_MS);
        }
        setTime(115 * MINUTE_IN_MS);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler);
        batteryUsageStatsProvider.accumulateBatteryUsageStatsAsync(batteryStats, handler, false);
        mStatsRule.waitForBackgroundThread();

        BatteryUsageStats stats = batteryUsageStatsProvider.getBatteryUsageStats(batteryStats,