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

Commit 1c42eb06 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Clear PowerStats before collection in case the collection fails

Bug: 367608125
Test: atest PowerStatsTests; atest PowerStatsTestsRavenwood
Flag: EXEMPT_bugfix

Change-Id: Ic11ccd9a0e972a9e53f7167333a492ffbfeb8bd4
parent 579dd0b6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.internal.os.Clock;
import com.android.internal.os.PowerStats;
import com.android.server.power.stats.format.BluetoothPowerStatsLayout;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
@@ -142,6 +143,7 @@ public class BluetoothPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        Arrays.fill(mDeviceStats, 0);
        mPowerStats.uidStats.clear();

        collectBluetoothActivityInfo();
+3 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.internal.os.PowerStats;
import com.android.server.power.stats.format.CpuPowerStatsLayout;

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Locale;

/**
@@ -330,7 +331,9 @@ public class CpuPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        Arrays.fill(mCpuPowerStats.stats, 0);
        mCpuPowerStats.uidStats.clear();

        // TODO(b/305120724): additionally retrieve time-in-cluster for each CPU cluster
        long newTimestampNanos = mKernelCpuStatsReader.readCpuStats(this::processUidStats,
                mLayout.getScalingStepToPowerBracketMap(), mLastUpdateTimestampNanos,
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import com.android.internal.os.Clock;
import com.android.internal.os.PowerStats;
import com.android.server.power.stats.format.EnergyConsumerPowerStatsLayout;

import java.util.Arrays;

public class EnergyConsumerPowerStatsCollector extends PowerStatsCollector {

    public interface Injector {
@@ -105,6 +107,7 @@ public class EnergyConsumerPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        Arrays.fill(mPowerStats.stats, 0);
        mPowerStats.uidStats.clear();

        if (!mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout)) {
+5 −2
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import com.android.internal.os.Clock;
import com.android.internal.os.PowerStats;
import com.android.server.power.stats.format.ScreenPowerStatsLayout;

import java.util.Arrays;

public class ScreenPowerStatsCollector extends PowerStatsCollector {
    private static final String TAG = "ScreenPowerStatsCollector";

@@ -115,6 +117,9 @@ public class ScreenPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        Arrays.fill(mPowerStats.stats, 0);
        mPowerStats.uidStats.clear();

        mConsumedEnergyHelper.collectConsumedEnergy(mPowerStats, mLayout);

        for (int display = 0; display < mDisplayCount; display++) {
@@ -142,8 +147,6 @@ public class ScreenPowerStatsCollector extends PowerStatsCollector {
            mLastDozeTime[display] = screenDozeTimeMs;
        }

        mPowerStats.uidStats.clear();

        mScreenUsageTimeRetriever.retrieveTopActivityTimes((uid, topActivityTimeMs) -> {
            long topActivityDuration = topActivityTimeMs - mLastTopActivityTime.get(uid);
            if (topActivityDuration == 0) {
+5 −1
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import com.android.internal.os.Clock;
import com.android.internal.os.PowerStats;
import com.android.server.power.stats.format.WakelockPowerStatsLayout;

import java.util.Arrays;

class WakelockPowerStatsCollector extends PowerStatsCollector {

    public interface WakelockDurationRetriever {
@@ -89,6 +91,9 @@ class WakelockPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        Arrays.fill(mPowerStats.stats, 0);
        mPowerStats.uidStats.clear();

        long elapsedRealtime = mClock.elapsedRealtime();
        mPowerStats.durationMs = elapsedRealtime - mLastCollectionTime;

@@ -101,7 +106,6 @@ class WakelockPowerStatsCollector extends PowerStatsCollector {

        mLastWakelockDurationMs = wakelockDurationMillis;

        mPowerStats.uidStats.clear();
        mWakelockDurationRetriever.retrieveUidWakelockDuration((uid, durationMs) -> {
            if (!mFirstCollection) {
                long[] uidStats = mPowerStats.uidStats.get(uid);
Loading