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.
12 BASE_URL
= 'http://src.chromium.org/chrome/trunk/'
13 DEPS_FILE
= 'bootstrap_deps'
15 SCRIPT_PATH
= os
.path
.dirname(os
.path
.abspath(__file__
))
16 # Directory containing src/ in a Chromium checkout.
17 CHECKOUT_BASE_PATH
= os
.path
.join(SCRIPT_PATH
, os
.pardir
, os
.pardir
, os
.pardir
)
18 # Directory in which to save bootstrap files.
19 BOOTSTRAP_BASE_PATH
= os
.path
.join(SCRIPT_PATH
, 'support', 'bootstrap_files')
21 PERF_DIR
= os
.path
.join('src', 'tools', 'perf')
22 TELEMETRY_DIR
= os
.path
.join('src', 'tools', 'telemetry')
23 TELEMETRY_TOOLS_DIR
= os
.path
.join('src', 'tools', 'telemetry_tools')
27 """Find the location of our Chromium or bootstrap checkout.
29 It tries to import Telemetry. If the import succeeds,
30 we assume that's the correct location.
33 The path containing the src/ directory, or None if no checkout is found.
35 module_name
= 'telemetry'
36 module_path
= TELEMETRY_DIR
39 paths
= [os
.path
.join(CHECKOUT_BASE_PATH
, module_path
)]
40 imp
.find_module(module_name
, paths
)
41 return CHECKOUT_BASE_PATH
46 paths
= [os
.path
.join(BOOTSTRAP_BASE_PATH
, module_path
)]
47 imp
.find_module(module_name
, paths
)
48 return BOOTSTRAP_BASE_PATH
55 def _Bootstrap(bootstrap_deps_url
):
56 """Grab all the deps listed in the file at bootstrap_deps_url."""
57 bootstrap_txt
= urllib2
.urlopen(
58 BASE_URL
+ 'src/tools/telemetry_tools/telemetry_bootstrap.py').read()
59 bootstrap
= imp
.new_module('bootstrap')
60 exec bootstrap_txt
in bootstrap
.__dict
__
61 bootstrap
.DownloadDeps(BOOTSTRAP_BASE_PATH
, bootstrap_deps_url
)
64 def ListBootstrapDeps(base_path
):
65 """List the deps required for telemetry."""
66 sys
.path
.append(os
.path
.join(base_path
, TELEMETRY_TOOLS_DIR
))
67 import telemetry_bootstrap
69 deps_file
= os
.path
.join(base_path
, PERF_DIR
, DEPS_FILE
)
70 return telemetry_bootstrap
.ListAllDepsPaths(deps_file
)
74 if not _GetBasePath():
75 _Bootstrap(BASE_URL
+ 'src/tools/perf/' + DEPS_FILE
)
77 new_base_path
= _GetBasePath()
78 new_perf_path
= os
.path
.join(new_base_path
, PERF_DIR
)
79 new_telemetry_path
= os
.path
.join(new_base_path
, TELEMETRY_DIR
)
81 if '--print-bootstrap-deps' in sys
.argv
:
82 print ListBootstrapDeps(new_base_path
)
85 sys
.path
.append(new_perf_path
)
87 page_set_filenames
= page_sets
.GetAllPageSetFilenames()
89 old_benchmark_names
= {
90 "image_decoding_benchmark": "image_decoding",
91 "image_decoding_measurement": "image_decoding",
92 "loading_benchmark": "loading",
93 "loading_measurement": "loading",
94 "media_measurement": "media",
95 "memory_benchmark": "memory",
96 "memory_measurement": "memory",
97 "rasterize_and_record_benchmark": "rasterize_and_record",
98 "rasterize_and_record_measurement": "rasterize_and_record",
99 "robohornetpro": "robohornet_pro",
100 "scrolling_benchmark": "smoothness",
101 "smoothness_benchmark": "smoothness",
102 "smoothness_measurement": "smoothness",
103 "startup_benchmark": "startup_warm_blank_page",
104 "startup_measurement": "startup",
105 "tab_switching_measurement": "tab_switching",
108 sys
.path
.append(new_telemetry_path
)
109 from telemetry
.page
import page_measurement_runner
110 # There are bots that are hard-coded to run some specific named tests.
111 # Convert these to the current naming conventions by overriding them
113 class MeasurementRunner(page_measurement_runner
.PageMeasurementRunner
):
114 def GetModernizedTestName(self
, arg
):
115 if arg
not in old_benchmark_names
:
118 'An old name %s was given. Please use %s in the future.\n' % (
120 old_benchmark_names
.get(arg
)))
121 return old_benchmark_names
[arg
]
123 runner
= MeasurementRunner()
124 return runner
.Run(new_perf_path
, page_set_filenames
)
127 if __name__
== '__main__':