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

Side by Side Diff: tools/telemetry/telemetry/page/record_wpr_unittest.py

Issue 1140243002: [Telemetry] Move record_wpr from telemetry/page to telemetry/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « tools/telemetry/telemetry/page/record_wpr.py ('k') | tools/telemetry/telemetry/record_wpr.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 import os
6 import sys
7
8 from telemetry import benchmark
9 from telemetry.core import util
10 from telemetry.core import wpr_modes
11 from telemetry import decorators
12 from telemetry.page import page as page_module
13 from telemetry.page import page_set as page_set_module
14 from telemetry.page import page_test
15 from telemetry.page import record_wpr
16 from telemetry.unittest_util import tab_test_case
17
18
19 class MockPage(page_module.Page):
20 def __init__(self, page_set, url):
21 super(MockPage, self).__init__(url=url,
22 page_set=page_set,
23 base_dir=util.GetUnittestDataDir())
24 self.func_calls = []
25
26 def RunNavigateSteps(self, action_runner):
27 self.func_calls.append('RunNavigateSteps')
28 super(MockPage, self).RunNavigateSteps(action_runner)
29
30 def RunPageInteractions(self, _):
31 self.func_calls.append('RunPageInteractions')
32
33 def RunSmoothness(self, _):
34 self.func_calls.append('RunSmoothness')
35
36 class MockPageSet(page_set_module.PageSet):
37 def __init__(self, url=''):
38 super(MockPageSet, self).__init__(
39 archive_data_file='data/archive_files/test.json')
40 self.AddUserStory(MockPage(self, url))
41
42
43 class MockPageTest(page_test.PageTest):
44 def __init__(self):
45 super(MockPageTest, self).__init__()
46 self._action_name_to_run = "RunPageInteractions"
47 self.func_calls = []
48
49 def CustomizeBrowserOptions(self, options):
50 self.func_calls.append('CustomizeBrowserOptions')
51
52 def WillNavigateToPage(self, page, tab):
53 self.func_calls.append('WillNavigateToPage')
54
55 def DidNavigateToPage(self, page, tab):
56 self.func_calls.append('DidNavigateToPage')
57
58 def ValidateAndMeasurePage(self, page, tab, results):
59 self.func_calls.append('ValidateAndMeasurePage')
60
61 def WillStartBrowser(self, platform):
62 self.func_calls.append('WillStartBrowser')
63
64 def DidStartBrowser(self, browser):
65 self.func_calls.append('DidStartBrowser')
66
67 class MockBenchmark(benchmark.Benchmark):
68 test = MockPageTest
69 mock_page_set = None
70
71 @classmethod
72 def AddBenchmarkCommandLineArgs(cls, group):
73 group.add_option('', '--mock-benchmark-url', action='store', type='string')
74
75 def CreatePageSet(self, options):
76 kwargs = {}
77 if options.mock_benchmark_url:
78 kwargs['url'] = options.mock_benchmark_url
79 self.mock_page_set = MockPageSet(**kwargs)
80 return self.mock_page_set
81
82
83 class RecordWprUnitTests(tab_test_case.TabTestCase):
84
85 _base_dir = util.GetUnittestDataDir()
86 _test_data_dir = os.path.join(util.GetUnittestDataDir(), 'page_tests')
87
88 @classmethod
89 def setUpClass(cls):
90 sys.path.extend([cls._base_dir, cls._test_data_dir])
91 super(RecordWprUnitTests, cls).setUpClass()
92 cls._url = cls.UrlOfUnittestFile('blank.html')
93
94 # When the RecorderPageTest is created from a PageSet, we do not have a
95 # PageTest to use. In this case, we will record every available action.
96 def testRunPage_AllActions(self):
97 record_page_test = record_wpr.RecorderPageTest()
98 page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
99
100 record_page_test.RunNavigateSteps(page, self._tab)
101 self.assertTrue('RunNavigateSteps' in page.func_calls)
102
103 record_page_test.RunPage(page, self._tab, results=None)
104 self.assertTrue('RunPageInteractions' in page.func_calls)
105
106 # When the RecorderPageTest is created from a Benchmark, the benchmark will
107 # have a PageTest, specified by its test attribute.
108 def testRunPage_OnlyRunBenchmarkAction(self):
109 record_page_test = record_wpr.RecorderPageTest()
110 record_page_test.page_test = MockBenchmark().test()
111 page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
112 record_page_test.RunPage(page, self._tab, results=None)
113 self.assertTrue('RunPageInteractions' in page.func_calls)
114 self.assertFalse('RunSmoothness' in page.func_calls)
115
116 def testRunPage_CallBenchmarksPageTestsFunctions(self):
117 record_page_test = record_wpr.RecorderPageTest()
118 record_page_test.page_test = MockBenchmark().test()
119 page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
120 record_page_test.RunPage(page, self._tab, results=None)
121 self.assertEqual(1, len(record_page_test.page_test.func_calls))
122 self.assertEqual('ValidateAndMeasurePage',
123 record_page_test.page_test.func_calls[0])
124
125 @decorators.Disabled('chromeos') # crbug.com/404868.
126 def testWprRecorderWithPageSet(self):
127 flags = ['--browser', self._browser.browser_type,
128 '--device', self._device]
129 mock_page_set = MockPageSet(url=self._url)
130 wpr_recorder = record_wpr.WprRecorder(self._test_data_dir,
131 mock_page_set, flags)
132 results = wpr_recorder.CreateResults()
133 wpr_recorder.Record(results)
134 self.assertEqual(set(mock_page_set.pages), results.pages_that_succeeded)
135
136 def testWprRecorderWithBenchmark(self):
137 flags = ['--mock-benchmark-url', self._url,
138 '--browser', self._browser.browser_type,
139 '--device', self._device]
140 mock_benchmark = MockBenchmark()
141 wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, mock_benchmark,
142 flags)
143 results = wpr_recorder.CreateResults()
144 wpr_recorder.Record(results)
145 self.assertEqual(set(mock_benchmark.mock_page_set.pages),
146 results.pages_that_succeeded)
147
148 def testPageSetBaseDirFlag(self):
149 flags = [
150 '--page-set-base-dir', self._test_data_dir,
151 '--mock-benchmark-url', self._url,
152 '--browser', self._browser.browser_type,
153 '--device', self._device
154 ]
155 mock_benchmark = MockBenchmark()
156 wpr_recorder = record_wpr.WprRecorder(
157 'non-existent-dummy-dir', mock_benchmark, flags)
158 results = wpr_recorder.CreateResults()
159 wpr_recorder.Record(results)
160 self.assertEqual(set(mock_benchmark.mock_page_set.pages),
161 results.pages_that_succeeded)
162
163 def testCommandLineFlags(self):
164 flags = [
165 '--page-repeat', '2',
166 '--mock-benchmark-url', self._url,
167 '--upload',
168 ]
169 wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, MockBenchmark(),
170 flags)
171 # page_runner command-line args
172 self.assertEquals(2, wpr_recorder.options.page_repeat)
173 # benchmark command-line args
174 self.assertEquals(self._url, wpr_recorder.options.mock_benchmark_url)
175 # record_wpr command-line arg to upload to cloud-storage.
176 self.assertTrue(wpr_recorder.options.upload)
177 # invalid command-line args
178 self.assertFalse(hasattr(wpr_recorder.options, 'not_a_real_option'))
179
180 def testRecordingEnabled(self):
181 flags = ['--mock-benchmark-url', self._url]
182 wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, MockBenchmark(),
183 flags)
184 self.assertEqual(wpr_modes.WPR_RECORD,
185 wpr_recorder.options.browser_options.wpr_mode)
186
187 # When the RecorderPageTest CustomizeBrowserOptions/WillStartBrowser/
188 # DidStartBrowser function is called, it forwards the call to the PageTest
189 def testRecorderPageTest_BrowserMethods(self):
190 flags = ['--mock-benchmark-url', self._url]
191 record_page_test = record_wpr.RecorderPageTest()
192 record_page_test.page_test = MockBenchmark().test()
193 wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, MockBenchmark(),
194 flags)
195 record_page_test.CustomizeBrowserOptions(wpr_recorder.options)
196 record_page_test.WillStartBrowser(self._tab.browser.platform)
197 record_page_test.DidStartBrowser(self._tab.browser)
198 self.assertTrue(
199 'CustomizeBrowserOptions' in record_page_test.page_test.func_calls)
200 self.assertTrue('WillStartBrowser' in record_page_test.page_test.func_calls)
201 self.assertTrue('DidStartBrowser' in record_page_test.page_test.func_calls)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/record_wpr.py ('k') | tools/telemetry/telemetry/record_wpr.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698