OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import os | 5 import os |
6 import unittest | 6 import unittest |
7 | 7 |
8 from measurements import timeline_based_measurement as tbm_module | 8 from measurements import timeline_based_measurement as tbm_module |
9 from metrics import timeline_based_metric | 9 from metrics import timeline_based_metric |
10 from telemetry.core import wpr_modes | 10 from telemetry.core import wpr_modes |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 | 50 |
51 self.assertTrue(interactions[1].is_loading_resources) | 51 self.assertTrue(interactions[1].is_loading_resources) |
52 self.assertEquals(25, interactions[1].start) | 52 self.assertEquals(25, interactions[1].start) |
53 self.assertEquals(30, interactions[1].end) | 53 self.assertEquals(30, interactions[1].end) |
54 | 54 |
55 def testAddResults(self): | 55 def testAddResults(self): |
56 results = page_measurement_results.PageMeasurementResults() | 56 results = page_measurement_results.PageMeasurementResults() |
57 class FakeSmoothMetric(timeline_based_metric.TimelineBasedMetric): | 57 class FakeSmoothMetric(timeline_based_metric.TimelineBasedMetric): |
58 def AddResults(self, model, renderer_thread, | 58 def AddResults(self, model, renderer_thread, |
59 interaction_record, results): | 59 interaction_record, results): |
60 results.Add( | 60 results.Add('FakeSmoothMetric', 'ms', 1) |
61 interaction_record.GetResultNameFor('FakeSmoothMetric'), 'ms', 1) | |
62 | 61 |
63 class FakeLoadingMetric(timeline_based_metric.TimelineBasedMetric): | 62 class FakeLoadingMetric(timeline_based_metric.TimelineBasedMetric): |
64 def AddResults(self, model, renderer_thread, | 63 def AddResults(self, model, renderer_thread, |
65 interaction_record, results): | 64 interaction_record, results): |
66 assert interaction_record.logical_name == 'LogicalName2' | 65 assert interaction_record.logical_name == 'LogicalName2' |
67 results.Add( | 66 results.Add('FakeLoadingMetric', 'ms', 2) |
68 interaction_record.GetResultNameFor('FakeLoadingMetric'), 'ms', 2) | |
69 | 67 |
70 class TimelineBasedMetricsWithFakeMetricHandler( | 68 class TimelineBasedMetricsWithFakeMetricHandler( |
71 tbm_module._TimelineBasedMetrics): # pylint: disable=W0212 | 69 tbm_module._TimelineBasedMetrics): # pylint: disable=W0212 |
72 def CreateMetricsForTimelineInteractionRecord(self, interaction): | 70 def CreateMetricsForTimelineInteractionRecord(self, interaction): |
73 res = [] | 71 res = [] |
74 if interaction.is_smooth: | 72 if interaction.is_smooth: |
75 res.append(FakeSmoothMetric()) | 73 res.append(FakeSmoothMetric()) |
76 if interaction.is_loading_resources: | 74 if interaction.is_loading_resources: |
77 res.append(FakeLoadingMetric()) | 75 res.append(FakeLoadingMetric()) |
78 return res | 76 return res |
79 | 77 |
80 metric = TimelineBasedMetricsWithFakeMetricHandler( | 78 metric = TimelineBasedMetricsWithFakeMetricHandler( |
81 self.model, self.renderer_thread) | 79 self.model, self.renderer_thread) |
82 ps = page_set.PageSet.FromDict({ | 80 ps = page_set.PageSet.FromDict({ |
83 "description": "hello", | 81 "description": "hello", |
84 "archive_path": "foo.wpr", | 82 "archive_path": "foo.wpr", |
85 "pages": [ | 83 "pages": [ |
86 {"url": "http://www.bar.com/"} | 84 {"url": "http://www.bar.com/"} |
87 ] | 85 ] |
88 }, os.path.dirname(__file__)) | 86 }, os.path.dirname(__file__)) |
89 results.WillMeasurePage(ps.pages[0]) | 87 results.WillMeasurePage(ps.pages[0]) |
90 metric.AddResults(results) | 88 metric.AddResults(results) |
91 results.DidMeasurePage() | 89 results.DidMeasurePage() |
92 | 90 |
93 v = results.FindAllPageSpecificValuesNamed('LogicalName1/FakeSmoothMetric') | 91 v = results.FindAllPageSpecificValuesNamed('LogicalName1-FakeSmoothMetric') |
94 self.assertEquals(len(v), 1) | 92 self.assertEquals(len(v), 1) |
95 v = results.FindAllPageSpecificValuesNamed('LogicalName2/FakeLoadingMetric') | 93 v = results.FindAllPageSpecificValuesNamed('LogicalName2-FakeLoadingMetric') |
96 self.assertEquals(len(v), 1) | 94 self.assertEquals(len(v), 1) |
97 | 95 |
98 | 96 |
99 class TimelineBasedMeasurementTest( | 97 class TimelineBasedMeasurementTest( |
100 page_measurement_unittest_base.PageMeasurementUnitTestBase): | 98 page_measurement_unittest_base.PageMeasurementUnitTestBase): |
101 def setUp(self): | 99 def setUp(self): |
102 self._options = options_for_unittests.GetCopy() | 100 self._options = options_for_unittests.GetCopy() |
103 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF | 101 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF |
104 | 102 |
105 def testTimelineBasedForSmoke(self): | 103 def testTimelineBasedForSmoke(self): |
106 ps = self.CreatePageSetFromFileInUnittestDataDir( | 104 ps = self.CreatePageSetFromFileInUnittestDataDir( |
107 'interaction_enabled_page.html') | 105 'interaction_enabled_page.html') |
108 setattr(ps.pages[0], 'smoothness', {'action': 'wait', | 106 setattr(ps.pages[0], 'smoothness', {'action': 'wait', |
109 'javascript': 'window.animationDone'}) | 107 'javascript': 'window.animationDone'}) |
110 measurement = tbm_module.TimelineBasedMeasurement() | 108 measurement = tbm_module.TimelineBasedMeasurement() |
111 results = self.RunMeasurement(measurement, ps, | 109 results = self.RunMeasurement(measurement, ps, |
112 options=self._options) | 110 options=self._options) |
113 self.assertEquals(0, len(results.failures)) | 111 self.assertEquals(0, len(results.failures)) |
| 112 v = results.FindAllPageSpecificValuesNamed('CenterAnimation-jank') |
| 113 self.assertEquals(len(v), 2) |
| 114 v = results.FindAllPageSpecificValuesNamed('DrawerAnimation-jank') |
| 115 self.assertEquals(len(v), 2) |
| 116 |
OLD | NEW |