Index: tools/telemetry/telemetry/user_story/user_story_runner.py |
diff --git a/tools/telemetry/telemetry/user_story/user_story_runner.py b/tools/telemetry/telemetry/user_story/user_story_runner.py |
index bdc9a40bca57c3849c409e54ce4947fbaff1e866..071a5ac33bbf547992791f994b02bf789742baa9 100644 |
--- a/tools/telemetry/telemetry/user_story/user_story_runner.py |
+++ b/tools/telemetry/telemetry/user_story/user_story_runner.py |
@@ -201,7 +201,10 @@ def Run(test, user_story_set, expectations, finder_options, results): |
# patch. |
isinstance(user_story_set, page_set_module.PageSet)): |
_UpdateUserStoryArchivesIfChanged(user_story_set) |
- user_stories = _CheckArchives(user_story_set, user_stories, results) |
+ if not _CheckArchives( |
+ user_story_set.archive_data_file, user_story_set.wpr_archive_info, |
+ user_story_set.pages): |
+ return |
for user_story in list(user_stories): |
if not test.CanRunForPage(user_story): |
@@ -275,51 +278,57 @@ def _ShuffleAndFilterUserStorySet(user_story_set, finder_options): |
return user_stories |
-def _CheckArchives(page_set, pages, results): |
- """Returns a subset of pages that are local or have WPR archives. |
+def _CheckArchives(archive_data_file, wpr_archive_info, pages): |
+ """Verifies that all pages are local or have WPR archives. |
- Logs warnings if any are missing. |
+ Logs warnings and returns False if any are missing. |
""" |
- # Warn of any problems with the entire page set. |
+ # Report any problems with the entire page set. |
if any(not p.is_local for p in pages): |
- if not page_set.archive_data_file: |
- logging.warning('The page set is missing an "archive_data_file" ' |
- 'property. Skipping any live sites. To include them, ' |
- 'pass the flag --use-live-sites.') |
- if not page_set.wpr_archive_info: |
- logging.warning('The archive info file is missing. ' |
- 'To fix this, either add svn-internal to your ' |
- '.gclient using http://goto/read-src-internal, ' |
- 'or create a new archive using record_wpr.') |
- |
- # Warn of any problems with individual pages and return valid pages. |
+ if not archive_data_file: |
+ logging.error('The page set is missing an "archive_data_file" ' |
+ 'property.\nTo run from live sites pass the flag ' |
+ '--use-live-sites.\nTo create an archive file add an ' |
+ 'archive_data_file property to the page set and then ' |
+ 'run record_wpr.') |
+ return False |
+ if not wpr_archive_info: |
+ logging.error('The archive info file is missing.\n' |
+ 'To fix this, either add svn-internal to your ' |
+ '.gclient using http://goto/read-src-internal, ' |
+ 'or create a new archive using record_wpr.') |
+ return False |
+ |
+ # Report any problems with individual pages. |
pages_missing_archive_path = [] |
pages_missing_archive_data = [] |
- valid_pages = [] |
for page in pages: |
if not page.is_local and not page.archive_path: |
pages_missing_archive_path.append(page) |
elif not page.is_local and not os.path.isfile(page.archive_path): |
pages_missing_archive_data.append(page) |
- else: |
- valid_pages.append(page) |
if pages_missing_archive_path: |
- logging.warning('The page set archives for some pages do not exist. ' |
- 'Skipping those pages. To fix this, record those pages ' |
- 'using record_wpr. To ignore this warning and run ' |
- 'against live sites, pass the flag --use-live-sites.') |
+ logging.error('The page set archives for some pages do not exist.\n' |
+ 'To fix this, record those pages using record_wpr.\n' |
+ 'To ignore this warning and run against live sites, ' |
+ 'pass the flag --use-live-sites.') |
+ logging.error( |
+ 'Pages without archives: %s', |
+ ', '.join(page.display_name for page in pages_missing_archive_path)) |
if pages_missing_archive_data: |
- logging.warning('The page set archives for some pages are missing. ' |
- 'Someone forgot to check them in, or they were deleted. ' |
- 'Skipping those pages. To fix this, record those pages ' |
- 'using record_wpr. To ignore this warning and run ' |
- 'against live sites, pass the flag --use-live-sites.') |
- for page in pages_missing_archive_path + pages_missing_archive_data: |
- results.WillRunPage(page) |
- results.AddValue(failure.FailureValue.FromMessage( |
- page, 'Page set archive doesn\'t exist.')) |
- results.DidRunPage(page) |
- return valid_pages |
+ logging.error('The page set archives for some pages are missing.\n' |
+ 'Someone forgot to check them in, uploaded them to the ' |
+ 'wrong cloud storage bucket, or they were deleted.\n' |
+ 'To fix this, record those pages using record_wpr.\n' |
+ 'To ignore this warning and run against live sites, ' |
+ 'pass the flag --use-live-sites.') |
+ logging.error( |
+ 'Pages missing archives: %s', |
+ ', '.join(page.display_name for page in pages_missing_archive_data)) |
+ if pages_missing_archive_path or pages_missing_archive_data: |
+ return False |
+ # Only run valid pages if no problems with the page set or individual pages. |
+ return True |
def _WaitForThermalThrottlingIfNeeded(platform): |