Merge "Fix flaky AnalytisTest by locking in EventRecord"
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user