| Index: tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py
|
| diff --git a/tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py b/tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py
|
| index 00e27f1f2e449dfab96fdf4563b5c4d1c7ab5821..0b9fb1444d7eb386cb01f97d369b73cde72fb305 100644
|
| --- a/tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py
|
| +++ b/tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py
|
| @@ -8,21 +8,58 @@ from collections import namedtuple
|
| from telemetry.page import page
|
| from telemetry.results import page_test_results
|
| from telemetry.web_perf.metrics import layout
|
| +from collections import namedtuple
|
| +from telemetry.web_perf import timeline_interaction_record
|
|
|
| FakeEvent = namedtuple('Event', 'name, start, end')
|
| +Interaction = timeline_interaction_record.TimelineInteractionRecord
|
| +
|
| +
|
| +def GetLayoutMetrics(events, interactions):
|
| + results = page_test_results.PageTestResults()
|
| + results.WillRunPage(page.Page('file://blank.html'))
|
| + layout.LayoutMetric()._AddResultsInternal(events, interactions, results)
|
| + return dict((value.name, value.values) for value in
|
| + results.current_page_run.values)
|
| +
|
| +def FakeLayoutEvent(start, end):
|
| + return FakeEvent(layout.LayoutMetric.EVENT_NAME, start, end)
|
|
|
|
|
| class LayoutMetricUnitTest(unittest.TestCase):
|
| - def testAvgStddev(self):
|
| - results = page_test_results.PageTestResults()
|
| - results.WillRunPage(page.Page('file://blank.html'))
|
| - events = map(FakeEvent._make, [(name, 42, 43) for name in
|
| - layout.LayoutMetric.EVENTS])
|
| - layout.LayoutMetric()._AddResults(events, results)
|
| - expected = set()
|
| - for name in layout.LayoutMetric.EVENTS.itervalues():
|
| - expected.add((name + '_avg', 1))
|
| - expected.add((name + '_stddev', 0))
|
| - actual = set((value.name, value.value) for value in
|
| - results.current_page_run.values)
|
| - self.assertEquals(expected, actual)
|
| + def testLayoutMetric(self):
|
| + events = [FakeLayoutEvent(0, 1),
|
| + FakeLayoutEvent(9, 11),
|
| + FakeLayoutEvent(10, 13),
|
| + FakeLayoutEvent(20, 24),
|
| + FakeLayoutEvent(21, 26),
|
| + FakeLayoutEvent(29, 35),
|
| + FakeLayoutEvent(30, 37),
|
| + FakeLayoutEvent(40, 48),
|
| + FakeLayoutEvent(41, 50),
|
| + FakeEvent('something', 10, 13),
|
| + FakeEvent('FrameView::something', 20, 24),
|
| + FakeEvent('SomeThing::performLayout', 30, 37),
|
| + FakeEvent('something else', 40, 48)]
|
| + interactions = [Interaction('interaction', 10, 20),
|
| + Interaction('interaction', 30, 40)]
|
| +
|
| + self.assertFalse(GetLayoutMetrics(events, []))
|
| + self.assertFalse(GetLayoutMetrics([], interactions))
|
| +
|
| + # The first event starts before the first interaction, so it is ignored.
|
| + # The second event starts before the first interaction, so it is ignored.
|
| + # The third event starts during the first interaction, and its duration is
|
| + # 13 - 10 = 3.
|
| + # The fourth event starts during the first interaction, and its duration is
|
| + # 24 - 20 = 4.
|
| + # The fifth event starts between the two interactions, so it is ignored.
|
| + # The sixth event starts between the two interactions, so it is ignored.
|
| + # The seventh event starts during the second interaction, and its duration
|
| + # is 37 - 30 = 7.
|
| + # The eighth event starts during the second interaction, and its duration is
|
| + # 48 - 40 = 8.
|
| + # The ninth event starts after the last interaction, so it is ignored.
|
| + # The rest of the events are not layout events, so they are ignored.
|
| + self.assertEqual({'layout': [3, 4, 7, 8]}, GetLayoutMetrics(
|
| + events, interactions))
|
|
|