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

Commit a6ee664d authored by Charles Yo's avatar Charles Yo
Browse files

Revert "Update ProtoLog tests"

Revert submission 28147757-no-processing-protolog

Reason for revert: b/351458758

Reverted changes: /q/submissionid:28147757-no-processing-protolog

Change-Id: I0f80c55ec64d2034aa92424a92e1dda82ae258c3
parent 7c82d9ed
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -25,11 +25,11 @@ import android.platform.test.annotations.Presubmit;

import androidx.test.filters.SmallTest;

import com.android.internal.protolog.ProtoLog;
import com.android.internal.protolog.ProtoLogGroup;
import com.android.internal.protolog.ProtoLogImpl;
import com.android.internal.protolog.common.IProtoLog;
import com.android.internal.protolog.common.LogLevel;
import com.android.internal.protolog.ProtoLog;

import org.junit.After;
import org.junit.Ignore;
@@ -53,6 +53,9 @@ public class ProtoLogIntegrationTest {
        runWith(mockedProtoLog, this::testProtoLog);
        verify(mockedProtoLog).log(eq(LogLevel.ERROR), eq(ProtoLogGroup.TEST_GROUP),
                anyInt(), eq(0b0010010111),
                eq(com.android.internal.protolog.ProtoLogGroup.TEST_GROUP.isLogToLogcat()
                        ? "Test completed successfully: %b %d %x %f %% %s"
                        : null),
                eq(new Object[]{true, 1L, 2L, 0.3, "ok"}));
    }

+10 −9
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.LinkedList;
import java.util.TreeMap;

/**
 * Test class for {@link ProtoLogImpl}.
@@ -89,7 +90,7 @@ public class LegacyProtoLogImplTest {
        //noinspection ResultOfMethodCallIgnored
        mFile.delete();
        mProtoLog = new LegacyProtoLogImpl(mFile, mViewerConfigFilename,
                1024 * 1024, mReader, 1024, () -> {});
                1024 * 1024, mReader, 1024, new TreeMap<>(), () -> {});
    }

    @After
@@ -141,7 +142,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{true, 10000, 30000, "test", 0.000003});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
@@ -158,7 +159,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{true, 10000, 0.0001, 0.00002, "test"});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
@@ -175,7 +176,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d",
                new Object[]{5});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
@@ -191,7 +192,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{5});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
@@ -207,7 +208,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d",
                new Object[]{5});

        verify(implSpy, never()).passToLogcat(any(), any(), any());
@@ -276,7 +277,7 @@ public class LegacyProtoLogImplTest {
        long before = SystemClock.elapsedRealtimeNanos();
        mProtoLog.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234,
                0b1110101001010100,
                0b1110101001010100, null,
                new Object[]{"test", 1, 2, 3, 0.4, 0.5, 0.6, true});
        long after = SystemClock.elapsedRealtimeNanos();
        mProtoLog.stopProtoLog(mock(PrintWriter.class), true);
@@ -301,7 +302,7 @@ public class LegacyProtoLogImplTest {
        long before = SystemClock.elapsedRealtimeNanos();
        mProtoLog.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234,
                0b01100100,
                0b01100100, null,
                new Object[]{"test", 1, 0.1, true});
        long after = SystemClock.elapsedRealtimeNanos();
        mProtoLog.stopProtoLog(mock(PrintWriter.class), true);
@@ -325,7 +326,7 @@ public class LegacyProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);
        mProtoLog.startProtoLog(mock(PrintWriter.class));
        mProtoLog.log(LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234,
                0b11, new Object[]{true});
                0b11, null, new Object[]{true});
        mProtoLog.stopProtoLog(mock(PrintWriter.class), true);
        try (InputStream is = new FileInputStream(mFile)) {
            ProtoInputStream ip = new ProtoInputStream(is);
+53 −42
Original line number Diff line number Diff line
@@ -111,9 +111,6 @@ public class PerfettoProtoLogImplTest {
        //noinspection ResultOfMethodCallIgnored
        mFile.delete();

        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(false);
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        mViewerConfigBuilder = Protolog.ProtoLogViewerConfig.newBuilder()
                .addGroups(
                        Protolog.ProtoLogViewerConfig.Group.newBuilder()
@@ -160,9 +157,8 @@ public class PerfettoProtoLogImplTest {
        mCacheUpdater = () -> {};
        mReader = Mockito.spy(new ProtoLogViewerConfigReader(viewerConfigInputStreamProvider));
        mProtoLog = new PerfettoProtoLogImpl(
                viewerConfigInputStreamProvider, mReader,
                viewerConfigInputStreamProvider, mReader, new TreeMap<>(),
                () -> mCacheUpdater.run());
        mProtoLog.registerGroups(TestProtoLogGroup.values());
    }

    @After
@@ -214,15 +210,15 @@ public class PerfettoProtoLogImplTest {
            // Shouldn't be logging anything except WTF unless explicitly requested in the group
            // override.
            mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP, 2,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WARN, TestProtoLogGroup.TEST_GROUP, 3,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.ERROR, TestProtoLogGroup.TEST_GROUP, 4,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WTF, TestProtoLogGroup.TEST_GROUP, 5,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -244,15 +240,15 @@ public class PerfettoProtoLogImplTest {
        try {
            traceMonitor.start();
            mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP, 2,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WARN, TestProtoLogGroup.TEST_GROUP, 3,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.ERROR, TestProtoLogGroup.TEST_GROUP, 4,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WTF, TestProtoLogGroup.TEST_GROUP, 5,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -278,15 +274,15 @@ public class PerfettoProtoLogImplTest {
        try {
            traceMonitor.start();
            mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP, 2,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WARN, TestProtoLogGroup.TEST_GROUP, 3,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.ERROR, TestProtoLogGroup.TEST_GROUP, 4,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WTF, TestProtoLogGroup.TEST_GROUP, 5,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -308,15 +304,15 @@ public class PerfettoProtoLogImplTest {
        try {
            traceMonitor.start();
            mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.VERBOSE, TestProtoLogGroup.TEST_GROUP, 2,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WARN, TestProtoLogGroup.TEST_GROUP, 3,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.ERROR, TestProtoLogGroup.TEST_GROUP, 4,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
            mProtoLog.log(LogLevel.WTF, TestProtoLogGroup.TEST_GROUP, 5,
                    LogDataType.BOOLEAN, new Object[]{true});
                    LogDataType.BOOLEAN, null, new Object[]{true});
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -333,14 +329,14 @@ public class PerfettoProtoLogImplTest {
    }

    @Test
    public void log_logcatEnabled() {
    public void log_logcatEnabledExternalMessage() {
        when(mReader.getViewerString(anyLong())).thenReturn("test %b %d %% 0x%x %s %f");
        PerfettoProtoLogImpl implSpy = Mockito.spy(mProtoLog);
        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(true);
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{true, 10000, 30000, "test", 0.000003});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
@@ -357,16 +353,31 @@ public class PerfettoProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{true, 10000, 0.0001, 0.00002, "test"});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
                LogLevel.INFO),
                eq("FORMAT_ERROR \"test %b %d %% %x %s %f\", "
                        + "args=(true, 10000, 1.0E-4, 2.0E-5, test)"));
                eq("UNKNOWN MESSAGE (1234) true 10000 1.0E-4 2.0E-5 test"));
        verify(mReader).getViewerString(eq(1234L));
    }

    @Test
    public void log_logcatEnabledInlineMessage() {
        when(mReader.getViewerString(anyLong())).thenReturn("test %d");
        PerfettoProtoLogImpl implSpy = Mockito.spy(mProtoLog);
        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(true);
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d",
                new Object[]{5});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
                LogLevel.INFO), eq("test 5"));
        verify(mReader, never()).getViewerString(anyLong());
    }

    @Test
    public void log_logcatEnabledNoMessage() {
        when(mReader.getViewerString(anyLong())).thenReturn(null);
@@ -375,11 +386,11 @@ public class PerfettoProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToProto(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, null,
                new Object[]{5});

        verify(implSpy).passToLogcat(eq(TestProtoLogGroup.TEST_GROUP.getTag()), eq(
                LogLevel.INFO), eq("UNKNOWN MESSAGE#1234 (5)"));
                LogLevel.INFO), eq("UNKNOWN MESSAGE (1234) 5"));
        verify(mReader).getViewerString(eq(1234L));
    }

@@ -390,7 +401,7 @@ public class PerfettoProtoLogImplTest {
        TestProtoLogGroup.TEST_GROUP.setLogToLogcat(false);

        implSpy.log(
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321,
                LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d",
                new Object[]{5});

        verify(implSpy, never()).passToLogcat(any(), any(), any());
@@ -414,7 +425,7 @@ public class PerfettoProtoLogImplTest {
            before = SystemClock.elapsedRealtimeNanos();
            mProtoLog.log(
                    LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, messageHash,
                    0b1110101001010100,
                    0b1110101001010100, null,
                    new Object[]{"test", 1, 2, 3, 0.4, 0.5, 0.6, true});
            after = SystemClock.elapsedRealtimeNanos();
        } finally {
@@ -446,8 +457,8 @@ public class PerfettoProtoLogImplTest {
            before = SystemClock.elapsedRealtimeNanos();
            mProtoLog.log(
                    LogLevel.INFO, TestProtoLogGroup.TEST_GROUP,
                    "My test message :: %s, %d, %o, %x, %f, %b",
                    "test", 1, 2, 3, 0.4, true);
                    "My test message :: %s, %d, %o, %x, %f, %e, %g, %b",
                    "test", 1, 2, 3, 0.4, 0.5, 0.6, true);
            after = SystemClock.elapsedRealtimeNanos();
        } finally {
            traceMonitor.stop(mWriter);
@@ -462,7 +473,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, 4, 6, 0.400000, true");
                .isEqualTo("My test message :: test, 2, 4, 6, 0.400000, 5.000000e-01, 0.6, true");
    }

    private long addMessageToConfig(ProtologCommon.ProtoLogLevel logLevel, String message) {
@@ -491,7 +502,7 @@ public class PerfettoProtoLogImplTest {
            before = SystemClock.elapsedRealtimeNanos();
            mProtoLog.log(
                    LogLevel.INFO, TestProtoLogGroup.TEST_GROUP, messageHash,
                    0b01100100,
                    0b01100100, null,
                    new Object[]{"test", 1, 0.1, true});
            after = SystemClock.elapsedRealtimeNanos();
        } finally {
@@ -509,7 +520,7 @@ public class PerfettoProtoLogImplTest {
        try {
            traceMonitor.start();
            mProtoLog.log(LogLevel.DEBUG, TestProtoLogGroup.TEST_GROUP, 1,
                    0b11, new Object[]{true});
                    0b11, null, new Object[]{true});
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -533,7 +544,7 @@ public class PerfettoProtoLogImplTest {

            ProtoLogImpl.setSingleInstance(mProtoLog);
            ProtoLogImpl.d(TestProtoLogGroup.TEST_GROUP, 1,
                    0b11, true);
                    0b11, null, true);
        } finally {
            traceMonitor.stop(mWriter);
        }
@@ -607,7 +618,7 @@ public class PerfettoProtoLogImplTest {
                .isFalse();
        Truth.assertThat(mProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.ERROR))
                .isFalse();
        Truth.assertThat(mProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.WTF)).isFalse();
        Truth.assertThat(mProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.WTF)).isTrue();

        PerfettoTraceMonitor traceMonitor1 =
                PerfettoTraceMonitor.newBuilder().enableProtoLog(true,
@@ -685,7 +696,7 @@ public class PerfettoProtoLogImplTest {
        Truth.assertThat(mProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.ERROR))
                .isFalse();
        Truth.assertThat(mProtoLog.isEnabled(TestProtoLogGroup.TEST_GROUP, LogLevel.WTF))
                .isFalse();
                .isTrue();
    }

    private enum TestProtoLogGroup implements IProtoLogGroup {
+13 −12
Original line number Diff line number Diff line
@@ -58,50 +58,51 @@ public class ProtoLogImplTest {
    public void d_logCalled() {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.d(TestProtoLogGroup.TEST_GROUP, 1234, 4321);
        ProtoLogImpl.d(TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.DEBUG), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    @Test
    public void v_logCalled() {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.v(TestProtoLogGroup.TEST_GROUP, 1234, 4321);
        ProtoLogImpl.v(TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.VERBOSE), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    @Test
    public void i_logCalled() {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.i(TestProtoLogGroup.TEST_GROUP, 1234, 4321);
        ProtoLogImpl.i(TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.INFO), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    @Test
    public void w_logCalled() {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.w(TestProtoLogGroup.TEST_GROUP, 1234, 4321);
        ProtoLogImpl.w(TestProtoLogGroup.TEST_GROUP, 1234,
                4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.WARN), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    @Test
    public void e_logCalled() {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.e(TestProtoLogGroup.TEST_GROUP, 1234, 4321);
        ProtoLogImpl.e(TestProtoLogGroup.TEST_GROUP, 1234, 4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.ERROR), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    @Test
@@ -109,10 +110,10 @@ public class ProtoLogImplTest {
        IProtoLog mockedProtoLog = mock(IProtoLog.class);
        ProtoLogImpl.setSingleInstance(mockedProtoLog);
        ProtoLogImpl.wtf(TestProtoLogGroup.TEST_GROUP,
                1234, 4321);
                1234, 4321, "test %d");
        verify(mockedProtoLog).log(eq(LogLevel.WTF), eq(
                TestProtoLogGroup.TEST_GROUP),
                eq(1234L), eq(4321), eq(new Object[]{}));
                eq(1234L), eq(4321), eq("test %d"), eq(new Object[]{}));
    }

    private enum TestProtoLogGroup implements IProtoLogGroup {