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