summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Wren <cwren@android.com> 2017-04-12 16:19:57 -0400
committer Chris Wren <cwren@android.com> 2017-04-12 19:14:30 -0400
commit5357e642bcd0b97e6afd89ae005d17a2d813734b (patch)
tree99a6b098b8e5f384430064000142f59d286ce238
parent88ab6c1304e3f9a2b1d96deece34bb7cbec27d8f (diff)
don't interpret milliseconds as nanoseconds
The bug fix is in the readEvents() wrapper, but also make sure that both the Event and LogReader interfaces only expose milliseconds. No test changes, because the Java-layer didn't change, the bug was in the JNI wrapper, below the level that's easily testable. Bug: 37205954 Test: runtest --path frameworks/base/core/tests/coretests/src/android/metrics Change-Id: I0c4ad9233a81bcf585ab525b3a5cc63fbb645093
-rw-r--r--core/java/android/metrics/MetricsReader.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/android/metrics/MetricsReader.java b/core/java/android/metrics/MetricsReader.java
index d8768e7276f6..5be977ae183d 100644
--- a/core/java/android/metrics/MetricsReader.java
+++ b/core/java/android/metrics/MetricsReader.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Queue;
+import java.util.concurrent.TimeUnit;
/**
* Read platform logs.
@@ -80,7 +81,7 @@ public class MetricsReader {
mPendingQueue.clear();
mSeenQueue.clear();
for (Event event : nativeEvents) {
- final long eventTimestampMs = event.getTimeNanos() / 1000000;
+ final long eventTimestampMs = event.getTimeMillis();
Object data = event.getData();
Object[] objects;
if (data instanceof Object[]) {
@@ -152,24 +153,25 @@ public class MetricsReader {
*/
@VisibleForTesting
public static class Event {
- long mTimeNanos;
+ long mTimeMillis;
int mPid;
Object mData;
- public Event(long timeNanos, int pid, Object data) {
- mTimeNanos = timeNanos;
+ public Event(long timeMillis, int pid, Object data) {
+ mTimeMillis = timeMillis;
mPid = pid;
mData = data;
}
Event(EventLog.Event nativeEvent) {
- mTimeNanos = nativeEvent.getTimeNanos();
+ mTimeMillis = TimeUnit.MILLISECONDS.convert(
+ nativeEvent.getTimeNanos(), TimeUnit.NANOSECONDS);
mPid = nativeEvent.getProcessId();
mData = nativeEvent.getData();
}
- public long getTimeNanos() {
- return mTimeNanos;
+ public long getTimeMillis() {
+ return mTimeMillis;
}
public int getProcessId() {
@@ -196,7 +198,8 @@ public class MetricsReader {
throws IOException {
// Testing in Android: the Static Final Class Strikes Back!
ArrayList<EventLog.Event> nativeEvents = new ArrayList<>();
- EventLog.readEventsOnWrapping(tags, horizonMs, nativeEvents);
+ long horizonNs = TimeUnit.NANOSECONDS.convert(horizonMs, TimeUnit.MILLISECONDS);
+ EventLog.readEventsOnWrapping(tags, horizonNs, nativeEvents);
for (EventLog.Event nativeEvent : nativeEvents) {
Event event = new Event(nativeEvent);
events.add(event);