summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2016-08-13 00:59:35 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-08-13 00:59:35 +0000
commit4e4e50cd02a75a8b151ee7034730d6decd35bc14 (patch)
tree36afe8a6fce65ca6463f26e4d7c0e75979930758 /core
parent3af9d12cceeda8bc27dbbb1ae41eab9a42c13eb4 (diff)
parente5852eb5012769f70458d971f2d43c04a3503f98 (diff)
SamplingTimer: Fix issue with summary recording too much am: 9edd6be542
am: e5852eb501 Change-Id: Ie4ab1a86f0c28a41ed84e861c83d38bf1a90a4c8
Diffstat (limited to 'core')
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java18
-rw-r--r--core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java39
2 files changed, 31 insertions, 26 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 7fb92aef30bd..2538d60f1924 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -108,7 +108,7 @@ public class BatteryStatsImpl extends BatteryStats {
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 149 + (USE_OLD_HISTORY ? 1000 : 0);
+ private static final int VERSION = 150 + (USE_OLD_HISTORY ? 1000 : 0);
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 2000;
@@ -1415,22 +1415,6 @@ public class BatteryStatsImpl extends BatteryStats {
mUnpluggedReportedCount = 0;
return true;
}
-
- @Override
- public void writeSummaryFromParcelLocked(Parcel out, long batteryRealtime) {
- super.writeSummaryFromParcelLocked(out, batteryRealtime);
- out.writeLong(mCurrentReportedTotalTime);
- out.writeInt(mCurrentReportedCount);
- out.writeInt(mTrackingReportedValues ? 1 : 0);
- }
-
- @Override
- public void readSummaryFromParcelLocked(Parcel in) {
- super.readSummaryFromParcelLocked(in);
- mUnpluggedReportedTotalTime = mCurrentReportedTotalTime = in.readLong();
- mUnpluggedReportedCount = mCurrentReportedCount = in.readInt();
- mTrackingReportedValues = in.readInt() == 1;
- }
}
/**
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
index ce6879d0ef4e..b4afddab97c9 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
@@ -178,19 +178,40 @@ public class BatteryStatsSamplingTimerTest extends TestCase {
clocks.elapsedRealtime() * 1000);
offBatterySummaryParcel.setDataPosition(0);
+ // Set the timebase running again. That way any issues with tracking reported values
+ // get tested when we unparcel the timers below.
+ timeBase.setRunning(true, clocks.uptimeMillis(), clocks.elapsedRealtime());
+
// Read the on battery summary from the parcel.
- BatteryStatsImpl.SamplingTimer unparceledTimer = new BatteryStatsImpl.SamplingTimer(
- clocks, timeBase);
- unparceledTimer.readSummaryFromParcelLocked(onBatterySummaryParcel);
+ BatteryStatsImpl.SamplingTimer unparceledOnBatteryTimer =
+ new BatteryStatsImpl.SamplingTimer(clocks, timeBase);
+ unparceledOnBatteryTimer.readSummaryFromParcelLocked(onBatterySummaryParcel);
- assertEquals(10, unparceledTimer.getTotalTimeLocked(0, BatteryStats.STATS_SINCE_CHARGED));
- assertEquals(1, unparceledTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+ assertEquals(10, unparceledOnBatteryTimer.getTotalTimeLocked(0,
+ BatteryStats.STATS_SINCE_CHARGED));
+ assertEquals(1, unparceledOnBatteryTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
// Read the off battery summary from the parcel.
- unparceledTimer = new BatteryStatsImpl.SamplingTimer(clocks, timeBase);
- unparceledTimer.readSummaryFromParcelLocked(offBatterySummaryParcel);
+ BatteryStatsImpl.SamplingTimer unparceledOffBatteryTimer =
+ new BatteryStatsImpl.SamplingTimer(clocks, timeBase);
+ unparceledOffBatteryTimer.readSummaryFromParcelLocked(offBatterySummaryParcel);
+
+ assertEquals(10, unparceledOffBatteryTimer.getTotalTimeLocked(0,
+ BatteryStats.STATS_SINCE_CHARGED));
+ assertEquals(1, unparceledOffBatteryTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
- assertEquals(10, unparceledTimer.getTotalTimeLocked(0, BatteryStats.STATS_SINCE_CHARGED));
- assertEquals(1, unparceledTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+ // Now, just like with a fresh timer, the first update should be absorbed to account for
+ // data being collected when we weren't recording.
+ unparceledOnBatteryTimer.update(10, 10);
+
+ assertEquals(10, unparceledOnBatteryTimer.getTotalTimeLocked(0,
+ BatteryStats.STATS_SINCE_CHARGED));
+ assertEquals(1, unparceledOnBatteryTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+
+ unparceledOffBatteryTimer.update(10, 10);
+
+ assertEquals(10, unparceledOffBatteryTimer.getTotalTimeLocked(0,
+ BatteryStats.STATS_SINCE_CHARGED));
+ assertEquals(1, unparceledOffBatteryTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
}
}