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

Commit 9cae44ac authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android (Google) Code Review
Browse files

Merge "EventLogger + test fixes"

parents da9efd89 4a45a4f9
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -36,8 +36,11 @@ import java.util.Locale;
 */
public class EventLogger {

    /** Prefix for the title added at the beginning of a {@link #dump(PrintWriter)} operation */
    private static final String DUMP_TITLE_PREFIX = "Events log: ";

    /** Identifies the source of events. */
    private final String mTag;
    @Nullable private final String mTag;

    /** Stores the events using a ring buffer. */
    private final ArrayDeque<Event> mEvents;
@@ -55,7 +58,7 @@ public class EventLogger {
     * @param size the maximum number of events to keep in log
     * @param tag the string displayed before the recorded log
     */
    public EventLogger(int size, String tag) {
    public EventLogger(int size, @Nullable String tag) {
        mEvents = new ArrayDeque<>(size);
        mMemSize = size;
        mTag = tag;
@@ -64,10 +67,10 @@ public class EventLogger {
    /** Enqueues {@code event} to be logged. */
    public synchronized void enqueue(Event event) {
        if (mEvents.size() >= mMemSize) {
            mEvents.removeLast();
            mEvents.removeFirst();
        }

        mEvents.addFirst(event);
        mEvents.addLast(event);
    }

    /**
@@ -91,13 +94,19 @@ public class EventLogger {
        dump(pw, "" /* prefix */);
    }

    protected String getDumpTitle() {
        if (mTag == null) {
            return DUMP_TITLE_PREFIX;
        }
        return DUMP_TITLE_PREFIX + mTag;
    }

    /** Dumps events using {@link PrintWriter} with a certain indent. */
    public synchronized void dump(PrintWriter pw, String indent) {
        pw.println(indent + "Events log: " + mTag);
        pw.println(getDumpTitle());

        String childrenIndention = indent + "  ";
        for (Event evt : mEvents) {
            pw.println(childrenIndention + evt.toString());
            pw.println(indent + evt.toString());
        }
    }

+7 −6
Original line number Diff line number Diff line
@@ -71,9 +71,10 @@ public class EventLoggerTest {
        }

        @Test
        public void testThatPrintWriterProducesEmptyListFromEmptyLog() {
        public void testThatPrintWriterProducesOnlyTitleFromEmptyLog() {
            mEventLogger.dump(mTestPrintWriter);
            assertThat(mTestStringWriter.toString()).isEmpty();
            assertThat(mTestStringWriter.toString())
                    .isEqualTo(mEventLogger.getDumpTitle() + "\n");
        }
    }

@@ -87,27 +88,27 @@ public class EventLoggerTest {
                        // insertion order, max size is 3
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2 },
                        // expected events
                        new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_1 }
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2 }
                    },
                    {
                        // insertion order, max size is 3
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_3, TEST_EVENT_2 },
                        // expected events
                        new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_3, TEST_EVENT_1 }
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_3, TEST_EVENT_2 }
                    },
                    {
                        // insertion order, max size is 3
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2, TEST_EVENT_3,
                            TEST_EVENT_4 },
                        // expected events
                        new EventLogger.Event[] { TEST_EVENT_4, TEST_EVENT_3, TEST_EVENT_2 }
                        new EventLogger.Event[] { TEST_EVENT_2, TEST_EVENT_3, TEST_EVENT_4 }
                    },
                    {
                        // insertion order, max size is 3
                        new EventLogger.Event[] { TEST_EVENT_1, TEST_EVENT_2, TEST_EVENT_3,
                            TEST_EVENT_4, TEST_EVENT_5 },
                        // expected events
                        new EventLogger.Event[] { TEST_EVENT_5, TEST_EVENT_4, TEST_EVENT_3 }
                        new EventLogger.Event[] { TEST_EVENT_3, TEST_EVENT_4, TEST_EVENT_5 }
                    }
            });
        }