Loading tests/Tracing/Android.bp +6 −5 Original line number Diff line number Diff line Loading @@ -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", Loading tests/Tracing/src/com/android/internal/protolog/ProtoLogTest.java +29 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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; Loading tools/protologtool/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ java_test_host { test_suites: ["general-tests"], srcs: [ "tests/**/*.kt", "tests/**/*.java", ], test_options: { unit_test: true, Loading tools/protologtool/src/com/android/protolog/tool/LogGroup.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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, ) tools/protologtool/src/com/android/protolog/tool/ProtoLogGroupReader.kt +21 −4 Original line number Diff line number Diff line Loading @@ -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
tests/Tracing/Android.bp +6 −5 Original line number Diff line number Diff line Loading @@ -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", Loading
tests/Tracing/src/com/android/internal/protolog/ProtoLogTest.java +29 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading Loading @@ -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; Loading
tools/protologtool/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ java_test_host { test_suites: ["general-tests"], srcs: [ "tests/**/*.kt", "tests/**/*.java", ], test_options: { unit_test: true, Loading
tools/protologtool/src/com/android/protolog/tool/LogGroup.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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, )
tools/protologtool/src/com/android/protolog/tool/ProtoLogGroupReader.kt +21 −4 Original line number Diff line number Diff line Loading @@ -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() } }