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

Unified Diff: tools/telemetry/telemetry/page/record_wpr.py

Issue 432543003: Add usage message with available page_sets and benchmarks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/page/record_wpr.py
diff --git a/tools/telemetry/telemetry/page/record_wpr.py b/tools/telemetry/telemetry/page/record_wpr.py
index 3d21bcb77e90e0be8156821c9d8e1b2fc52cba47..cdd588230a24a410bf3f8eb413ce31375573cfd5 100644
--- a/tools/telemetry/telemetry/page/record_wpr.py
+++ b/tools/telemetry/telemetry/page/record_wpr.py
@@ -103,27 +103,47 @@ def FindAllActionNames(base_dir):
def _MaybeGetInstanceOfClass(target, base_dir, cls):
if isinstance(target, cls):
return target
- classes = discover.DiscoverClasses(base_dir, base_dir, cls,
- index_by_class_name=True)
- return classes[target]() if target in classes else None
+ matching_classes = discover.MatchName([cls], target, base_dir=base_dir)
+ class_instance = None
+ if len(matching_classes) == 1:
+ try:
+ class_instance = matching_classes[0]()
+ except TypeError:
+ logging.warn('Unable to initialize "%s" class which requires ' % target +
+ 'custom arguments.')
+ raise
+ return class_instance
class WprRecorder(object):
- def __init__(self, base_dir, target, args=None):
+ def __init__(self, base_dir, target, cmd, args=None):
action_names_to_run = FindAllActionNames(base_dir)
self._record_page_test = RecorderPageTest(action_names_to_run)
self._options = self._CreateOptions()
+ self._page_set = None
+ self._benchmark = None
+
+ if cmd == 'run' or cmd == 'run_pageset':
+ self._page_set = _MaybeGetInstanceOfClass(
+ target, base_dir, page_set.PageSet)
+ if self._page_set is None and (cmd == 'run' or cmd =='run_benchmark'):
+ self._benchmark = _MaybeGetInstanceOfClass(
+ target, base_dir, benchmark.Benchmark)
+ if self._page_set is None and self._benchmark is None:
+ print_usage()
+ sys.exit(1)
+ recording_type = 'page set' if self._benchmark is None else 'benchmark'
+ print 'Recording %s: %s' % (recording_type, target)
- self._benchmark = _MaybeGetInstanceOfClass(target, base_dir,
- benchmark.Benchmark)
- if self._benchmark is not None:
- self._record_page_test.page_test = self._benchmark.test()
- self._parser = self._options.CreateParser(usage='%prog <PageSet|Benchmark>')
+ self._parser = self._options.CreateParser()
self._AddCommandLineArgs()
self._ParseArgs(args)
self._ProcessCommandLineArgs()
- self._page_set = self._GetPageSet(base_dir, target)
+
+ if self._page_set is None:
+ self._record_page_test.page_test = self._benchmark.test()
+ self._page_set = self._benchmark.CreatePageSet(self._options)
@property
def options(self):
@@ -162,15 +182,6 @@ class WprRecorder(object):
if self._benchmark is not None:
self._benchmark.ProcessCommandLineArgs(self._parser, self._options)
- def _GetPageSet(self, base_dir, target):
- if self._benchmark is not None:
- return self._benchmark.CreatePageSet(self._options)
- ps = _MaybeGetInstanceOfClass(target, base_dir, page_set.PageSet)
- if ps is None:
- self._parser.print_usage()
- sys.exit(1)
- return ps
-
def Record(self, results):
self._page_set.wpr_archive_info.AddNewTemporaryRecording()
self._record_page_test.CustomizeBrowserOptions(self._options)
@@ -188,12 +199,39 @@ class WprRecorder(object):
def Main(base_dir):
quick_args = [a for a in sys.argv[1:] if not a.startswith('-')]
- if len(quick_args) != 1:
- print >> sys.stderr, 'Usage: record_wpr <PageSet|Benchmark>\n'
- sys.exit(1)
- target = quick_args.pop()
- wpr_recorder = WprRecorder(base_dir, target)
+ if len(quick_args) == 1:
+ arg = quick_args.pop()
+ if (arg == 'list_pagesets'):
+ return discover.PrintAvailableClasses([page_set.PageSet])
+ if (arg == 'list_benchmarks'):
+ return discover.PrintAvailableClasses([benchmark.Benchmark])
+
+ # Otherwise, assume no command is provided and default to 'run'
+ return run(base_dir, arg, 'run')
+ if len(quick_args) == 2:
+ cmd, target = quick_args
+ if (cmd == 'run' or cmd == 'run_benchmark' or cmd == 'run_pageset'):
+ return run(base_dir, target, cmd)
+ print_usage()
+ return 1
+
+
+def run(base_dir, target, cmd):
+ wpr_recorder = WprRecorder(base_dir, target, cmd)
results = wpr_recorder.CreateResults()
wpr_recorder.Record(results)
wpr_recorder.HandleResults(results)
return min(255, len(results.failures))
+
+
+def print_usage():
+ sys.stderr.write(
+ 'Usage: record_wpr [command] <PageSet|Benchmark>\n'
+ 'Available commands are:\n'
+ ' run <PageSet|Benchmark> Run a Page Set or Benchmark (default).\n'
+ ' In case of name conflicts, Page Sets\n'
+ ' will take precedence over Benchmarks.\n'
+ ' run_benchmark <Benchmark> Run a Benchmark\n'
+ ' run_pageset <PageSet> Run a Page Set\n'
+ ' list_pagesets Lists the available Page Sets\n'
+ ' list_benchmarks Lists the available Benchmarks\n\n')

Powered by Google App Engine
This is Rietveld 408576698