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

Commit 09eb061d authored by Pablo Gamito's avatar Pablo Gamito Committed by Android (Google) Code Review
Browse files

Merge changes I2786cd73,I0d365c1f into main

* changes:
  Add test to make sure we use ids from ProtoLogGroups in ProtoLogTool
  Use distinct group ids between groups
parents 5b091750 0bda0309
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -17,14 +17,15 @@ android_test {
    srcs: ["src/**/*.java"],
    libs: ["android.test.runner.stubs.system"],
    static_libs: [
        "junit",
        "androidx.test.rules",
        "mockito-target-minus-junit4",
        "truth",
        "platform-test-annotations",
        "flickerlib-parsers",
        "perfetto_trace_java_protos",
        "flickerlib-trace_processor_shell",
        "junit",
        "mockito-target-minus-junit4",
        "perfetto_trace_java_protos",
        "platform-test-annotations",
        "truth",
        "wm_shell_protolog-groups",
    ],
    java_resource_dirs: ["res"],
    certificate: "platform",
+29 −6
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertThrows;
import android.platform.test.annotations.Presubmit;

import com.android.internal.protolog.common.IProtoLogGroup;
import com.android.wm.shell.protolog.ShellProtoLogGroup;

import com.google.common.truth.Truth;

@@ -30,6 +31,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import java.util.ArrayList;
import java.util.List;

/** Test class for {@link ProtoLog}. */
@SuppressWarnings("ConstantConditions")
@Presubmit
@@ -82,23 +86,42 @@ public class ProtoLogTest {
        Truth.assertThat(assertion).hasMessageThat().contains("collision");
    }

    private static final IProtoLogGroup TEST_GROUP_1 = new ProtoLogGroup("TEST_TAG_1", 1);
    private static final IProtoLogGroup TEST_GROUP_2 = new ProtoLogGroup("TEST_TAG_2", 2);
    @Test
    public void noIdCollisionsBetweenGroups() {
        final var collectionOfKnowGroups = new ArrayList<IProtoLogGroup>();
        collectionOfKnowGroups.addAll(List.of(WmProtoLogGroups.values()));
        collectionOfKnowGroups.addAll(List.of(ShellProtoLogGroup.values()));
        collectionOfKnowGroups.add(new ProtoLogGroup("TEST_GROUP"));
        collectionOfKnowGroups.add(new ProtoLogGroup("OTHER_TEST_GROUP"));

        for (int i = 0; i < collectionOfKnowGroups.size(); i++) {
            for (int j = i + 1; j < collectionOfKnowGroups.size(); j++) {
                final var group1 = collectionOfKnowGroups.get(i);
                final var group2 = collectionOfKnowGroups.get(j);
                Truth.assertWithMessage(
                        "ID collision between " + group1.name() + " and " + group2.name())
                        .that(group1.getId()).isNotEqualTo(group2.getId());
            }
        }
    }

    private static final IProtoLogGroup TEST_GROUP_1 = new TestProtoLogGroup("TEST_TAG_1", 1);
    private static final IProtoLogGroup TEST_GROUP_2 = new TestProtoLogGroup("TEST_TAG_2", 2);
    private static final IProtoLogGroup TEST_GROUP_WITH_COLLISION =
            new ProtoLogGroup("TEST_TAG_WITH_COLLISION", 1);
            new TestProtoLogGroup("TEST_TAG_WITH_COLLISION", 1);

    private static class ProtoLogGroup implements IProtoLogGroup {
    private static class TestProtoLogGroup implements IProtoLogGroup {
        private final boolean mEnabled;
        private volatile boolean mLogToProto;
        private volatile boolean mLogToLogcat;
        private final String mTag;
        private final int mId;

        ProtoLogGroup(String tag, int id) {
        TestProtoLogGroup(String tag, int id) {
            this(true, true, false, tag, id);
        }

        ProtoLogGroup(
        TestProtoLogGroup(
                boolean enabled, boolean logToProto, boolean logToLogcat, String tag, int id) {
            this.mEnabled = enabled;
            this.mLogToProto = logToProto;
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ java_test_host {
    test_suites: ["general-tests"],
    srcs: [
        "tests/**/*.kt",
        "tests/**/*.java",
    ],
    test_options: {
        unit_test: true,
+2 −1
Original line number Diff line number Diff line
@@ -20,5 +20,6 @@ data class LogGroup(
    val name: String,
    val enabled: Boolean,
    val textEnabled: Boolean,
    val tag: String
    val tag: String,
    val id: Int,
)
+21 −4
Original line number Diff line number Diff line
@@ -38,13 +38,30 @@ class ProtoLogGroupReader {
        try {
            val classLoader = getClassloaderForJar(jarPath)
            val clazz = classLoader.loadClass(className)
            return loadFromClass(clazz)
        } catch (ex: ReflectiveOperationException) {
            throw RuntimeException("Unable to load ProtoLogGroup enum class", ex)
        }
    }

    fun loadFromClass(clazz: Class<*>): Map<String, LogGroup> {
        try {
            val values = getEnumValues(clazz)
            return values.map { group ->
                group.name() to
                        LogGroup(group.name(), group.isEnabled, group.isLogToLogcat, group.tag)
            }.toMap()
            return loadFromIProtoLogGroups(values)
        } catch (ex: ReflectiveOperationException) {
            throw RuntimeException("Unable to load ProtoLogGroup enum class", ex)
        }
    }

    fun loadFromIProtoLogGroups(values: List<IProtoLogGroup>): Map<String, LogGroup> {
        return values.map { group ->
            group.name() to LogGroup(
                group.name(),
                group.isEnabled,
                group.isLogToLogcat,
                group.tag,
                group.id
            )
        }.toMap()
    }
}
Loading