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

Commit 506771a7 authored by Pablo Gamito's avatar Pablo Gamito
Browse files

Order LogLevel enum values

This CL orders the LogLevel enum values by increasing severity. This
ordering is needed by ProtoLog to determine from which log level to
start logging. The ordinal value is used to compare the level values and
from which one to start logging.

Test: atest com.android.internal.protolog.ProcessedPerfettoProtoLogImplTest
Flag: EXEMPT minor re-order change
Bug: 390585237
Change-Id: I862b82640fa7e07d118e4912ab84261b8ca26acc
parent e9f9bbf3
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -618,7 +618,7 @@ public abstract class PerfettoProtoLogImpl extends IProtoLogClient.Stub implemen


            os.write(MessageData.MESSAGE_ID, messageHash);
            os.write(MessageData.MESSAGE_ID, messageHash);
            os.write(MESSAGE, message);
            os.write(MESSAGE, message);
            os.write(LEVEL, level.id);
            os.write(LEVEL, level.protoMessageId);
            os.write(GROUP_ID, logGroup.getId());
            os.write(GROUP_ID, logGroup.getId());


            os.end(messageConfigToken);
            os.end(messageConfigToken);
+1 −1
Original line number Original line Diff line number Diff line
@@ -299,7 +299,7 @@ public class ProtoLogDataSource extends DataSource<ProtoLogDataSource.Instance,
                        case DEFAULT:
                        case DEFAULT:
                            break;
                            break;
                        case ENABLE_ALL:
                        case ENABLE_ALL:
                            defaultLogFromLevel = LogLevel.DEBUG;
                            defaultLogFromLevel = LogLevel.VERBOSE;
                            break;
                            break;
                        default:
                        default:
                            throw new RuntimeException("Unhandled ProtoLog tracing mode type");
                            throw new RuntimeException("Unhandled ProtoLog tracing mode type");
+6 −4
Original line number Original line Diff line number Diff line
@@ -20,18 +20,20 @@ import android.ravenwood.annotation.RavenwoodKeepWholeClass;


@RavenwoodKeepWholeClass
@RavenwoodKeepWholeClass
public enum LogLevel {
public enum LogLevel {
    DEBUG("d", 1),
    // Ordered by increasing severity. We rely on the natural order or ordinal value to determine
    // from which level to log.
    VERBOSE("v", 2),
    VERBOSE("v", 2),
    DEBUG("d", 1),
    INFO("i", 3),
    INFO("i", 3),
    WARN("w", 4),
    WARN("w", 4),
    ERROR("e", 5),
    ERROR("e", 5),
    WTF("wtf", 6);
    WTF("wtf", 6);


    public final String shortCode;
    public final String shortCode;
    public final int id;
    public final int protoMessageId;


    LogLevel(String shortCode, int id) {
    LogLevel(String shortCode, int protoMessageId) {
        this.shortCode = shortCode;
        this.shortCode = shortCode;
        this.id = id;
        this.protoMessageId = protoMessageId;
    }
    }
}
}
+60 −6
Original line number Original line Diff line number Diff line
@@ -291,12 +291,11 @@ public class ProcessedPerfettoProtoLogImplTest {
        final ResultReader reader = new ResultReader(mWriter.write(), mTraceConfig);
        final ResultReader reader = new ResultReader(mWriter.write(), mTraceConfig);
        final ProtoLogTrace protolog = reader.readProtoLogTrace();
        final ProtoLogTrace protolog = reader.readProtoLogTrace();


        Truth.assertThat(protolog.messages).hasSize(5);
        Truth.assertThat(protolog.messages).hasSize(4);
        Truth.assertThat(protolog.messages.get(0).getLevel()).isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(protolog.messages.get(0).getLevel()).isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(protolog.messages.get(1).getLevel()).isEqualTo(LogLevel.VERBOSE);
        Truth.assertThat(protolog.messages.get(1).getLevel()).isEqualTo(LogLevel.WARN);
        Truth.assertThat(protolog.messages.get(2).getLevel()).isEqualTo(LogLevel.WARN);
        Truth.assertThat(protolog.messages.get(2).getLevel()).isEqualTo(LogLevel.ERROR);
        Truth.assertThat(protolog.messages.get(3).getLevel()).isEqualTo(LogLevel.ERROR);
        Truth.assertThat(protolog.messages.get(3).getLevel()).isEqualTo(LogLevel.WTF);
        Truth.assertThat(protolog.messages.get(4).getLevel()).isEqualTo(LogLevel.WTF);
    }
    }


    @Test
    @Test
@@ -702,7 +701,7 @@ public class ProcessedPerfettoProtoLogImplTest {
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.DEBUG))
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.DEBUG))
                        .isTrue();
                        .isTrue();
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP,
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP,
                        LogLevel.VERBOSE)).isTrue();
                        LogLevel.VERBOSE)).isFalse();
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.INFO))
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.INFO))
                        .isTrue();
                        .isTrue();
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.WARN))
                Truth.assertThat(sProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.WARN))
@@ -866,6 +865,61 @@ public class ProcessedPerfettoProtoLogImplTest {
                .isEqualTo("This message should also be logged 567");
                .isEqualTo("This message should also be logged 567");
    }
    }


    @Test
    public void verboseLowerThanDebugLogLevelDefaultLevel() throws IOException {
        PerfettoTraceMonitor traceMonitor = PerfettoTraceMonitor.newBuilder()
                .enableProtoLog(LogLevel.DEBUG, List.of(), TEST_PROTOLOG_DATASOURCE_NAME)
                .build();
        try {
            traceMonitor.start();
            sProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP,
                    "This message should not be logged");
            sProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP,
                    "This message should be logged %d", 123);
        } finally {
            traceMonitor.stop(mWriter);
        }

        final ResultReader reader = new ResultReader(mWriter.write(), mTraceConfig);
        final ProtoLogTrace protolog = reader.readProtoLogTrace();

        Truth.assertThat(protolog.messages).hasSize(1);

        Truth.assertThat(protolog.messages.get(0).getLevel())
                .isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(protolog.messages.get(0).getMessage())
                .isEqualTo("This message should be logged 123");
    }

    @Test
    public void verboseLowerThanDebugLogLevel() throws IOException {
        PerfettoTraceMonitor traceMonitor = PerfettoTraceMonitor.newBuilder()
                .enableProtoLog(LogLevel.VERBOSE, List.of(
                        new PerfettoTraceMonitor.Builder.ProtoLogGroupOverride(
                                TestProtoLogGroup.TEST_GROUP.name(), LogLevel.DEBUG, false)
                ), TEST_PROTOLOG_DATASOURCE_NAME)
                .build();
        try {
            traceMonitor.start();
            sProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP,
                    "This message should not be logged");
            sProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP,
                    "This message should be logged %d", 123);
        } finally {
            traceMonitor.stop(mWriter);
        }

        final ResultReader reader = new ResultReader(mWriter.write(), mTraceConfig);
        final ProtoLogTrace protolog = reader.readProtoLogTrace();

        Truth.assertThat(protolog.messages).hasSize(1);

        Truth.assertThat(protolog.messages.get(0).getLevel())
                .isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(protolog.messages.get(0).getMessage())
                .isEqualTo("This message should be logged 123");
    }

    @Test
    @Test
    public void enablesLogGroupAfterLoadingConfig() {
    public void enablesLogGroupAfterLoadingConfig() {
        sProtoLog.stopLoggingToLogcat(
        sProtoLog.stopLoggingToLogcat(
+2 −2
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ public class ProtologDataSourceTest {
                                        .build()
                                        .build()
                        ).build());
                        ).build());


        Truth.assertThat(tlsState.getLogFromLevel("SOME_TAG")).isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(tlsState.getLogFromLevel("SOME_TAG")).isEqualTo(LogLevel.VERBOSE);
        Truth.assertThat(tlsState.getShouldCollectStacktrace("SOME_TAG")).isFalse();
        Truth.assertThat(tlsState.getShouldCollectStacktrace("SOME_TAG")).isFalse();
    }
    }


@@ -76,7 +76,7 @@ public class ProtologDataSourceTest {
                ).build()
                ).build()
        );
        );


        Truth.assertThat(tlsState.getLogFromLevel("SOME_TAG")).isEqualTo(LogLevel.DEBUG);
        Truth.assertThat(tlsState.getLogFromLevel("SOME_TAG")).isEqualTo(LogLevel.VERBOSE);
        Truth.assertThat(tlsState.getShouldCollectStacktrace("SOME_TAG")).isFalse();
        Truth.assertThat(tlsState.getShouldCollectStacktrace("SOME_TAG")).isFalse();
    }
    }


Loading