run_measurement revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1#!/usr/bin/env python 2# Copyright (c) 2012 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5import imp 6import os 7import sys 8import urllib 9 10# Directory path in which to save bootstrap files. 11BOOTSTRAPPED_FILES_DIR = 'support/bootstrap_files' 12PERF_DIR = 'src/tools/perf' 13DEPS_FILE = 'bootstrap_deps' 14 15def BootstrapIfNeeded(module_name, module_path, module_deps_url): 16 """Ensures that the given module_name is available, grab from URL if not.""" 17 try: 18 imp.find_module(module_name) 19 return 20 except ImportError: 21 sys.path.append(os.path.join(os.path.dirname(__file__), 22 BOOTSTRAPPED_FILES_DIR, 23 module_path)) 24 try: 25 imp.find_module(module_name) 26 return 27 except ImportError: 28 bootstrap_txt = urllib.urlopen('http://src.chromium.org/viewvc/chrome/' + 29 'trunk/src/tools/telemetry_tools/' + 30 'telemetry_bootstrap.py').read() 31 bootstrap = imp.new_module('bootstrap') 32 exec bootstrap_txt in bootstrap.__dict__ 33 bootstrap.DownloadDepsURL(os.path.join(os.path.dirname(__file__), 34 BOOTSTRAPPED_FILES_DIR), 35 module_deps_url) 36 return 37 38def ListBootstrapDeps(): 39 """List the deps required for telemetry. 40 41 Returns: a list of telemetry deps. 42 """ 43 import perf_tools 44 import telemetry_bootstrap 45 deps_file = os.path.join(os.path.dirname(perf_tools.__file__), 46 DEPS_FILE) 47 return telemetry_bootstrap.ListAllDepsPaths(open(deps_file).read()) 48 49def main(): 50 BootstrapIfNeeded('perf_tools', PERF_DIR, 51 'http://src.chromium.org/viewvc/chrome/trunk/src/tools' 52 '/perf/perf_tools/' + DEPS_FILE) 53 import perf_tools 54 if '--print-bootstrap-deps' in sys.argv: 55 print ListBootstrapDeps() 56 sys.exit(0) 57 58 from telemetry.page import page_measurement_runner 59 import page_sets 60 page_set_filenames = page_sets.GetAllPageSetFilenames() 61 62 old_benchmark_names = { 63 "cheapness_predictor_benchmark": "cheapness_predictor_measurement", 64 "image_decoding_benchmark": "image_decoding_measurement", 65 "loading_benchmark": "loading_measurement", 66 "memory_benchmark": "memory_measurement", 67 "rasterize_and_record_benchmark": "rasterize_and_record_benchmark", 68 "scrolling_benchmark": "smoothness", 69 "smoothness_benchmark": "smoothness", 70 "smoothness_measurement": "smoothness", 71 "startup_benchmark": "startup_measurement" 72 } 73 74 # There are bots that are hard-coded to run some specific named tests. 75 # Convert these to the current naming conventions by overriding them in the runner. 76 class MeasurementRunner(page_measurement_runner.PageMeasurementRunner): 77 def GetModernizedTestName(self, arg): 78 if arg not in old_benchmark_names: 79 return arg 80 sys.stderr.write( 81 'An old name %s was given. Please use %s in the future.\n' % ( 82 arg, 83 old_benchmark_names.get(arg))) 84 return old_benchmark_names[arg] 85 86 runner = MeasurementRunner() 87 sys.exit(runner.Run(os.path.dirname(__file__), page_set_filenames)) 88 89if __name__ == '__main__': 90 sys.exit(main()) 91