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

Commit 2e76423c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "protolog-level-id" into main

* changes:
  Fix PerfettoProtoLogImpl tests
  Add id to LogLevel matching those in the proto objects
parents 3219ce99 c259a67f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -688,7 +688,7 @@ public class PerfettoProtoLogImpl extends IProtoLogClient.Stub implements IProto

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

            os.end(messageConfigToken);
+10 −2
Original line number Diff line number Diff line
@@ -17,10 +17,18 @@
package com.android.internal.protolog.common;

public enum LogLevel {
    DEBUG("d"), VERBOSE("v"), INFO("i"), WARN("w"), ERROR("e"), WTF("wtf");
    DEBUG("d", 1),
    VERBOSE("v", 2),
    INFO("i", 3),
    WARN("w", 4),
    ERROR("e", 5),
    WTF("wtf", 6);

    public final String shortCode;
    LogLevel(String shortCode) {
    public final int id;

    LogLevel(String shortCode, int id) {
        this.shortCode = shortCode;
        this.id = id;
    }
}
+29 −11
Original line number Diff line number Diff line
@@ -399,13 +399,16 @@ public class PerfettoProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(true);
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
        var assertion = assertThrows(RuntimeException.class, () -> implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                new Object[]{5});
                new Object[]{5}));

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
                LogLevel.INFO), eq("UNKNOWN MESSAGE args = (5)"));
        verify(implSpy, never()).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
                LogLevel.INFO), any());
        verify(sReader).getViewerString(eq(1234L));

        Truth.assertThat(assertion).hasMessageThat()
                .contains("Failed to get log message with hash 1234 and args (5)");
    }

    @Test
@@ -434,6 +437,7 @@ public class PerfettoProtoLogImplTest {
        long before;
        long after;
        try {
            assertFalse(sProtoLog.isProtoEnabled());
            traceMonitor.start();
            assertTrue(sProtoLog.isProtoEnabled());

@@ -456,7 +460,8 @@ public class PerfettoProtoLogImplTest {
        Truth.assertThat(protolog.messages.getFirst().getTimestamp().getElapsedNanos())
                .isAtMost(after);
        Truth.assertThat(protolog.messages.getFirst().getMessage())
                .isEqualTo("My test message :: test, 2, 4, 6, 0.400000, 5.000000e-01, 0.6, true");
                .isEqualTo(
                        "My test message :: test, 1, 2, 3, 0.400000, 5.000000e-01, 0.6, true");
    }

    @Test
@@ -489,7 +494,7 @@ public class PerfettoProtoLogImplTest {
        Truth.assertThat(protolog.messages.getFirst().getTimestamp().getElapsedNanos())
                .isAtMost(after);
        Truth.assertThat(protolog.messages.getFirst().getMessage())
                .isEqualTo("My test message :: test, 2, 6, 0.400000, true");
                .isEqualTo("My test message :: test, 1, 3, 0.400000, true");
    }

    @Test
@@ -783,7 +788,7 @@ public class PerfettoProtoLogImplTest {

        Truth.assertThat(protolog.messages).hasSize(1);
        Truth.assertThat(protolog.messages.get(0).getMessage())
                .isEqualTo("My null args: 0, 0, false");
                .isEqualTo("My null args: 0, 0.000000, false");
    }

    @Test
@@ -838,7 +843,7 @@ public class PerfettoProtoLogImplTest {
            sProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP,
                    "This message should not be logged");
            sProtoLog.log(LogLevel.WARN, TestProtoLogGroup.TEST_GROUP,
                "This message should logged %d", 123);
                    "This message should be logged %d", 123);
            sProtoLog.log(LogLevel.ERROR, TestProtoLogGroup.TEST_GROUP,
                    "This message should also be logged %d", 567);
        } finally {
@@ -853,7 +858,7 @@ public class PerfettoProtoLogImplTest {
        Truth.assertThat(protolog.messages.get(0).getLevel())
                .isEqualTo(LogLevel.WARN);
        Truth.assertThat(protolog.messages.get(0).getMessage())
                .isEqualTo("This message should logged 123");
                .isEqualTo("This message should be logged 123");

        Truth.assertThat(protolog.messages.get(1).getLevel())
                .isEqualTo(LogLevel.ERROR);
@@ -861,6 +866,19 @@ public class PerfettoProtoLogImplTest {
                .isEqualTo("This message should also be logged 567");
    }

    @Test
    public void throwsOnLogToLogcatForProcessedMessageMissingLoadedDefinition() {
        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(true);
        var protolog = new PerfettoProtoLogImpl(TestProtoLogGroup.values());

        var exception = assertThrows(RuntimeException.class, () -> {
            protolog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 123, 0, new Object[0]);
        });

        Truth.assertThat(exception).hasMessageThat()
                .contains("Failed to get log message with hash 123");
    }

    private enum TestProtoLogGroup implements IProtoLogGroup {
        TEST_GROUP(true, true, false, "TEST_TAG");

+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ class ViewerConfigProtoBuilder : ProtoLogTool.ProtologViewerConfigBuilder {
                        .setMessageId(key)
                        .setMessage(log.messageString)
                        .setLevel(
                            ProtoLogLevel.forNumber(log.logLevel.ordinal + 1))
                            ProtoLogLevel.forNumber(log.logLevel.id))
                        .setGroupId(groupId)
                        .setLocation(log.position)
            )