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

Commit dec8259c authored by Jonathan Backer's avatar Jonathan Backer
Browse files

Fix Ravenwood tests

We check for feature flag framework_wakelock_info every time
that we instantiate BatteryStatsImpl. This CL updates Ravenwood
mocks to make those checks pass.

Bug: 372292543
Flag: EXEMPT bugfix
Test: atest PowerStatsTestsRavenwood
Change-Id: Ibc2ffd048b998a9a0a97b5384a528dacc4fe62b3
parent 9a8e8b7b
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ import android.os.HandlerThread;
import android.os.Parcel;
import android.os.WakeLockStats;
import android.os.WorkSource;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.platform.test.ravenwood.RavenwoodRule;
import android.util.SparseArray;
import android.view.Display;
@@ -66,6 +68,7 @@ import com.android.internal.os.KernelCpuUidTimeReader.KernelCpuUidFreqTimeReader
import com.android.internal.os.KernelSingleUidTimeReader;
import com.android.internal.os.LongArrayMultiStateCounter;
import com.android.internal.os.PowerProfile;
import com.android.server.power.feature.flags.Flags;

import com.google.common.collect.ImmutableList;
import com.google.common.truth.LongSubject;
@@ -86,11 +89,16 @@ import java.util.List;
@RunWith(AndroidJUnit4.class)
@SuppressWarnings("GuardedBy")
public class BatteryStatsImplTest {
    @Rule
    @Rule(order = 0)
    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
            .setProvideMainThread(true)
            .setSystemPropertyImmutable("persist.sys.com.android.server.power.feature.flags."
                + "framework_wakelock_info-override", null)
            .build();

    @Rule(order = 1)
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Mock
    private KernelCpuUidFreqTimeReader mKernelUidCpuFreqTimeReader;
    @Mock
@@ -572,6 +580,7 @@ public class BatteryStatsImplTest {
    }

    @Test
    @EnableFlags(Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    public void testGetWakeLockStats() {
        mBatteryStatsImpl.updateTimeBasesLocked(true, Display.STATE_OFF, 0, 0);

+11 −3
Original line number Diff line number Diff line
@@ -91,8 +91,13 @@ import java.util.function.IntConsumer;
public class BatteryStatsNoteTest {

    @Rule
    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
    public final RavenwoodRule mRavenwood =
            new RavenwoodRule.Builder()
                    .setProvideMainThread(true)
                    .setSystemPropertyImmutable(
                            "persist.sys.com.android.server.power.feature.flags."
                                    + "framework_wakelock_info-override",
                            null)
                    .build();

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -192,6 +197,7 @@ public class BatteryStatsNoteTest {
     * Test BatteryStatsImpl.Uid.noteStartWakeLocked.
     */
    @Test
    @EnableFlags(com.android.server.power.feature.flags.Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    public void testNoteStartWakeLocked() throws Exception {
        final MockClock clocks = new MockClock(); // holds realtime and uptime in ms
        MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks);
@@ -222,6 +228,7 @@ public class BatteryStatsNoteTest {
     * Test BatteryStatsImpl.Uid.noteStartWakeLocked for an isolated uid.
     */
    @Test
    @EnableFlags(com.android.server.power.feature.flags.Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    public void testNoteStartWakeLocked_isolatedUid() throws Exception {
        final MockClock clocks = new MockClock(); // holds realtime and uptime in ms
        PowerStatsUidResolver uidResolver = new PowerStatsUidResolver();
@@ -264,6 +271,7 @@ public class BatteryStatsNoteTest {
     * isolated uid is removed from batterystats before the wakelock has been stopped.
     */
    @Test
    @EnableFlags(com.android.server.power.feature.flags.Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    public void testNoteStartWakeLocked_isolatedUidRace() throws Exception {
        final MockClock clocks = new MockClock(); // holds realtime and uptime in ms
        PowerStatsUidResolver uidResolver = new PowerStatsUidResolver();
+18 −6
Original line number Diff line number Diff line
@@ -23,12 +23,15 @@ import android.os.BatteryStats;
import android.os.Process;
import android.os.UidBatteryConsumer;
import android.os.WorkSource;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.platform.test.ravenwood.RavenwoodRule;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.internal.os.PowerProfile;
import com.android.server.power.feature.flags.Flags;

import org.junit.Rule;
import org.junit.Test;
@@ -38,20 +41,29 @@ import org.junit.runner.RunWith;
@SmallTest
public class WakelockPowerCalculatorTest {
    @Rule(order = 0)
    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
    public final RavenwoodRule mRavenwood =
            new RavenwoodRule.Builder()
                    .setProvideMainThread(true)
                    .setSystemPropertyImmutable(
                            "persist.sys.com.android.server.power.feature.flags."
                                    + "framework_wakelock_info-override",
                            null)
                    .build();

    @Rule(order = 1)
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final double PRECISION = 0.00001;

    private static final int APP_UID = Process.FIRST_APPLICATION_UID + 42;
    private static final int APP_PID = 3145;

    @Rule(order = 1)
    public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule()
            .setAveragePower(PowerProfile.POWER_CPU_IDLE, 360.0);
    @Rule(order = 2)
    public final BatteryUsageStatsRule mStatsRule =
            new BatteryUsageStatsRule().setAveragePower(PowerProfile.POWER_CPU_IDLE, 360.0);

    @Test
    @EnableFlags(Flags.FLAG_FRAMEWORK_WAKELOCK_INFO)
    public void testTimerBasedModel() {
        mStatsRule.getUidStats(Process.ROOT_UID);

+19 −5
Original line number Diff line number Diff line
@@ -24,10 +24,14 @@ 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;

import com.android.internal.os.PowerStats;
import com.android.server.power.feature.flags.Flags;
import com.android.server.power.stats.format.WakelockPowerStatsLayout;

import org.junit.Before;
@@ -37,11 +41,19 @@ import org.junit.Test;
public class WakelockPowerStatsCollectorTest {

    @Config
    public static final RavenwoodConfig sConfig = new RavenwoodConfig.Builder()
    public static final RavenwoodConfig sConfig =
            new RavenwoodConfig.Builder()
                    .setProvideMainThread(true)
                    .setSystemPropertyImmutable(
                            "persist.sys.com.android.server.power.feature.flags."
                                    + "framework_wakelock_info-override",
                            null)
                    .build();

    @Rule
    @Rule(order = 0)
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Rule(order = 1)
    public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule();

    private static final int APP_UID1 = Process.FIRST_APPLICATION_UID + 42;
@@ -63,6 +75,8 @@ 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);