103 lines
3.6 KiB
Plaintext
103 lines
3.6 KiB
Plaintext
|
#!/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.
|
||
|
import imp
|
||
|
import os
|
||
|
import sys
|
||
|
import urllib
|
||
|
|
||
|
# Directory path in which to save bootstrap files.
|
||
|
BOOTSTRAPPED_FILES_DIR = 'support/bootstrap_files'
|
||
|
PERF_DIR = 'src/tools/perf'
|
||
|
DEPS_FILE = 'bootstrap_deps'
|
||
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
|
|
||
|
def BootstrapIfNeeded(module_name, module_path, module_deps_url):
|
||
|
"""Ensures that the given module_name is available, grab from URL if not."""
|
||
|
try:
|
||
|
imp.find_module(module_name)
|
||
|
return
|
||
|
except ImportError:
|
||
|
sys.path.append(os.path.join(BASE_DIR, BOOTSTRAPPED_FILES_DIR, module_path))
|
||
|
try:
|
||
|
imp.find_module(module_name)
|
||
|
return
|
||
|
except ImportError:
|
||
|
bootstrap_txt = urllib.urlopen('http://src.chromium.org/viewvc/chrome/' +
|
||
|
'trunk/src/tools/telemetry_tools/' +
|
||
|
'telemetry_bootstrap.py').read()
|
||
|
bootstrap = imp.new_module('bootstrap')
|
||
|
exec bootstrap_txt in bootstrap.__dict__
|
||
|
bootstrap.DownloadDepsURL(os.path.join(BASE_DIR, BOOTSTRAPPED_FILES_DIR),
|
||
|
module_deps_url)
|
||
|
return
|
||
|
|
||
|
def ListBootstrapDeps():
|
||
|
"""List the deps required for telemetry.
|
||
|
|
||
|
Returns: a list of telemetry deps.
|
||
|
"""
|
||
|
# Add telemetry_tools to sys.path for the import below
|
||
|
telemetry_tools_path = os.path.join(BASE_DIR, os.pardir, 'telemetry_tools')
|
||
|
sys.path.append(telemetry_tools_path)
|
||
|
|
||
|
import perf_tools
|
||
|
import telemetry_bootstrap
|
||
|
deps_file = os.path.join(os.path.dirname(perf_tools.__file__), DEPS_FILE)
|
||
|
return telemetry_bootstrap.ListAllDepsPaths(open(deps_file).read())
|
||
|
|
||
|
def main():
|
||
|
BootstrapIfNeeded('perf_tools', PERF_DIR,
|
||
|
'http://src.chromium.org/viewvc/chrome/trunk/src/tools'
|
||
|
'/perf/perf_tools/' + DEPS_FILE)
|
||
|
|
||
|
# Add telemetry to sys.path for the import below
|
||
|
telemetry_path = os.path.join(BASE_DIR, os.pardir, 'telemetry')
|
||
|
sys.path.append(telemetry_path)
|
||
|
|
||
|
if '--print-bootstrap-deps' in sys.argv:
|
||
|
print ListBootstrapDeps()
|
||
|
sys.exit(0)
|
||
|
|
||
|
from telemetry.page import page_measurement_runner
|
||
|
import page_sets
|
||
|
page_set_filenames = page_sets.GetAllPageSetFilenames()
|
||
|
|
||
|
old_benchmark_names = {
|
||
|
"image_decoding_benchmark": "image_decoding",
|
||
|
"image_decoding_measurement": "image_decoding",
|
||
|
"loading_benchmark": "loading",
|
||
|
"loading_measurement": "loading",
|
||
|
"media_measurement": "media",
|
||
|
"memory_benchmark": "memory",
|
||
|
"memory_measurement": "memory",
|
||
|
"rasterize_and_record_benchmark": "rasterize_and_record",
|
||
|
"rasterize_and_record_measurement": "rasterize_and_record",
|
||
|
"robohornetpro": "robohornet_pro",
|
||
|
"scrolling_benchmark": "smoothness",
|
||
|
"smoothness_benchmark": "smoothness",
|
||
|
"smoothness_measurement": "smoothness",
|
||
|
"startup_benchmark": "startup_warm_blank_page",
|
||
|
"startup_measurement": "startup",
|
||
|
"tab_switching_measurement": "tab_switching",
|
||
|
}
|
||
|
|
||
|
# There are bots that are hard-coded to run some specific named tests.
|
||
|
# Convert these to the current naming conventions by overriding them in the runner.
|
||
|
class MeasurementRunner(page_measurement_runner.PageMeasurementRunner):
|
||
|
def GetModernizedTestName(self, arg):
|
||
|
if arg not in old_benchmark_names:
|
||
|
return arg
|
||
|
sys.stderr.write(
|
||
|
'An old name %s was given. Please use %s in the future.\n' % (
|
||
|
arg,
|
||
|
old_benchmark_names.get(arg)))
|
||
|
return old_benchmark_names[arg]
|
||
|
|
||
|
runner = MeasurementRunner()
|
||
|
sys.exit(runner.Run(BASE_DIR, page_set_filenames))
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main())
|