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

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

Merge "Fix flaky test...

Merge "Fix flaky test BatteryUsageStatsProviderTest#saveBatteryUsageStatsOnReset_incompatibleEnergyConsumers" into main
parents c71ddd98 8155800e
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -13378,12 +13378,8 @@ public class BatteryStatsImpl extends BatteryStats {
                mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_ANY));
        mCustomEnergyConsumerPowerStatsCollector.schedule();
        mHandler.post(() -> {
            synchronized (BatteryStatsImpl.this) {
                noteCustomEnergyConsumerNamesLocked(
        noteCustomEnergyConsumerNamesAsync(
                mCustomEnergyConsumerPowerStatsCollector.getCustomEnergyConsumerNames());
            }
        });
        mSystemReady = true;
    }
@@ -14455,8 +14451,16 @@ public class BatteryStatsImpl extends BatteryStats {
    }
    @VisibleForTesting
    protected void noteCustomEnergyConsumerNamesAsync(@NonNull String[] names) {
        mHandler.post(() -> {
            synchronized (BatteryStatsImpl.this) {
                noteCustomEnergyConsumerNamesLocked(names);
            }
        });
    }
    @GuardedBy("this")
    protected void noteCustomEnergyConsumerNamesLocked(@NonNull String[] names) {
    private void noteCustomEnergyConsumerNamesLocked(@NonNull String[] names) {
        if (Arrays.equals(names, mCustomEnergyConsumerNames)) {
            return;
        }
+4 −2
Original line number Diff line number Diff line
@@ -519,7 +519,8 @@ public class BatteryStatsNoteTest {
    public void testNoteScreenStateLocked() throws Exception {
        final MockClock clocks = new MockClock(); // holds realtime and uptime in ms
        MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks);
        bi.noteCustomEnergyConsumerNamesLocked(new String[]{"FOO", "BAR"});
        bi.noteCustomEnergyConsumerNamesAsync(new String[]{"FOO", "BAR"});
        bi.awaitCompletion();

        bi.updateTimeBasesLocked(true, Display.STATE_ON, 0, 0);
        bi.noteScreenStateLocked(0, Display.STATE_ON);
@@ -567,7 +568,8 @@ public class BatteryStatsNoteTest {
        final MockClock clocks = new MockClock(); // holds realtime and uptime in ms
        MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks);
        bi.setDisplayCountLocked(2);
        bi.noteCustomEnergyConsumerNamesLocked(new String[]{"FOO", "BAR"});
        bi.noteCustomEnergyConsumerNamesAsync(new String[]{"FOO", "BAR"});
        bi.awaitCompletion();

        bi.updateTimeBasesLocked(true, Display.STATE_OFF, 0, 0);
        bi.noteScreenStateLocked(0, Display.STATE_OFF);
+5 −2
Original line number Diff line number Diff line
@@ -811,7 +811,9 @@ public class BatteryUsageStatsProviderTest {

        batteryStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_ANY, true);

        batteryStats.noteCustomEnergyConsumerNamesLocked(new String[]{"FOO", "BAR"});
        batteryStats.noteCustomEnergyConsumerNamesAsync(new String[]{"FOO", "BAR"});
        batteryStats.awaitCompletion();

        int componentId0 = BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID;
        int componentId1 = BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + 1;

@@ -884,7 +886,8 @@ public class BatteryUsageStatsProviderTest {
    @Test
    public void testAggregateBatteryStats_incompatibleSnapshot() throws IOException {
        MockBatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();
        batteryStats.noteCustomEnergyConsumerNamesLocked(new String[]{"FOO", "BAR"});
        batteryStats.noteCustomEnergyConsumerNamesAsync(new String[]{"FOO", "BAR"});
        batteryStats.awaitCompletion();

        PowerStatsStore powerStatsStore = mock(PowerStatsStore.class);

+5 −7
Original line number Diff line number Diff line
@@ -120,9 +120,8 @@ public class BatteryUsageStatsRule implements TestRule {
        mBatteryStats = new MockBatteryStatsImpl(getBatteryStatsConfig(), mMockClock,
                mMonotonicClock, mHistoryDir, mHandler, mPowerProfile, new PowerStatsUidResolver());
        mBatteryStats.setCpuScalingPolicies(new CpuScalingPolicies(mCpusByPolicy, mFreqsByPolicy));
        synchronized (mBatteryStats) {
            mBatteryStats.noteCustomEnergyConsumerNamesLocked(mCustomPowerComponentNames);
        }
        mBatteryStats.noteCustomEnergyConsumerNamesAsync(mCustomPowerComponentNames);
        mBatteryStats.awaitCompletion();
        mBatteryStats.informThatAllExternalStatsAreFlushed();

        if (mDisplayCount != -1) {
@@ -292,11 +291,10 @@ public class BatteryUsageStatsRule implements TestRule {
            @NonNull String[] customPowerComponentNames) {
        mCustomPowerComponentNames = customPowerComponentNames;
        if (mBatteryStats != null) {
            synchronized (mBatteryStats) {
                mBatteryStats.noteCustomEnergyConsumerNamesLocked(mCustomPowerComponentNames);
            mBatteryStats.noteCustomEnergyConsumerNamesAsync(mCustomPowerComponentNames);
            mBatteryStats.awaitCompletion();
            mBatteryStats.informThatAllExternalStatsAreFlushed();
        }
        }
        return this;
    }

+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.when;
import android.annotation.NonNull;
import android.app.usage.NetworkStatsManager;
import android.net.NetworkStats;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.Looper;
import android.util.SparseArray;
@@ -125,6 +126,12 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl {
        return powerProfile;
    }

    public void awaitCompletion() {
        ConditionVariable done = new ConditionVariable();
        mHandler.post(done::open);
        done.block();
    }

    public TimeBase getOnBatteryTimeBase() {
        return mOnBatteryTimeBase;
    }