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

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

Merge "Make WakelockStatsFrameworkEvents test work with ravenwood" into main

parents a33559ad 917586ec
Loading
Loading
Loading
Loading
+44 −33
Original line number Diff line number Diff line
@@ -150,26 +150,14 @@ public class WakelockStatsFrameworkEvents {
    }

    @VisibleForTesting
    public boolean inOverflow() {
        synchronized (mLock) {
            return inOverflowLocked();
        }
    }

    @GuardedBy("mLock")
    private boolean inOverflowLocked() {
    public boolean inOverflow() {
        return mWakeLockStats.size() >= SUMMARY_THRESHOLD;
    }

    @VisibleForTesting
    public boolean inHardCap() {
        synchronized (mLock) {
            return inHardCapLocked();
        }
    }

    @GuardedBy("mLock")
    private boolean inHardCapLocked() {
    public boolean inHardCap() {
        return mWakeLockStats.size() >= MAX_WAKELOCK_DIMENSIONS;
    }

@@ -189,9 +177,9 @@ public class WakelockStatsFrameworkEvents {
                long wakeLockDur = eventUptimeMillis - data.acquireUptimeMillis;

                // Rewrite key if in an overflow state.
                if (inOverflowLocked() && !mWakeLockStats.containsKey(key)) {
                if (inOverflow() && !mWakeLockStats.containsKey(key)) {
                    key.setOverflow();
                    if (inHardCapLocked() && !mWakeLockStats.containsKey(key)) {
                    if (inHardCap() && !mWakeLockStats.containsKey(key)) {
                        key.setHardCap();
                    }
                }
@@ -207,12 +195,41 @@ public class WakelockStatsFrameworkEvents {
        }
    }

    public List<StatsEvent> pullFrameworkWakelockInfoAtoms() {
        return pullFrameworkWakelockInfoAtoms(SystemClock.uptimeMillis());
    // Shim interface for testing.
    @VisibleForTesting
    public interface EventLogger {
        void logResult(
                int uid, String tag, int wakeLockLevel, long uptimeMillis, long completedCount);
    }

    public List<StatsEvent> pullFrameworkWakelockInfoAtoms(long nowMillis) {
    public List<StatsEvent> pullFrameworkWakelockInfoAtoms() {
        List<StatsEvent> result = new ArrayList<>();
        EventLogger logger =
                new EventLogger() {
                    public void logResult(
                            int uid,
                            String tag,
                            int wakeLockLevel,
                            long uptimeMillis,
                            long completedCount) {
                        StatsEvent event =
                                StatsEvent.newBuilder()
                                        .setAtomId(FrameworkStatsLog.FRAMEWORK_WAKELOCK_INFO)
                                        .writeInt(uid)
                                        .writeString(tag)
                                        .writeInt(wakeLockLevel)
                                        .writeLong(uptimeMillis)
                                        .writeLong(completedCount)
                                        .build();
                        result.add(event);
                    }
                };
        pullFrameworkWakelockInfoAtoms(SystemClock.uptimeMillis(), logger);
        return result;
    }

    @VisibleForTesting
    public void pullFrameworkWakelockInfoAtoms(long nowMillis, EventLogger logger) {
        HashSet<WakeLockKey> keys = new HashSet<>();

        // Used to collect open WakeLocks when in an overflow state.
@@ -223,13 +240,13 @@ public class WakelockStatsFrameworkEvents {

            // If we are in an overflow state, an open wakelock may have a new key
            // that needs to be summarized.
            if (inOverflowLocked()) {
            if (inOverflow()) {
                for (WakeLockKey key : mOpenWakeLocks.keySet()) {
                    if (!mWakeLockStats.containsKey(key)) {
                        WakeLockData data = mOpenWakeLocks.get(key);

                        key.setOverflow();
                        if (inHardCapLocked() && !mWakeLockStats.containsKey(key)) {
                        if (inHardCap() && !mWakeLockStats.containsKey(key)) {
                            key.setHardCap();
                        }
                        keys.add(key);
@@ -257,20 +274,14 @@ public class WakelockStatsFrameworkEvents {

                stats.uptimeMillis += openWakeLockUptime + extraTime.uptimeMillis;

                StatsEvent event =
                        StatsEvent.newBuilder()
                                .setAtomId(FrameworkStatsLog.FRAMEWORK_WAKELOCK_INFO)
                                .writeInt(key.getUid())
                                .writeString(key.getTag())
                                .writeInt(key.getPowerManagerWakeLockLevel())
                                .writeLong(stats.uptimeMillis)
                                .writeLong(stats.completedCount)
                                .build();
                result.add(event);
                logger.logResult(
                        key.getUid(),
                        key.getTag(),
                        key.getPowerManagerWakeLockLevel(),
                        stats.uptimeMillis,
                        stats.completedCount);
            }
        }

        return result;
    }

    private static final String TAG = "BatteryStatsPulledMetrics";
+0 −7
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@ android_test {
        "servicestests-utils",
        "platform-test-annotations",
        "flag-junit",
        "statsdprotolite",
        "StatsdTestUtils",
        "platformprotoslite",
    ],

    libs: [
@@ -77,10 +74,6 @@ android_ravenwood_test {
        "src/com/android/server/power/stats/format/*.java",
        "src/com/android/server/power/stats/processor/*.java",
    ],
    // TODO(b/372292543): Enable this test.
    exclude_srcs: [
        "src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java",
    ],
    java_resources: [
        "res/xml/power_profile*.xml",
    ],
+0 −2
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import static org.mockito.Mockito.mock;
import android.content.Context;
import android.os.Process;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.DisabledOnRavenwood;
import android.platform.test.flag.junit.SetFlagsRule;
import android.platform.test.ravenwood.RavenwoodConfig;
import android.platform.test.ravenwood.RavenwoodConfig.Config;
@@ -76,7 +75,6 @@ public class WakelockPowerStatsCollectorTest {

    @Test
    @DisableFlags(Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    @DisabledOnRavenwood(reason = "b/372292543 temporary disable")
    public void collectStats() {
        PowerStatsCollector powerStatsCollector = mBatteryStats.getPowerStatsCollector(
                POWER_COMPONENT_WAKELOCK);
+195 −227

File changed.

Preview size limit exceeded, changes collapsed.