Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Unified Diff: tools/telemetry/telemetry/timeline/model.py

Issue 1196253011: [Telemetry] Adding Memory Timeline Metric (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better names for tests Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/timeline/model.py
diff --git a/tools/telemetry/telemetry/timeline/model.py b/tools/telemetry/telemetry/timeline/model.py
index a147d43df3625bb073993e13cecd87567cf2c5b5..85cf3c1d1513b67ce4ec09befba5a45996df2484 100644
--- a/tools/telemetry/telemetry/timeline/model.py
+++ b/tools/telemetry/telemetry/timeline/model.py
@@ -13,6 +13,7 @@ from telemetry.timeline import async_slice as async_slice_module
from telemetry.timeline import bounds
from telemetry.timeline import event_container
from telemetry.timeline import inspector_importer
+from telemetry.timeline import memory_dump_event
from telemetry.timeline import process as process_module
from telemetry.timeline import slice as slice_module
from telemetry.timeline import surface_flinger_importer
@@ -69,9 +70,37 @@ class TimelineModel(event_container.TimelineEventContainer):
self.import_errors = []
self.metadata = []
self.flow_events = []
+ self._memory_dump_events = None
if trace_data is not None:
self.ImportTraces(trace_data, shift_world_to_zero=shift_world_to_zero)
+ def SetMemoryDumpEvents(self, memory_dump_events):
+ """Populates the model with a sequence of MemoryDumpEvent objects."""
+ assert not self._frozen and self._memory_dump_events is None
+ # keep events sorted in cronological order
+ self._memory_dump_events = sorted(memory_dump_events,
+ key=lambda event: event.start)
+
+ def IterMemoryDumpEvents(self, reverse=False):
+ """Iterate over the memory dump events of this model.
+
+ Args:
+ reverse: A boolean indicating whether to yield events in reversed time
+ order. By default events are generated in chronological order.
+ """
+ if self._memory_dump_events is None:
+ return iter([]) # empty iterator
+ elif reverse:
+ return reversed(self._memory_dump_events)
+ else:
+ return iter(self._memory_dump_events)
+
+ def IterEventsInThisContainer(self, event_type_predicate, event_predicate):
+ if event_type_predicate(memory_dump_event.MemoryDumpEvent):
+ for event in self.IterMemoryDumpEvents():
+ if event_predicate(event):
+ yield event
+
def IterChildContainers(self):
for process in self._processes.itervalues():
yield process

Powered by Google App Engine
This is Rietveld 408576698