| Index: tools/telemetry/telemetry/web_perf/metrics/memory_timeline_unittest.py
|
| diff --git a/tools/telemetry/telemetry/web_perf/metrics/memory_timeline_unittest.py b/tools/telemetry/telemetry/web_perf/metrics/memory_timeline_unittest.py
|
| deleted file mode 100644
|
| index 6a681b7584980dfc1ca95ffe2a9d5b0ad335baf2..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/web_perf/metrics/memory_timeline_unittest.py
|
| +++ /dev/null
|
| @@ -1,147 +0,0 @@
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import collections
|
| -import unittest
|
| -
|
| -from telemetry.internal.results import page_test_results
|
| -from telemetry.page import page
|
| -import mock
|
| -from telemetry.timeline import memory_dump_event
|
| -from telemetry.web_perf.metrics import memory_timeline
|
| -from telemetry.web_perf import timeline_interaction_record
|
| -
|
| -
|
| -def MockProcessDumpEvent(dump_id, name, start, memory_usage):
|
| - process_dump = mock.Mock()
|
| - process_dump.dump_id = dump_id
|
| - process_dump.process_name = name
|
| - process_dump.start = start
|
| - process_dump.end = start
|
| - if memory_usage is None:
|
| - memory_usage = {}
|
| - elif not isinstance(memory_usage, dict):
|
| - memory_usage = dict.fromkeys(memory_timeline.DEFAULT_METRICS, memory_usage)
|
| - process_dump.has_mmaps = any(metric in memory_usage for metric
|
| - in memory_timeline.DEFAULT_METRICS)
|
| - process_dump.GetMemoryUsage = mock.Mock(return_value=memory_usage)
|
| - return process_dump
|
| -
|
| -
|
| -def MockTimelineModel(process_dumps):
|
| - dumps_by_id = collections.defaultdict(list)
|
| - for process_dump in process_dumps:
|
| - dumps_by_id[process_dump.dump_id].append(process_dump)
|
| -
|
| - global_dumps = sorted((memory_dump_event.GlobalMemoryDump(dumps)
|
| - for dumps in dumps_by_id.itervalues()),
|
| - key=lambda dump: dump.start)
|
| -
|
| - mock_model = mock.Mock()
|
| - mock_model.IterGlobalMemoryDumps = mock.Mock(return_value=global_dumps)
|
| - return mock_model
|
| -
|
| -
|
| -def TestInteraction(start, end):
|
| - return timeline_interaction_record.TimelineInteractionRecord(
|
| - 'Action_TestInteraction', start, end)
|
| -
|
| -
|
| -class MemoryTimelineMetricUnitTest(unittest.TestCase):
|
| - def getResultsDict(self, model, interactions):
|
| - def strip_prefix(key, prefix):
|
| - self.assertTrue(key.startswith(prefix))
|
| - return key[len(prefix):]
|
| -
|
| - results = page_test_results.PageTestResults()
|
| - test_page = page.Page('http://google.com')
|
| - results.WillRunPage(test_page)
|
| - metric = memory_timeline.MemoryTimelineMetric()
|
| - metric.AddResults(model, None, interactions, results)
|
| - result_dict = {strip_prefix(v.name, 'memory_'): v.values
|
| - for v in results.current_page_run.values}
|
| - results.DidRunPage(test_page)
|
| - return result_dict
|
| -
|
| - def getOverallPssTotal(self, model, interactions):
|
| - results = self.getResultsDict(model, interactions)
|
| - self.assertTrue('mmaps_overall_pss_total' in results)
|
| - return results['mmaps_overall_pss_total']
|
| -
|
| - def testSingleMemoryDump(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, 123)])
|
| - interactions = [TestInteraction(1, 10)]
|
| - self.assertEquals([123], self.getOverallPssTotal(model, interactions))
|
| -
|
| - def testMultipleMemoryDumps(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, 123),
|
| - MockProcessDumpEvent('dump2', 'browser', 5, 456)])
|
| - interactions = [TestInteraction(1, 10)]
|
| - self.assertEquals([123, 456], self.getOverallPssTotal(model, interactions))
|
| -
|
| - def testMultipleInteractions(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, 123),
|
| - MockProcessDumpEvent('dump2', 'browser', 5, 456),
|
| - MockProcessDumpEvent('dump3', 'browser', 13, 789)])
|
| - interactions = [TestInteraction(1, 10),
|
| - TestInteraction(12, 15)]
|
| - self.assertEquals([123, 456, 789],
|
| - self.getOverallPssTotal(model, interactions))
|
| -
|
| - def testDumpsOutsideInteractionsAreFilteredOut(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 1, 111),
|
| - MockProcessDumpEvent('dump2', 'browser', 5, 123),
|
| - MockProcessDumpEvent('dump3', 'browser', 11, 456),
|
| - MockProcessDumpEvent('dump4', 'browser', 13, 555),
|
| - MockProcessDumpEvent('dump5', 'browser', 17, 789)])
|
| - interactions = [TestInteraction(3, 10),
|
| - TestInteraction(12, 15)]
|
| - self.assertEquals([123, 555], self.getOverallPssTotal(model, interactions))
|
| -
|
| - def testDumpsWithNoMemoryMaps(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, {'blink': 123}),
|
| - MockProcessDumpEvent('dump2', 'browser', 5, {'blink': 456})])
|
| - interactions = [TestInteraction(1, 10)]
|
| - results = self.getResultsDict(model, interactions)
|
| - self.assertItemsEqual(['blink_total', 'blink_browser'], results.keys())
|
| - self.assertListEqual([123, 456], results['blink_total'])
|
| - self.assertListEqual([123, 456], results['blink_browser'])
|
| -
|
| - def testDumpsWithSomeMemoryMaps(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, 123),
|
| - MockProcessDumpEvent('dump2', 'browser', 5, None)])
|
| - interactions = [TestInteraction(1, 10)]
|
| - self.assertRaises(AssertionError, self.getResultsDict, model, interactions)
|
| -
|
| - def testReturnsNoneWhenAllDumpsAreFilteredOut(self):
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'bowser', 0, 123),
|
| - MockProcessDumpEvent('dump2', 'browser', 11, 789)])
|
| - interactions = [TestInteraction(1, 10)]
|
| - self.assertEquals(None, self.getOverallPssTotal(model, interactions))
|
| -
|
| - def testResultsBrokenDownByProcess(self):
|
| - metrics = memory_timeline.DEFAULT_METRICS
|
| - stats1 = {metric: value for value, metric in enumerate(metrics)}
|
| - stats2 = {metric: value for value, metric in enumerate(reversed(metrics))}
|
| - total = len(metrics) - 1
|
| -
|
| - expected = {}
|
| - expected.update(('%s_browser' % metric, [value])
|
| - for metric, value in stats1.iteritems())
|
| - expected.update(('%s_gpu_process' % metric, [value])
|
| - for metric, value in stats2.iteritems())
|
| - expected.update(('%s_total' % metric, [total]) for metric in metrics)
|
| -
|
| - model = MockTimelineModel([
|
| - MockProcessDumpEvent('dump1', 'browser', 2, stats1),
|
| - MockProcessDumpEvent('dump1', 'GPU Process', 5, stats2)])
|
| - interactions = [TestInteraction(1, 10)]
|
| - self.assertEquals(expected, self.getResultsDict(model, interactions))
|
|
|