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

Unified Diff: tools/telemetry/telemetry/test_runner.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/test_runner.py
diff --git a/tools/telemetry/telemetry/test_runner.py b/tools/telemetry/telemetry/test_runner.py
index 6d43391da228724036379f6fb32cd4244a3e4b26..dead322e723d685c868e3c22cf71beaf5703d3e1 100644
--- a/tools/telemetry/telemetry/test_runner.py
+++ b/tools/telemetry/telemetry/test_runner.py
@@ -19,14 +19,14 @@ from telemetry.core import browser_finder
from telemetry.core import browser_options
from telemetry.core import command_line
from telemetry.core import discover
-from telemetry.core import environment
-from telemetry.core import util
from telemetry.page import page_set
from telemetry.page import page_test
-from telemetry.page import profile_creator
from telemetry.util import find_dependencies
+test_class_types = [benchmark.Benchmark, page_test.PageTest]
nednguyen 2014/09/04 03:31:37 May better be explicit about this: _BENCHMARK_AND_
+
+
class Deps(find_dependencies.FindDependenciesCommand):
"""Prints all dependencies"""
@@ -80,7 +80,7 @@ class List(command_line.OptparseCommand):
@classmethod
def ProcessCommandLineArgs(cls, parser, args):
if not args.positional_args:
- args.tests = _Tests()
+ args.tests = _GetAllTests()
elif len(args.positional_args) == 1:
args.tests = _MatchTestName(args.positional_args[0], exact_matches=False)
else:
@@ -127,7 +127,7 @@ class Run(command_line.OptparseCommand):
@classmethod
def ProcessCommandLineArgs(cls, parser, args):
if not args.positional_args:
- _PrintTestList(_Tests())
+ _PrintTestList(output_stream=sys.stderr)
sys.exit(-1)
input_test_name = args.positional_args[0]
@@ -135,14 +135,14 @@ class Run(command_line.OptparseCommand):
if not matching_tests:
print >> sys.stderr, 'No test named "%s".' % input_test_name
print >> sys.stderr
- _PrintTestList(_Tests())
+ _PrintTestList(output_stream=sys.stderr)
sys.exit(-1)
if len(matching_tests) > 1:
print >> sys.stderr, 'Multiple tests named "%s".' % input_test_name
print >> sys.stderr, 'Did you mean one of these?'
print >> sys.stderr
- _PrintTestList(matching_tests)
+ _PrintTestList(matching_tests, output_stream=sys.stderr)
sys.exit(-1)
test_class = matching_tests.pop()
@@ -195,48 +195,22 @@ def _Commands():
continue
yield cls
+
def _MatchingCommands(string):
return [command for command in _Commands()
if command.Name().startswith(string)]
-@decorators.Cache
-def _Tests():
- tests = []
- for base_dir in config.base_paths:
- tests += discover.DiscoverClasses(base_dir, base_dir, benchmark.Benchmark,
- index_by_class_name=True).values()
- page_tests = discover.DiscoverClasses(base_dir, base_dir,
- page_test.PageTest,
- index_by_class_name=True).values()
- tests += [test_class for test_class in page_tests
- if not issubclass(test_class, profile_creator.ProfileCreator)]
- return tests
-
-
-def _MatchTestName(input_test_name, exact_matches=True):
- def _Matches(input_string, search_string):
- if search_string.startswith(input_string):
- return True
- for part in search_string.split('.'):
- if part.startswith(input_string):
- return True
- return False
-
- # Exact matching.
- if exact_matches:
- # Don't add aliases to search dict, only allow exact matching for them.
- if input_test_name in config.test_aliases:
- exact_match = config.test_aliases[input_test_name]
- else:
- exact_match = input_test_name
- for test_class in _Tests():
- if exact_match == test_class.Name():
- return [test_class]
+def _GetAllTests():
+ return discover.GetValidSubclassesOfClasses(test_class_types)
+
+
+def _MatchTestName(input_name, exact_matches=True):
+ return discover.MatchName(test_class_types, input_name, exact_matches)
+
- # Fuzzy matching.
- return [test_class for test_class in _Tests()
- if _Matches(input_test_name, test_class.Name())]
+def _PrintTestList(class_list=None, output_stream=sys.stdout):
+ discover.PrintAvailableClasses(test_class_types, class_list, output_stream)
def _GetJsonTestList(possible_browser, test_classes, num_shards):
@@ -281,36 +255,6 @@ def _GetJsonTestList(possible_browser, test_classes, num_shards):
return json.dumps(output, indent=2, sort_keys=True)
-def _PrintTestList(tests):
- if not tests:
- print >> sys.stderr, 'No tests found!'
- return
-
- # Align the test names to the longest one.
- format_string = ' %%-%ds %%s' % max(len(t.Name()) for t in tests)
-
- filtered_tests = [test_class for test_class in tests
- if issubclass(test_class, benchmark.Benchmark)]
- if filtered_tests:
- print >> sys.stderr, 'Available tests are:'
- for test_class in sorted(filtered_tests, key=lambda t: t.Name()):
- print >> sys.stderr, format_string % (
- test_class.Name(), test_class.Description())
- print >> sys.stderr
-
- filtered_tests = [test_class for test_class in tests
- if issubclass(test_class, page_test.PageTest)]
- if filtered_tests:
- print >> sys.stderr, 'Available page tests are:'
- for test_class in sorted(filtered_tests, key=lambda t: t.Name()):
- print >> sys.stderr, format_string % (
- test_class.Name(), test_class.Description())
- print >> sys.stderr
-
-
-config = environment.Environment([util.GetBaseDir()])
-
-
def main():
# Get the command name from the command line.
if len(sys.argv) > 1 and sys.argv[1] == '--help':

Powered by Google App Engine
This is Rietveld 408576698