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

Commit 917586ec authored by Jonathan Backer's avatar Jonathan Backer
Browse files

Make WakelockStatsFrameworkEvents test work with ravenwood

Bug: 372292543
Flag: EXEMPT bugfix
Test: atest PowerStatsTestsRavenwood
Change-Id: Ife75addfad0426e5fe77a62ac3ba5e72ced7ca9b
parent 9c6750cf
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.