Fix MeasuredEnergyStats.reset() for per-process-state counters

Bug: 191921016
Test: atest FrameworksCoreTests:MeasuredEnergyStatsTest
Change-Id: I8a05503a31d07535d5d14907c8b145dd3dc20491
This commit is contained in:
Dmitri Plotnikov
2021-12-14 17:56:52 -08:00
parent 5ffeb52135
commit 2cb00ccc8f
2 changed files with 20 additions and 3 deletions

View File

@@ -589,6 +589,10 @@ public class MeasuredEnergyStats {
final int numIndices = mConfig.getNumberOfBuckets();
for (int index = 0; index < numIndices; index++) {
setValueIfSupported(index, 0L);
if (mAccumulatedMultiStateChargeMicroCoulomb != null
&& mAccumulatedMultiStateChargeMicroCoulomb[index] != null) {
mAccumulatedMultiStateChargeMicroCoulomb[index].reset();
}
}
}

View File

@@ -465,16 +465,23 @@ public class MeasuredEnergyStatsTest {
supportedStandardBuckets[POWER_BUCKET_SCREEN_DOZE] = false;
supportedStandardBuckets[POWER_BUCKET_SCREEN_OTHER] = true;
final int[] supportedMultiStateBuckets = new int[]{POWER_BUCKET_SCREEN_ON};
final MeasuredEnergyStats.Config config =
new MeasuredEnergyStats.Config(supportedStandardBuckets, customBucketNames,
new int[0], new String[]{"s"});
supportedMultiStateBuckets, new String[]{"s1", "s2"});
final MeasuredEnergyStats stats = new MeasuredEnergyStats(config);
stats.updateStandardBucket(POWER_BUCKET_SCREEN_ON, 10);
stats.updateStandardBucket(POWER_BUCKET_SCREEN_ON, 5);
stats.setState(1, 0);
stats.updateStandardBucket(POWER_BUCKET_SCREEN_ON, 10, 1000);
stats.updateStandardBucket(POWER_BUCKET_SCREEN_ON, 5, 2000);
stats.updateStandardBucket(POWER_BUCKET_SCREEN_OTHER, 40);
stats.updateCustomBucket(0, 50);
stats.updateCustomBucket(1, 60);
assertThat(stats.getAccumulatedStandardBucketCharge(POWER_BUCKET_SCREEN_ON, 0))
.isEqualTo(0);
assertThat(stats.getAccumulatedStandardBucketCharge(POWER_BUCKET_SCREEN_ON, 1))
.isEqualTo(15);
MeasuredEnergyStats.resetIfNotNull(stats);
// All charges should be reset to 0
for (int i = 0; i < NUMBER_STANDARD_POWER_BUCKETS; i++) {
@@ -485,7 +492,13 @@ public class MeasuredEnergyStatsTest {
assertFalse(stats.isStandardBucketSupported(i));
assertEquals(POWER_DATA_UNAVAILABLE, stats.getAccumulatedStandardBucketCharge(i));
}
}
assertThat(stats.getAccumulatedStandardBucketCharge(POWER_BUCKET_SCREEN_ON, 0))
.isEqualTo(0);
assertThat(stats.getAccumulatedStandardBucketCharge(POWER_BUCKET_SCREEN_ON, 1))
.isEqualTo(0);
for (int i = 0; i < customBucketNames.length; i++) {
assertEquals(0, stats.getAccumulatedCustomBucketCharge(i));
}