diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2021-06-28 07:53:10 -0700 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2021-06-30 17:07:58 +0000 |
commit | bcd46f1ed43762a2584ab36f35250fd33b492839 (patch) | |
tree | c0915d3a470097d895a292e8af9198cac8b970a9 /core/tests | |
parent | fb0faec367832e8fdc05508d831a697972dfa4f2 (diff) |
Fix boot time BatteryStats reset failure
We need some services to create a battery stats snapshot
captured at the time of battery reset.
The issue is that if the battery stats reset occurs during boot,
before the system is ready, those services may not be prepared.
The fix is to postpone battery stats reset until after the
system server is ready.
Also, we will now reset the stats if battery got partially charged
and discharged repeatedly without ever reaching the full charge.
This will prevent battery sessions from going on forever and
overflowing internal data structures.
This CL partially reverts https://cs.android.com/android/_/android/platform/frameworks/base/+/0ed84f12639c4cb7ba6623dc232ae31602827bae
Bug: 192252233
Test: run PowerOnOffTest#testPowerOnOff repeatedly
Change-Id: Ib486e4caeeac7c933288c3a1055259c05f45c6c8
Diffstat (limited to 'core/tests')
3 files changed, 4 insertions, 0 deletions
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsProviderTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsProviderTest.java index cbd67c8324f4..0147cdb186f3 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsProviderTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsProviderTest.java @@ -204,6 +204,7 @@ public class BatteryUsageStatsProviderTest { BatteryUsageStatsStore batteryUsageStatsStore = new BatteryUsageStatsStore(context, batteryStats, new File(context.getCacheDir(), "BatteryUsageStatsProviderTest"), new TestHandler(), Integer.MAX_VALUE); + batteryUsageStatsStore.onSystemReady(); BatteryUsageStatsProvider provider = new BatteryUsageStatsProvider(context, batteryStats, batteryUsageStatsStore); diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java index 961e85950b29..083090c54619 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java @@ -66,6 +66,7 @@ public class BatteryUsageStatsRule implements TestRule { mMockClocks.currentTime = currentTime; mBatteryStats = new MockBatteryStatsImpl(mMockClocks); mBatteryStats.setPowerProfile(mPowerProfile); + mBatteryStats.onSystemReady(); } public BatteryUsageStatsRule setAveragePower(String key, double value) { diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsStoreTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsStoreTest.java index 141a9fa30c85..e478cd776558 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsStoreTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsStoreTest.java @@ -59,6 +59,7 @@ public class BatteryUsageStatsStoreTest { mBatteryStats = new MockBatteryStatsImpl(mMockClocks); mBatteryStats.setNoAutoReset(true); mBatteryStats.setPowerProfile(mock(PowerProfile.class)); + mBatteryStats.onSystemReady(); Context context = InstrumentationRegistry.getContext(); @@ -67,6 +68,7 @@ public class BatteryUsageStatsStoreTest { mBatteryUsageStatsStore = new BatteryUsageStatsStore(context, mBatteryStats, mStoreDirectory, new TestHandler(), MAX_BATTERY_STATS_SNAPSHOT_STORAGE_BYTES); + mBatteryUsageStatsStore.onSystemReady(); mBatteryUsageStatsProvider = new BatteryUsageStatsProvider(context, mBatteryStats); } |