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

Commit c7d73ac5 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Pass tracing instance index to start and stop callbacks

This will be used by the ProtoLog service to track running instances more accurately.

Test: atest com.android.internal.protolog
Flag: android.tracing.client_side_proto_logging
Change-Id: Ib6ee906c4c924d014456d91a7079d0cdc1e5e2e8
parent 8528462f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -768,7 +768,8 @@ public class PerfettoProtoLogImpl extends IProtoLogClient.Stub implements IProto
        return -1;
    }

    private synchronized void onTracingInstanceStart(ProtoLogDataSource.ProtoLogConfig config) {
    private synchronized void onTracingInstanceStart(
            int instanceIdx, ProtoLogDataSource.ProtoLogConfig config) {
        final LogLevel defaultLogFrom = config.getDefaultGroupConfig().logFrom;
        for (int i = defaultLogFrom.ordinal(); i < LogLevel.values().length; i++) {
            mDefaultLogLevelCounts[i]++;
@@ -801,7 +802,8 @@ public class PerfettoProtoLogImpl extends IProtoLogClient.Stub implements IProto
        this.mTracingInstances.incrementAndGet();
    }

    private synchronized void onTracingInstanceStop(ProtoLogDataSource.ProtoLogConfig config) {
    private synchronized void onTracingInstanceStop(
            int instanceIdx, ProtoLogDataSource.ProtoLogConfig config) {
        this.mTracingInstances.decrementAndGet();

        final LogLevel defaultLogFrom = config.getDefaultGroupConfig().logFrom;
+20 −10
Original line number Diff line number Diff line
@@ -49,12 +49,12 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance,
        ProtoLogDataSource.TlsState,
        ProtoLogDataSource.IncrementalState> {

    private final Consumer<ProtoLogConfig> mOnStart;
    private final Instance.TracingInstanceStartCallback mOnStart;
    private final Runnable mOnFlush;
    private final Consumer<ProtoLogConfig> mOnStop;
    private final Instance.TracingInstanceStopCallback mOnStop;

    public ProtoLogDataSource(Consumer<ProtoLogConfig> onStart, Runnable onFlush,
            Consumer<ProtoLogConfig> onStop) {
    public ProtoLogDataSource(Instance.TracingInstanceStartCallback onStart, Runnable onFlush,
            Instance.TracingInstanceStopCallback onStop) {
        super("android.protolog");
        this.mOnStart = onStart;
        this.mOnFlush = onFlush;
@@ -267,20 +267,30 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance,

    public static class Instance extends DataSourceInstance {

        private final Consumer<ProtoLogConfig> mOnStart;
        public interface TracingInstanceStartCallback {
            void run(int instanceIdx, ProtoLogConfig config);
        }

        public interface TracingInstanceStopCallback {
            void run(int instanceIdx, ProtoLogConfig config);
        }

        private final TracingInstanceStartCallback mOnStart;
        private final Runnable mOnFlush;
        private final Consumer<ProtoLogConfig> mOnStop;
        private final TracingInstanceStopCallback mOnStop;
        private final ProtoLogConfig mConfig;
        private final int mInstanceIndex;

        public Instance(
                DataSource<Instance, TlsState, IncrementalState> dataSource,
                int instanceIdx,
                ProtoLogConfig config,
                Consumer<ProtoLogConfig> onStart,
                TracingInstanceStartCallback onStart,
                Runnable onFlush,
                Consumer<ProtoLogConfig> onStop
                TracingInstanceStopCallback onStop
        ) {
            super(dataSource, instanceIdx);
            this.mInstanceIndex = instanceIdx;
            this.mOnStart = onStart;
            this.mOnFlush = onFlush;
            this.mOnStop = onStop;
@@ -289,7 +299,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance,

        @Override
        public void onStart(StartCallbackArguments args) {
            this.mOnStart.accept(this.mConfig);
            this.mOnStart.run(this.mInstanceIndex, this.mConfig);
        }

        @Override
@@ -299,7 +309,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance,

        @Override
        public void onStop(StopCallbackArguments args) {
            this.mOnStop.accept(this.mConfig);
            this.mOnStop.run(this.mInstanceIndex, this.mConfig);
        }
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public class ProtologDataSourceTest {

    @Test
    public void allEnabledTraceMode() {
        final ProtoLogDataSource ds = new ProtoLogDataSource((c) -> {}, () -> {}, (c) -> {});
        final ProtoLogDataSource ds = new ProtoLogDataSource((idx, c) -> {}, () -> {}, (idx, c) -> {});

        final ProtoLogDataSource.TlsState tlsState = createTlsState(
                DataSourceConfigOuterClass.DataSourceConfig.newBuilder().setProtologConfig(
@@ -154,7 +154,7 @@ public class ProtologDataSourceTest {
    private ProtoLogDataSource.TlsState createTlsState(
            DataSourceConfigOuterClass.DataSourceConfig config) {
        final ProtoLogDataSource ds =
                Mockito.spy(new ProtoLogDataSource((c) -> {}, () -> {}, (c) -> {}));
                Mockito.spy(new ProtoLogDataSource((idx, c) -> {}, () -> {}, (idx, c) -> {}));

        ProtoInputStream configStream = new ProtoInputStream(config.toByteArray());
        final ProtoLogDataSource.Instance dsInstance = Mockito.spy(