Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: tools/telemetry/telemetry/web_perf/metrics/layout_unittest.py

Issue 979243003: Simplify LayoutMetric. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/web_perf/metrics/layout.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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))
« no previous file with comments | « tools/telemetry/telemetry/web_perf/metrics/layout.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698