Loading core/java/com/android/internal/os/BatteryStatsHistory.java +27 −0 Original line number Diff line number Diff line Loading @@ -247,6 +247,13 @@ public class BatteryStatsHistory { SystemProperties.set("debug.tracing." + name, Integer.toString(value)); } } /** * Records an instant event (one with no duration). */ public void traceInstantEvent(@NonNull String track, @NonNull String name) { Trace.instantForTrack(Trace.TRACE_TAG_POWER, track, name); } } private TraceDelegate mTracer; Loading Loading @@ -1164,6 +1171,25 @@ public class BatteryStatsHistory { writeHistoryItem(elapsedRealtimeMs, uptimeMs); } /** * Writes event details into Atrace. */ private void recordTraceEvents(int code, HistoryTag tag) { if (code == HistoryItem.EVENT_NONE) return; if (!mTracer.tracingEnabled()) return; final int idx = code & HistoryItem.EVENT_TYPE_MASK; final String prefix = (code & HistoryItem.EVENT_FLAG_START) != 0 ? "+" : (code & HistoryItem.EVENT_FLAG_FINISH) != 0 ? "-" : ""; final String[] names = BatteryStats.HISTORY_EVENT_NAMES; if (idx < 0 || idx >= names.length) return; final String track = "battery_stats." + names[idx]; final String name = prefix + names[idx] + "=" + tag.uid + ":\"" + tag.string + "\""; mTracer.traceInstantEvent(track, name); } /** * Writes changes to a HistoryItem state bitmap to Atrace. */ Loading Loading @@ -1229,6 +1255,7 @@ public class BatteryStatsHistory { + Integer.toHexString(lastDiffStates2)); } recordTraceEvents(cur.eventCode, cur.eventTag); recordTraceCounters(mHistoryLastWritten.states, cur.states & mActiveHistoryStates, BatteryStats.HISTORY_STATE_DESCRIPTIONS); recordTraceCounters(mHistoryLastWritten.states2, Loading services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,25 @@ public class BatteryStatsHistoryTest { inOrder.verify(mTracer).traceCounter("battery_stats.data_conn", 3); } @Test public void testAtraceInstantEvent() { mHistory.forceRecordAllHistory(); InOrder inOrder = Mockito.inOrder(mTracer); Mockito.when(mTracer.tracingEnabled()).thenReturn(true); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_WAKEUP_AP, "", 1234); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_JOB_START, "jobname", 2468); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_JOB_FINISH, "jobname", 2468); inOrder.verify(mTracer).traceInstantEvent("battery_stats.wakeupap", "wakeupap=1234:\"\""); inOrder.verify(mTracer).traceInstantEvent("battery_stats.job", "+job=2468:\"jobname\""); inOrder.verify(mTracer).traceInstantEvent("battery_stats.job", "-job=2468:\"jobname\""); } @Test public void testConstruct() { createActiveFile(mHistory); Loading Loading
core/java/com/android/internal/os/BatteryStatsHistory.java +27 −0 Original line number Diff line number Diff line Loading @@ -247,6 +247,13 @@ public class BatteryStatsHistory { SystemProperties.set("debug.tracing." + name, Integer.toString(value)); } } /** * Records an instant event (one with no duration). */ public void traceInstantEvent(@NonNull String track, @NonNull String name) { Trace.instantForTrack(Trace.TRACE_TAG_POWER, track, name); } } private TraceDelegate mTracer; Loading Loading @@ -1164,6 +1171,25 @@ public class BatteryStatsHistory { writeHistoryItem(elapsedRealtimeMs, uptimeMs); } /** * Writes event details into Atrace. */ private void recordTraceEvents(int code, HistoryTag tag) { if (code == HistoryItem.EVENT_NONE) return; if (!mTracer.tracingEnabled()) return; final int idx = code & HistoryItem.EVENT_TYPE_MASK; final String prefix = (code & HistoryItem.EVENT_FLAG_START) != 0 ? "+" : (code & HistoryItem.EVENT_FLAG_FINISH) != 0 ? "-" : ""; final String[] names = BatteryStats.HISTORY_EVENT_NAMES; if (idx < 0 || idx >= names.length) return; final String track = "battery_stats." + names[idx]; final String name = prefix + names[idx] + "=" + tag.uid + ":\"" + tag.string + "\""; mTracer.traceInstantEvent(track, name); } /** * Writes changes to a HistoryItem state bitmap to Atrace. */ Loading Loading @@ -1229,6 +1255,7 @@ public class BatteryStatsHistory { + Integer.toHexString(lastDiffStates2)); } recordTraceEvents(cur.eventCode, cur.eventTag); recordTraceCounters(mHistoryLastWritten.states, cur.states & mActiveHistoryStates, BatteryStats.HISTORY_STATE_DESCRIPTIONS); recordTraceCounters(mHistoryLastWritten.states2, Loading
services/tests/servicestests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,25 @@ public class BatteryStatsHistoryTest { inOrder.verify(mTracer).traceCounter("battery_stats.data_conn", 3); } @Test public void testAtraceInstantEvent() { mHistory.forceRecordAllHistory(); InOrder inOrder = Mockito.inOrder(mTracer); Mockito.when(mTracer.tracingEnabled()).thenReturn(true); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_WAKEUP_AP, "", 1234); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_JOB_START, "jobname", 2468); mHistory.recordEvent(mClock.elapsedRealtime(), mClock.uptimeMillis(), HistoryItem.EVENT_JOB_FINISH, "jobname", 2468); inOrder.verify(mTracer).traceInstantEvent("battery_stats.wakeupap", "wakeupap=1234:\"\""); inOrder.verify(mTracer).traceInstantEvent("battery_stats.job", "+job=2468:\"jobname\""); inOrder.verify(mTracer).traceInstantEvent("battery_stats.job", "-job=2468:\"jobname\""); } @Test public void testConstruct() { createActiveFile(mHistory); Loading