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

Commit b6237143 authored by Chris Wren's avatar Chris Wren
Browse files

Move MetricsReader to SystemApi

Test: runtest --path frameworks/base/core/tests/coretests/src/android/metrics  && runtest --path frameworks/base/core/tests/coretests/src/com/android/internal/logging/legacy/
Change-Id: If55f0444d5a836f24234182d298ebc128643efc1
parent 38124460
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -25804,6 +25804,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