| 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):
|
|
|