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

Commit 0a390095 authored by Hall Liu's avatar Hall Liu Committed by Gerrit Code Review
Browse files

Merge "Fix flaky AnalytisTest by locking in EventRecord"

parents 60b722a0 48e26151
Loading
Loading
Loading
Loading
+20 −16
Original line number Original line Diff line number Diff line
@@ -180,7 +180,7 @@ public class EventManager {
            }
            }
        }
        }


        private final List<Event> mEvents = new LinkedList<>();
        private final List<Event> mEvents = Collections.synchronizedList(new LinkedList<>());
        private final Loggable mRecordEntry;
        private final Loggable mRecordEntry;


        public EventRecord(Loggable recordEntry) {
        public EventRecord(Loggable recordEntry) {
@@ -197,7 +197,7 @@ public class EventManager {
        }
        }


        public List<Event> getEvents() {
        public List<Event> getEvents() {
            return mEvents;
            return new LinkedList<>(mEvents);
        }
        }


        public List<EventTiming> extractEventTimings() {
        public List<EventTiming> extractEventTimings() {
@@ -207,11 +207,13 @@ public class EventManager {


            LinkedList<EventTiming> result = new LinkedList<>();
            LinkedList<EventTiming> result = new LinkedList<>();
            Map<String, PendingResponse> pendingResponses = new HashMap<>();
            Map<String, PendingResponse> pendingResponses = new HashMap<>();
            synchronized (mEvents) {
                for (Event event : mEvents) {
                for (Event event : mEvents) {
                    if (requestResponsePairs.containsKey(event.eventId)) {
                    if (requestResponsePairs.containsKey(event.eventId)) {
                        // This event expects a response, so add that expected response to the maps
                        // This event expects a response, so add that expected response to the maps
                        // of pending events.
                        // of pending events.
                    for (EventManager.TimedEventPair p : requestResponsePairs.get(event.eventId)) {
                        for (EventManager.TimedEventPair p : requestResponsePairs.get(
                                event.eventId)) {
                            pendingResponses.put(p.mResponse, new PendingResponse(event.eventId,
                            pendingResponses.put(p.mResponse, new PendingResponse(event.eventId,
                                    event.time, p.mTimeoutMillis, p.mName));
                                    event.time, p.mTimeoutMillis, p.mName));
                        }
                        }
@@ -225,6 +227,7 @@ public class EventManager {
                        }
                        }
                    }
                    }
                }
                }
            }


            return result;
            return result;
        }
        }
@@ -233,7 +236,8 @@ public class EventManager {
            pw.print(mRecordEntry.getDescription());
            pw.print(mRecordEntry.getDescription());


            pw.increaseIndent();
            pw.increaseIndent();
            for (Event event : mEvents) {
            // Iterate over copy of events so that this doesn't hold the lock for too long.
            for (Event event : getEvents()) {
                pw.print(event.timestampString);
                pw.print(event.timestampString);
                pw.print(" - ");
                pw.print(" - ");
                pw.print(event.eventId);
                pw.print(event.eventId);