summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/metrics/StubMetrics.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/metrics/StubMetrics.java')
-rw-r--r--java/com/android/dialer/metrics/StubMetrics.java77
1 files changed, 71 insertions, 6 deletions
diff --git a/java/com/android/dialer/metrics/StubMetrics.java b/java/com/android/dialer/metrics/StubMetrics.java
index 99c3d7691..ecd2382b9 100644
--- a/java/com/android/dialer/metrics/StubMetrics.java
+++ b/java/com/android/dialer/metrics/StubMetrics.java
@@ -16,26 +16,91 @@
package com.android.dialer.metrics;
+import android.os.SystemClock;
+import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import javax.annotation.concurrent.ThreadSafe;
import javax.inject.Inject;
+import javax.inject.Singleton;
-/** Stub {@link Metrics}. */
+/** Stub {@link Metrics} which simply logs debug messages to logcat. */
+@ThreadSafe
+@Singleton
public final class StubMetrics implements Metrics {
+ private final ConcurrentMap<String, StubTimerEvent> namedEvents = new ConcurrentHashMap<>();
+ private final ConcurrentMap<Integer, StubTimerEvent> unnamedEvents = new ConcurrentHashMap<>();
+
@Inject
StubMetrics() {}
@Override
- public void startTimer(String timerEventName) {}
+ public void startTimer(String timerEventName) {
+ namedEvents.put(timerEventName, new StubTimerEvent());
+ }
@Override
- public void stopTimer(String timerEventName) {}
+ public Integer startUnnamedTimer() {
+ StubTimerEvent stubTimerEvent = new StubTimerEvent();
+ int id = stubTimerEvent.hashCode();
+ LogUtil.d("StubMetrics.startUnnamedTimer", "started timer for id: %d", id);
+ unnamedEvents.put(id, stubTimerEvent);
+ return id;
+ }
@Override
- public void startJankRecorder(String eventName) {}
+ public void stopTimer(String timerEventName) {
+ StubTimerEvent stubTimerEvent = namedEvents.remove(timerEventName);
+ if (stubTimerEvent == null) {
+ return;
+ }
+
+ LogUtil.d(
+ "StubMetrics.stopTimer",
+ "%s took %dms",
+ timerEventName,
+ SystemClock.elapsedRealtime() - stubTimerEvent.startTime);
+ }
+
+ @Override
+ public void stopUnnamedTimer(int timerId, String timerEventName) {
+ long startTime =
+ Assert.isNotNull(
+ unnamedEvents.remove(timerId),
+ "no timer found for id: %d (%s)",
+ timerId,
+ timerEventName)
+ .startTime;
+
+ LogUtil.d(
+ "StubMetrics.stopUnnamedTimer",
+ "%s took %dms",
+ timerEventName,
+ SystemClock.elapsedRealtime() - startTime);
+ }
@Override
- public void stopJankRecorder(String eventName) {}
+ public void startJankRecorder(String eventName) {
+ LogUtil.d("StubMetrics.startJankRecorder", "started jank recorder for %s", eventName);
+ }
@Override
- public void recordMemory(String memoryEventName) {}
+ public void stopJankRecorder(String eventName) {
+ LogUtil.d("StubMetrics.startJankRecorder", "stopped jank recorder for %s", eventName);
+ }
+
+ @Override
+ public void recordMemory(String memoryEventName) {
+ LogUtil.d("StubMetrics.startJankRecorder", "recorded memory for %s", memoryEventName);
+ }
+
+ private static class StubTimerEvent {
+ final long startTime;
+
+ StubTimerEvent() {
+ this.startTime = SystemClock.elapsedRealtime();
+ }
+ }
}