Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e02bca5 authored by Chris Wren's avatar Chris Wren Committed by Android (Google) Code Review
Browse files

Merge "Move MetricsReader to SystemApi"

parents 8754a0ff b6237143
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -25900,6 +25900,47 @@ package android.media.tv {
}
package android.metrics {
  public class LogMaker {
    ctor public LogMaker(int);
    ctor public LogMaker(java.lang.Object[]);
    method public android.metrics.LogMaker addTaggedData(int, java.lang.Object);
    method public void deserialize(java.lang.Object[]);
    method public int getCategory();
    method public long getCounterBucket();
    method public java.lang.String getCounterName();
    method public int getCounterValue();
    method public java.lang.String getPackageName();
    method public int getSubtype();
    method public java.lang.Object getTaggedData(int);
    method public long getTimestamp();
    method public int getType();
    method public boolean isLongCounterBucket();
    method public boolean isValidValue(java.lang.Object);
    method public java.lang.Object[] serialize();
    method public android.metrics.LogMaker setCategory(int);
    method public android.metrics.LogMaker setCounterBucket(int);
    method public android.metrics.LogMaker setCounterBucket(long);
    method public android.metrics.LogMaker setCounterName(java.lang.String);
    method public android.metrics.LogMaker setCounterValue(int);
    method public android.metrics.LogMaker setPackageName(java.lang.String);
    method public android.metrics.LogMaker setSubtype(int);
    method public android.metrics.LogMaker setTimestamp(long);
    method public android.metrics.LogMaker setType(int);
  }
  public class MetricsReader {
    ctor public MetricsReader();
    method public void checkpoint();
    method public boolean hasNext();
    method public android.metrics.LogMaker next();
    method public void read(long);
    method public void reset();
  }
}
package android.mtp {
  public final class MtpConstants {
+26 −21
Original line number Diff line number Diff line
@@ -13,13 +13,13 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.internal.logging;
package android.metrics;

import android.util.EventLog;
import android.annotation.SystemApi;
import android.util.Log;
import android.util.SparseArray;
import android.view.View;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;


@@ -29,68 +29,73 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 *
 * @hide
 */

public class LogBuilder {
@SystemApi
public class LogMaker {
    private static final String TAG = "LogBuilder";

    // Min required eventlog line length.
    // See: android/util/cts/EventLogTest.java
    // Size checks enforced here are intended only as sanity checks;
    // your logs may be truncated earlier. Please log responsibly.
    /**
     * Min required eventlog line length.
     * See: android/util/cts/EventLogTest.java
     * Size checks enforced here are intended only as sanity checks;
     * your logs may be truncated earlier. Please log responsibly.
     *
     * @hide
     */
    @VisibleForTesting
    public static final int MAX_SERIALIZED_SIZE = 4000;

    private SparseArray<Object> entries = new SparseArray();

    public LogBuilder(int mainCategory) {
    public LogMaker(int mainCategory) {
        setCategory(mainCategory);
    }

    /* Deserialize from the eventlog */
    public LogBuilder(Object[] items) {
    public LogMaker(Object[] items) {
      deserialize(items);
    }

    public LogBuilder setCategory(int category) {
    public LogMaker setCategory(int category) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_CATEGORY, category);
        return this;
    }

    public LogBuilder setType(int type) {
    public LogMaker setType(int type) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_TYPE, type);
        return this;
    }

    public LogBuilder setSubtype(int subtype) {
    public LogMaker setSubtype(int subtype) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_SUBTYPE, subtype);
        return this;
    }

    public LogBuilder setTimestamp(long timestamp) {
    public LogMaker setTimestamp(long timestamp) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_TIMESTAMP, timestamp);
        return this;
    }

    public LogBuilder setPackageName(String packageName) {
    public LogMaker setPackageName(String packageName) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_PACKAGENAME, packageName);
        return this;
    }

    public LogBuilder setCounterName(String name) {
    public LogMaker setCounterName(String name) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_NAME, name);
        return this;
    }

    public LogBuilder setCounterBucket(int bucket) {
    public LogMaker setCounterBucket(int bucket) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_BUCKET, bucket);
        return this;
    }

    public LogBuilder setCounterBucket(long bucket) {
    public LogMaker setCounterBucket(long bucket) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_BUCKET, bucket);
        return this;
    }

    public LogBuilder setCounterValue(int value) {
    public LogMaker setCounterValue(int value) {
        entries.put(MetricsEvent.RESERVED_FOR_LOGBUILDER_VALUE, value);
        return this;
    }
@@ -100,7 +105,7 @@ public class LogBuilder {
     * @param value One of Integer, Long, Float, String
     * @return
     */
    public LogBuilder addTaggedData(int tag, Object value) {
    public LogMaker addTaggedData(int tag, Object value) {
        if (isValidValue(value)) {
            throw new IllegalArgumentException(
                    "Value must be loggable type - int, long, float, String");
+7 −3
Original line number Diff line number Diff line
@@ -13,7 +13,9 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.internal.logging;
package android.metrics;

import android.annotation.SystemApi;

import com.android.internal.logging.legacy.LegacyConversionLogger;
import com.android.internal.logging.legacy.EventLogCollector;
@@ -22,10 +24,12 @@ import java.util.Queue;

/**
 * Read platform logs.
 * @hide
 */
@SystemApi
public class MetricsReader {
    private EventLogCollector mReader;
    private Queue<LogBuilder> mEventQueue;
    private Queue<LogMaker> mEventQueue;
    private long mLastEventMs;
    private long mCheckpointMs;

@@ -57,7 +61,7 @@ public class MetricsReader {
    }

    /* Next entry in the current log session. */
    public LogBuilder next() {
    public LogMaker next() {
        return mEventQueue == null ? null : mEventQueue.remove();
    }

+10 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.internal.logging;

import android.content.Context;
import android.metrics.LogMaker;
import android.os.Build;
import android.view.View;

@@ -37,7 +38,7 @@ public class MetricsLogger {
        }
        EventLogTags.writeSysuiViewVisibility(category, 100);
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(category)
                new LogMaker(category)
                        .setType(MetricsEvent.TYPE_OPEN)
                        .serialize());
    }
@@ -48,7 +49,7 @@ public class MetricsLogger {
        }
        EventLogTags.writeSysuiViewVisibility(category, 0);
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(category)
                new LogMaker(category)
                        .setType(MetricsEvent.TYPE_CLOSE)
                        .serialize());
    }
@@ -70,7 +71,7 @@ public class MetricsLogger {
    public static void action(Context context, int category) {
        EventLogTags.writeSysuiAction(category, "");
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(category)
                new LogMaker(category)
                        .setType(MetricsEvent.TYPE_ACTION)
                        .serialize());
    }
@@ -78,7 +79,7 @@ public class MetricsLogger {
    public static void action(Context context, int category, int value) {
        EventLogTags.writeSysuiAction(category, Integer.toString(value));
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(category)
                new LogMaker(category)
                        .setType(MetricsEvent.TYPE_ACTION)
                        .setSubtype(value)
                        .serialize());
@@ -87,13 +88,13 @@ public class MetricsLogger {
    public static void action(Context context, int category, boolean value) {
        EventLogTags.writeSysuiAction(category, Boolean.toString(value));
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(category)
                new LogMaker(category)
                        .setType(MetricsEvent.TYPE_ACTION)
                        .setSubtype(value ? 1 : 0)
                        .serialize());
    }

    public static void action(LogBuilder content) {
    public static void action(LogMaker content) {
        if (content.getType() == MetricsEvent.TYPE_UNKNOWN) {
            content.setType(MetricsEvent.TYPE_ACTION);
        }
@@ -106,7 +107,7 @@ public class MetricsLogger {
            throw new IllegalArgumentException("Must define metric category");
        }
        EventLogTags.writeSysuiAction(category, pkg);
        EventLogTags.writeSysuiMultiAction(new LogBuilder(category)
        EventLogTags.writeSysuiMultiAction(new LogMaker(category)
                .setType(MetricsEvent.TYPE_ACTION)
                .setPackageName(pkg)
                .serialize());
@@ -116,7 +117,7 @@ public class MetricsLogger {
    public static void count(Context context, String name, int value) {
        EventLogTags.writeSysuiCount(name, value);
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
                new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
                        .setCounterName(name)
                        .setCounterValue(value)
                        .serialize());
@@ -126,7 +127,7 @@ public class MetricsLogger {
    public static void histogram(Context context, String name, int bucket) {
        EventLogTags.writeSysuiHistogram(name, bucket);
        EventLogTags.writeSysuiMultiAction(
                new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
                new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
                        .setCounterName(name)
                        .setCounterBucket(bucket)
                        .setCounterValue(1)
+11 −13
Original line number Diff line number Diff line
@@ -15,9 +15,7 @@
 */
package com.android.internal.logging.legacy;

import android.os.Bundle;

import com.android.internal.logging.LogBuilder;
import android.metrics.LogMaker;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;

import java.util.HashMap;
@@ -34,20 +32,20 @@ public class LegacyConversionLogger implements TronLogger {
    public static final int TYPE_HISTOGRAM = 2;
    public static final int TYPE_EVENT = 3;

    private final Queue<LogBuilder> mQueue;
    private final Queue<LogMaker> mQueue;
    private HashMap<String, Boolean> mConfig;

    public LegacyConversionLogger() {
        mQueue = new LinkedList<>();
    }

    public Queue<LogBuilder> getEvents() {
    public Queue<LogMaker> getEvents() {
        return mQueue;
    }

    @Override
    public void increment(String counterName) {
        LogBuilder b = new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
        LogMaker b = new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
                .setCounterName(counterName)
                .setCounterValue(1);
        mQueue.add(b);
@@ -55,7 +53,7 @@ public class LegacyConversionLogger implements TronLogger {

    @Override
    public void incrementBy(String counterName, int value) {
        LogBuilder b = new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
        LogMaker b = new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_COUNTER)
                .setCounterName(counterName)
                .setCounterValue(value);
        mQueue.add(b);
@@ -63,7 +61,7 @@ public class LegacyConversionLogger implements TronLogger {

    @Override
    public void incrementIntHistogram(String counterName, int bucket) {
        LogBuilder b = new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
        LogMaker b = new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
                .setCounterName(counterName)
                .setCounterBucket(bucket)
                .setCounterValue(1);
@@ -72,7 +70,7 @@ public class LegacyConversionLogger implements TronLogger {

    @Override
    public void incrementLongHistogram(String counterName, long bucket) {
        LogBuilder b = new LogBuilder(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
        LogMaker b = new LogMaker(MetricsEvent.RESERVED_FOR_LOGBUILDER_HISTOGRAM)
                .setCounterName(counterName)
                .setCounterBucket(bucket)
                .setCounterValue(1);
@@ -80,16 +78,16 @@ public class LegacyConversionLogger implements TronLogger {
    }

    @Override
    public LogBuilder obtain() {
        return new LogBuilder(MetricsEvent.VIEW_UNKNOWN);
    public LogMaker obtain() {
        return new LogMaker(MetricsEvent.VIEW_UNKNOWN);
    }

    @Override
    public void dispose(LogBuilder proto) {
    public void dispose(LogMaker proto) {
    }

    @Override
    public void addEvent(LogBuilder proto) {
    public void addEvent(LogMaker proto) {
        mQueue.add(proto);
    }

Loading