Chromium Code Reviews| Index: tools/telemetry/telemetry/timeline/trace_event_importer.py |
| diff --git a/tools/telemetry/telemetry/timeline/trace_event_importer.py b/tools/telemetry/telemetry/timeline/trace_event_importer.py |
| index d7eb5a3bcd9189da574f754c90d5e836631a26c1..81982d44ff7f52ffbbc2ca1f64db584308963af1 100644 |
| --- a/tools/telemetry/telemetry/timeline/trace_event_importer.py |
| +++ b/tools/telemetry/telemetry/timeline/trace_event_importer.py |
| @@ -12,6 +12,7 @@ import copy |
| import telemetry.timeline.async_slice as tracing_async_slice |
| import telemetry.timeline.flow_event as tracing_flow_event |
| from telemetry.timeline import importer |
| +from telemetry.timeline import memory_dump_event |
| from telemetry.timeline import trace_data as trace_data_module |
| @@ -25,6 +26,7 @@ class TraceEventTimelineImporter(importer.TimelineImporter): |
| self._all_async_events = [] |
| self._all_object_events = [] |
| self._all_flow_events = [] |
| + self._all_memory_dump_events = {} |
|
eakuefner
2015/06/25 15:56:20
nit: self._all_memory_dump_events_by_dump_id would
perezju
2015/06/26 11:34:52
Done.
|
| self._events = trace_data.GetEventsFor(trace_data_module.CHROME_TRACE_PART) |
| @@ -178,6 +180,15 @@ class TraceEventTimelineImporter(importer.TimelineImporter): |
| 'event': event, |
| 'thread': thread}) |
| + def _ProcessMemoryDumpEvent(self, event): |
| + dump_id = event.get('id') |
| + if not dump_id: |
| + self._model.import_errors.append( |
| + 'Memroy dump event with missing dump id.') |
|
eakuefner
2015/06/25 15:56:20
nit: Memroy -> Memory
perezju
2015/06/26 11:34:52
Done.
|
| + return |
| + self._all_memory_dump_events.setdefault(dump_id, []) |
| + self._all_memory_dump_events[dump_id].append(event) |
| + |
| def ImportEvents(self): |
| """Walks through the events_ list and outputs the structures discovered to |
| model_. |
| @@ -208,6 +219,8 @@ class TraceEventTimelineImporter(importer.TimelineImporter): |
| self._ProcessObjectEvent(event) |
| elif phase == 's' or phase == 't' or phase == 'f': |
| self._ProcessFlowEvent(event) |
| + elif phase == 'v': |
| + self._ProcessMemoryDumpEvent(event) |
| else: |
| self._model.import_errors.append('Unrecognized event phase: ' + |
| phase + '(' + event['name'] + ')') |
| @@ -227,6 +240,7 @@ class TraceEventTimelineImporter(importer.TimelineImporter): |
| self._SetGpuProcess() |
| self._CreateExplicitObjects() |
| self._CreateImplicitObjects() |
| + self._CreateMemoryDumps() |
| def _CreateAsyncSlices(self): |
| if len(self._all_async_events) == 0: |
| @@ -392,6 +406,11 @@ class TraceEventTimelineImporter(importer.TimelineImporter): |
| # Make this event the next start event in this flow. |
| flow_id_to_event[event['id']] = flow_event |
| + def _CreateMemoryDumps(self): |
| + self._model.SetMemoryDumpEvents( |
| + memory_dump_event.MemoryDumpEvent(events) |
| + for events in self._all_memory_dump_events.itervalues()) |
| + |
| def _SetBrowserProcess(self): |
| for thread in self._model.GetAllThreads(): |
| if thread.name == 'CrBrowserMain': |