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

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

Issue 12252020: Add a telemetry-based gpu_tests folder (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 10 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
« no previous file with comments | « tools/perf/run_multipage_benchmarks ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/page_test_runner.py
diff --git a/tools/telemetry/telemetry/page/page_test_runner.py b/tools/telemetry/telemetry/page/page_test_runner.py
new file mode 100644
index 0000000000000000000000000000000000000000..5af12df3238652195116340c2c07b19355e1be25
--- /dev/null
+++ b/tools/telemetry/telemetry/page/page_test_runner.py
@@ -0,0 +1,81 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import logging
+import os
+import sys
+
+from telemetry.core import browser_finder
+from telemetry.core import browser_options
+from telemetry.page import page_test
+from telemetry.page import page_runner
+from telemetry.page import page_set
+from telemetry.test import discover
+
+def Main(test_dir, page_set_filenames):
+ """Turns a PageTest into a command-line program.
+
+ Args:
+ test_dir: Path to directory containing PageTests.
+ """
+ tests = discover.Discover(test_dir,
+ os.path.join(test_dir, '..'),
+ '',
+ page_test.PageTest)
+
+ # Naively find the test. If we use the browser options parser, we run
+ # the risk of failing to parse if we use a test-specific parameter.
+ test_name = None
+ for arg in sys.argv:
+ if arg in tests:
+ test_name = arg
+
+ options = browser_options.BrowserOptions()
+ parser = options.CreateParser('%prog [options] <test> <page_set>')
+
+ page_runner.PageRunner.AddCommandLineOptions(parser)
+
+ test = None
+ if test_name is not None:
+ if test_name not in tests:
+ sys.stderr.write('No test name %s found' % test_name)
+ sys.exit(1)
+ test = tests[test_name]()
+ test.AddCommandLineOptions(parser)
+
+ _, args = parser.parse_args()
+
+ if test is None or len(args) != 2:
+ parser.print_usage()
+ print >> sys.stderr, 'Available tests:\n%s\n' % ',\n'.join(
+ sorted(tests.keys()))
+ print >> sys.stderr, 'Available page_sets:\n%s\n' % ',\n'.join(
+ sorted([os.path.relpath(f)
+ for f in page_set_filenames]))
+ sys.exit(1)
+
+ ps = page_set.PageSet.FromFile(args[1])
+ results = page_test.PageTestResults()
+
+ return RunTestOnPageSet(options, ps, test, results)
+
+def RunTestOnPageSet(options, ps, test, results):
+ test.CustomizeBrowserOptions(options)
+ possible_browser = browser_finder.FindBrowser(options)
+ if not possible_browser:
+ print >> sys.stderr, """No browser found.\n
+Use --browser=list to figure out which are available.\n"""
+ sys.exit(1)
+
+ with page_runner.PageRunner(ps) as runner:
+ runner.Run(options, possible_browser, test, results)
+
+ print '%i pages succeed\n' % len(results.page_successes)
+ if len(results.page_failures):
+ logging.warning('Failed pages: %s', '\n'.join(
+ [failure['page'].url for failure in results.page_failures]))
+
+ if len(results.skipped_pages):
+ logging.warning('Skipped pages: %s', '\n'.join(
+ [skipped['page'].url for skipped in results.skipped_pages]))
+ return min(255, len(results.page_failures))
« no previous file with comments | « tools/perf/run_multipage_benchmarks ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698