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

Commit 8155800e authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix flaky test...

Fix flaky test BatteryUsageStatsProviderTest#saveBatteryUsageStatsOnReset_incompatibleEnergyConsumers

Bug: 416116393
Test: atest PowerStatsTests
Flag: EXEMPT bug fix
Change-Id: I9be520a8be7b044f8e76fba11c359c3b31867b8f
parent caf2c00b
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;
    }