Index: tools/telemetry/telemetry/internal/browser/tab_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/browser/tab_unittest.py b/tools/telemetry/telemetry/internal/browser/tab_unittest.py |
index d6d3d63f375eb209eb58923a9e18a4a64e2df674..85f01eeb602cc90a686006741ce9c0ee2e190c02 100644 |
--- a/tools/telemetry/telemetry/internal/browser/tab_unittest.py |
+++ b/tools/telemetry/telemetry/internal/browser/tab_unittest.py |
@@ -177,6 +177,53 @@ class TabTest(tab_test_case.TabTestCase): |
self.assertFalse(self._tab.IsAlive()) |
+class MemoryTabTest(tab_test_case.TabTestCase): |
+ |
+ # Number of consecutively requested memory dumps. |
+ _REQUESTED_DUMP_COUNT = 3 |
+ |
+ @classmethod |
+ def CustomizeBrowserOptions(cls, options): |
+ options.AppendExtraBrowserArgs([ |
+ '--no-sandbox', |
+ '--enable-memory-benchmarking' |
+ ]) |
+ |
+ # This test will be enabled once the |
+ # chrome.memoryBenchmarking.requestMemoryDump API is added to Chrome. See |
+ # crbug.com/505826 |
+ @decorators.Disabled |
+ def testDumpMemory(self): |
+ options = tracing_options.TracingOptions() |
+ options.enable_chrome_trace = True |
+ self._browser.platform.tracing_controller.Start( |
+ options, tracing_category_filter.TracingCategoryFilter( |
+ 'disabled-by-default-memory-infra')) |
+ |
+ # Request several memory dumps in a row and test that they were all |
+ # succesfully created. |
+ dump_ids = set() |
+ for _ in xrange(self._REQUESTED_DUMP_COUNT): |
+ dump_id = self._tab.DumpMemory() |
+ self.assertIsNotNone(dump_id) |
+ dump_ids.add(dump_id) |
+ |
+ # Check that the returned dump IDs were all unique. |
+ self.assertEquals(self._REQUESTED_DUMP_COUNT, len(dump_ids)) |
+ |
+ trace_data = self._browser.platform.tracing_controller.Stop() |
+ |
+ # Test that trace data is parsable. |
+ timeline_model = model.TimelineModel(trace_data) |
+ self.assertGreater(len(timeline_model.processes), 0) |
+ |
+ # Test that the resulting model contains the requested memory dumps. |
+ # TODO(petrcermak): Check that there are no extra memory dumps once |
+ # periodic dumps can be disabled. |
+ self.assertGreaterEqual( |
+ {d.dump_id for d in timeline_model.IterGlobalMemoryDumps()}, dump_ids) |
+ |
+ |
class GpuTabTest(tab_test_case.TabTestCase): |
@classmethod |
def CustomizeBrowserOptions(cls, options): |