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

Side by Side Diff: tools/telemetry/telemetry/user_story/user_story_runner.py

Issue 1005903004: Revert of Refactor serving_dirs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
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 logging 5 import logging
6 import optparse 6 import optparse
7 import os 7 import os
8 import random 8 import random
9 import sys 9 import sys
10 import time 10 import time
11 11
12 from telemetry import decorators
12 from telemetry import page as page_module 13 from telemetry import page as page_module
13 from telemetry.core import exceptions 14 from telemetry.core import exceptions
14 from telemetry.core import wpr_modes 15 from telemetry.core import wpr_modes
15 from telemetry.page import page_set as page_set_module 16 from telemetry.page import page_set as page_set_module
16 from telemetry.page import page_test 17 from telemetry.page import page_test
17 from telemetry.page.actions import page_action 18 from telemetry.page.actions import page_action
18 from telemetry.results import results_options 19 from telemetry.results import results_options
19 from telemetry.user_story import user_story_filter 20 from telemetry.user_story import user_story_filter
20 from telemetry.user_story import user_story_set as user_story_set_module 21 from telemetry.user_story import user_story_set as user_story_set_module
21 from telemetry.util import cloud_storage 22 from telemetry.util import cloud_storage
23 from telemetry.util import exception_formatter
22 from telemetry.value import failure 24 from telemetry.value import failure
23 from telemetry.value import skip 25 from telemetry.value import skip
24 26
25 27
26 class ArchiveError(Exception): 28 class ArchiveError(Exception):
27 pass 29 pass
28 30
29 31
30 def AddCommandLineArgs(parser): 32 def AddCommandLineArgs(parser):
31 user_story_filter.UserStoryFilter.AddCommandLineArgs(parser) 33 user_story_filter.UserStoryFilter.AddCommandLineArgs(parser)
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 has_existing_exception = sys.exc_info() is not None 109 has_existing_exception = sys.exc_info() is not None
108 try: 110 try:
109 state.DidRunUserStory(results) 111 state.DidRunUserStory(results)
110 except Exception: 112 except Exception:
111 if not has_existing_exception: 113 if not has_existing_exception:
112 raise 114 raise
113 # Print current exception and propagate existing exception. 115 # Print current exception and propagate existing exception.
114 exception_formatter.PrintFormattedException( 116 exception_formatter.PrintFormattedException(
115 msg='Exception from DidRunUserStory: ') 117 msg='Exception from DidRunUserStory: ')
116 118
119 @decorators.Cache
120 def _UpdateUserStoryArchivesIfChanged(user_story_set):
121 # Scan every serving directory for .sha1 files
122 # and download them from Cloud Storage. Assume all data is public.
123 all_serving_dirs = user_story_set.serving_dirs.copy()
124 # Add individual page dirs to all serving dirs.
125 for user_story in user_story_set:
126 if isinstance(user_story, page_module.Page) and user_story.is_file:
127 all_serving_dirs.add(user_story.serving_dir)
128 # Scan all serving dirs.
129 for serving_dir in all_serving_dirs:
130 if os.path.splitdrive(serving_dir)[1] == '/':
131 raise ValueError('Trying to serve root directory from HTTP server.')
132 for dirpath, _, filenames in os.walk(serving_dir):
133 for filename in filenames:
134 path, extension = os.path.splitext(
135 os.path.join(dirpath, filename))
136 if extension != '.sha1':
137 continue
138 cloud_storage.GetIfChanged(path, user_story_set.bucket)
139
140
117 class UserStoryGroup(object): 141 class UserStoryGroup(object):
118 def __init__(self, shared_user_story_state_class): 142 def __init__(self, shared_user_story_state_class):
119 self._shared_user_story_state_class = shared_user_story_state_class 143 self._shared_user_story_state_class = shared_user_story_state_class
120 self._user_stories = [] 144 self._user_stories = []
121 145
122 @property 146 @property
123 def shared_user_story_state_class(self): 147 def shared_user_story_state_class(self):
124 return self._shared_user_story_state_class 148 return self._shared_user_story_state_class
125 149
126 @property 150 @property
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 Stop execution for unexpected exceptions such as KeyboardInterrupt. 200 Stop execution for unexpected exceptions such as KeyboardInterrupt.
177 We "white list" certain exceptions for which the user story runner 201 We "white list" certain exceptions for which the user story runner
178 can continue running the remaining user stories. 202 can continue running the remaining user stories.
179 """ 203 """
180 # Filter page set based on options. 204 # Filter page set based on options.
181 user_stories = filter(user_story_filter.UserStoryFilter.IsSelected, 205 user_stories = filter(user_story_filter.UserStoryFilter.IsSelected,
182 user_story_set) 206 user_story_set)
183 207
184 if (not finder_options.use_live_sites and user_story_set.bucket and 208 if (not finder_options.use_live_sites and user_story_set.bucket and
185 finder_options.browser_options.wpr_mode != wpr_modes.WPR_RECORD): 209 finder_options.browser_options.wpr_mode != wpr_modes.WPR_RECORD):
186 serving_dirs = user_story_set.serving_dirs 210 _UpdateUserStoryArchivesIfChanged(user_story_set)
187 for directory in serving_dirs:
188 cloud_storage.GetFilesInDirectoryIfChanged(directory,
189 user_story_set.bucket)
190 if not _UpdateAndCheckArchives( 211 if not _UpdateAndCheckArchives(
191 user_story_set.archive_data_file, user_story_set.wpr_archive_info, 212 user_story_set.archive_data_file, user_story_set.wpr_archive_info,
192 user_stories): 213 user_stories):
193 return 214 return
194 215
195 if not user_stories: 216 if not user_stories:
196 return 217 return
197 218
198 # Effective max failures gives priority to command-line flag value. 219 # Effective max failures gives priority to command-line flag value.
199 effective_max_failures = finder_options.max_failures 220 effective_max_failures = finder_options.max_failures
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 logging.warning('Device is thermally throttled before running ' 356 logging.warning('Device is thermally throttled before running '
336 'performance tests, results will vary.') 357 'performance tests, results will vary.')
337 358
338 359
339 def _CheckThermalThrottling(platform): 360 def _CheckThermalThrottling(platform):
340 if not platform.CanMonitorThermalThrottling(): 361 if not platform.CanMonitorThermalThrottling():
341 return 362 return
342 if platform.HasBeenThermallyThrottled(): 363 if platform.HasBeenThermallyThrottled():
343 logging.warning('Device has been thermally throttled during ' 364 logging.warning('Device has been thermally throttled during '
344 'performance tests, results will vary.') 365 'performance tests, results will vary.')
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/user_story/__init__.py ('k') | tools/telemetry/telemetry/user_story/user_story_set.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698