Index: chrome/test/functional/perf/endure_server.py |
diff --git a/chrome/test/functional/perf/endure_server.py b/chrome/test/functional/perf/endure_server.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ae4cd0fd2268197f14c761647c0106e85f9721c7 |
--- /dev/null |
+++ b/chrome/test/functional/perf/endure_server.py |
@@ -0,0 +1,79 @@ |
+#!/usr/bin/env python |
+# 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. |
+ |
+"""Start an HTTP server which serves Chrome Endure graphs. |
+ |
+Usage: |
+ python endure_server.py [options] |
+ |
+To view Chrome Endure graphs from a browser, |
+run this script to start a local HTTP server that serves the directory |
+where graph code and test results are located. A port will be automatically |
+picked. You can then view the graphs via http://localhost:<GIVEN_PORT>. |
+ |
+Examples: |
+ >python endure_server.py |
+ Start a server which serves the default location |
+ <CURRENT_WORKING_DIR>/chrome_graph. |
+ |
+ >python endure_server.py --graph-dir=/home/user/Document/graph_dir |
+ Start a server which serves /home/user/Document/graph_dir which |
+ is where your graph code and test results are. |
+""" |
+ |
+import BaseHTTPServer |
+import logging |
+import optparse |
+import os |
+import SimpleHTTPServer |
+import sys |
+ |
+ |
+class HelpFormatter(optparse.IndentedHelpFormatter): |
+ """Format the help message of this script.""" |
+ |
+ def format_description(self, description): |
+ """Override to keep original format of the description.""" |
+ return description + '\n' if description else '' |
+ |
+ |
+def _ParseArgs(argv): |
+ parser = optparse.OptionParser( |
+ usage='%prog [options]', |
+ formatter=HelpFormatter(), |
+ description=__doc__) |
+ parser.add_option( |
+ '-g', '--graph-dir', type='string', |
+ default=os.path.join(os.getcwd(), 'chrome_graph'), |
+ help='The directory that contains graph code ' \ |
+ 'and data files of test results. Default value is ' \ |
+ '<CURRENT_WORKING_DIR>/chrome_graph') |
+ return parser.parse_args(argv) |
+ |
+ |
+def Run(argv): |
+ """Start an HTTP server which serves Chrome Endure graphs.""" |
+ logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG) |
+ options, _ = _ParseArgs(argv) |
+ graph_dir = os.path.abspath(options.graph_dir) |
+ cur_dir = os.getcwd() |
+ os.chdir(graph_dir) |
+ httpd = BaseHTTPServer.HTTPServer( |
+ ('', 0), SimpleHTTPServer.SimpleHTTPRequestHandler) |
+ try: |
+ logging.info('Serving %s at port %d', graph_dir, httpd.server_port) |
+ logging.info('View graphs at http://localhost:%d', httpd.server_port) |
+ logging.info('Press Ctrl-C to stop the server.') |
+ httpd.serve_forever() |
+ except KeyboardInterrupt: |
+ logging.info('Shutting down ...') |
+ httpd.shutdown() |
+ finally: |
+ os.chdir(cur_dir) |
+ return 0 |
+ |
+ |
+if '__main__' == __name__: |
+ sys.exit(Run(sys.argv[1:])) |