OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2012 The Chromium Authors. All rights reserved. | 2 # Copyright 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 import logging | 5 import logging |
6 import sys | 6 import sys |
7 import time | 7 import time |
8 | 8 |
9 from telemetry import benchmark | 9 from telemetry import benchmark |
10 from telemetry.core import browser_options | 10 from telemetry.core import browser_options |
11 from telemetry.core import discover | 11 from telemetry.core import discover |
12 from telemetry.core import wpr_modes | 12 from telemetry.core import wpr_modes |
13 from telemetry.page import page_measurement | |
14 from telemetry.page import page_runner | 13 from telemetry.page import page_runner |
15 from telemetry.page import page_set | 14 from telemetry.page import page_set |
16 from telemetry.page import page_test | 15 from telemetry.page import page_test |
17 from telemetry.page import profile_creator | 16 from telemetry.page import profile_creator |
18 from telemetry.page import test_expectations | 17 from telemetry.page import test_expectations |
19 from telemetry.results import results_options | 18 from telemetry.results import results_options |
20 | 19 |
21 | 20 |
22 class RecorderPageTest(page_test.PageTest): # pylint: disable=W0223 | 21 class RecorderPageTest(page_test.PageTest): # pylint: disable=W0223 |
23 def __init__(self, action_names): | 22 def __init__(self, action_names): |
(...skipping 16 matching lines...) Expand all Loading... |
40 self.page_test.DidNavigateToPage(page, tab) | 39 self.page_test.DidNavigateToPage(page, tab) |
41 | 40 |
42 def WillRunActions(self, page, tab): | 41 def WillRunActions(self, page, tab): |
43 if self.page_test: | 42 if self.page_test: |
44 self.page_test.WillRunActions(page, tab) | 43 self.page_test.WillRunActions(page, tab) |
45 | 44 |
46 def DidRunActions(self, page, tab): | 45 def DidRunActions(self, page, tab): |
47 if self.page_test: | 46 if self.page_test: |
48 self.page_test.DidRunActions(page, tab) | 47 self.page_test.DidRunActions(page, tab) |
49 | 48 |
50 def ValidatePage(self, page, tab, results): | 49 def ValidateAndMeasurePage(self, page, tab, results): |
51 if self.page_test: | 50 if self.page_test: |
52 self.page_test.ValidatePage(page, tab, results) | 51 self.page_test.ValidateAndMeasurePage(page, tab, results) |
53 | 52 |
54 def RunPage(self, page, tab, results): | 53 def RunPage(self, page, tab, results): |
55 tab.WaitForDocumentReadyStateToBeComplete() | 54 tab.WaitForDocumentReadyStateToBeComplete() |
56 | 55 |
57 # When recording, sleep to catch any resources that load post-onload. | 56 # When recording, sleep to catch any resources that load post-onload. |
58 # TODO(tonyg): This should probably monitor resource timing for activity | 57 # TODO(tonyg): This should probably monitor resource timing for activity |
59 # and sleep until 2s since the last network event with some timeout like | 58 # and sleep until 2s since the last network event with some timeout like |
60 # 20s. We could wrap this up as WaitForNetworkIdle() and share with the | 59 # 20s. We could wrap this up as WaitForNetworkIdle() and share with the |
61 # speed index metric. | 60 # speed index metric. |
62 time.sleep(3) | 61 time.sleep(3) |
(...skipping 19 matching lines...) Expand all Loading... |
82 def RunNavigateSteps(self, page, tab): | 81 def RunNavigateSteps(self, page, tab): |
83 if self.page_test: | 82 if self.page_test: |
84 self.page_test.RunNavigateSteps(page, tab) | 83 self.page_test.RunNavigateSteps(page, tab) |
85 else: | 84 else: |
86 super(RecorderPageTest, self).RunNavigateSteps(page, tab) | 85 super(RecorderPageTest, self).RunNavigateSteps(page, tab) |
87 | 86 |
88 | 87 |
89 def FindAllActionNames(base_dir): | 88 def FindAllActionNames(base_dir): |
90 """Returns a set of of all action names used in our measurements.""" | 89 """Returns a set of of all action names used in our measurements.""" |
91 action_names = set() | 90 action_names = set() |
92 # Get all PageMeasurements except for ProfileCreators (see crbug.com/319573) | 91 # Get all PageTests except for ProfileCreators (see crbug.com/319573) |
93 for _, cls in discover.DiscoverClasses( | 92 for _, cls in discover.DiscoverClasses( |
94 base_dir, base_dir, page_measurement.PageMeasurement).items(): | 93 base_dir, base_dir, page_test.PageTest).items(): |
95 if not issubclass(cls, profile_creator.ProfileCreator): | 94 if not issubclass(cls, profile_creator.ProfileCreator): |
96 action_name = cls().action_name_to_run | 95 action_name = cls().action_name_to_run |
97 if action_name: | 96 if action_name: |
98 action_names.add(action_name) | 97 action_names.add(action_name) |
99 return action_names | 98 return action_names |
100 | 99 |
101 | 100 |
102 def _MaybeGetInstanceOfClass(target, base_dir, cls): | 101 def _MaybeGetInstanceOfClass(target, base_dir, cls): |
103 if isinstance(target, cls): | 102 if isinstance(target, cls): |
104 return target | 103 return target |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 quick_args = [a for a in sys.argv[1:] if not a.startswith('-')] | 183 quick_args = [a for a in sys.argv[1:] if not a.startswith('-')] |
185 if len(quick_args) != 1: | 184 if len(quick_args) != 1: |
186 print >> sys.stderr, 'Usage: record_wpr <PageSet|Benchmark>\n' | 185 print >> sys.stderr, 'Usage: record_wpr <PageSet|Benchmark>\n' |
187 sys.exit(1) | 186 sys.exit(1) |
188 target = quick_args.pop() | 187 target = quick_args.pop() |
189 wpr_recorder = WprRecorder(base_dir, target) | 188 wpr_recorder = WprRecorder(base_dir, target) |
190 results = wpr_recorder.CreateResults() | 189 results = wpr_recorder.CreateResults() |
191 wpr_recorder.Record(results) | 190 wpr_recorder.Record(results) |
192 wpr_recorder.HandleResults(results) | 191 wpr_recorder.HandleResults(results) |
193 return min(255, len(results.failures)) | 192 return min(255, len(results.failures)) |
OLD | NEW |