|
|
|
#!/usr/bin/env python
|
|
|
|
# Copyright 2014 the V8 project 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 argparse
|
|
|
|
import find_depot_tools
|
|
|
|
import sys
|
|
|
|
|
|
|
|
find_depot_tools.add_depot_tools_to_path()
|
|
|
|
|
|
|
|
from git_cl import Changelist
|
|
|
|
|
|
|
|
BOTS = {
|
|
|
|
'--arm32': 'v8_arm32_perf_try',
|
|
|
|
'--linux32': 'v8_linux32_perf_try',
|
|
|
|
'--linux64': 'v8_linux64_perf_try',
|
|
|
|
'--linux64_haswell': 'v8_linux64_haswell_perf_try',
|
|
|
|
}
|
|
|
|
|
|
|
|
DEFAULT_BOTS = [
|
|
|
|
'v8_linux32_perf_try',
|
|
|
|
'v8_linux64_haswell_perf_try',
|
|
|
|
]
|
|
|
|
|
|
|
|
def main():
|
|
|
|
parser = argparse.ArgumentParser(description='')
|
|
|
|
parser.add_argument("benchmarks", nargs="+", help="The benchmarks to run.")
|
|
|
|
for option in sorted(BOTS):
|
|
|
|
parser.add_argument(
|
|
|
|
option, dest='bots', action='append_const', const=BOTS[option],
|
|
|
|
help='Add %s trybot.' % BOTS[option])
|
|
|
|
options = parser.parse_args()
|
|
|
|
if not options.bots:
|
|
|
|
print 'No trybots specified. Using default %s.' % ','.join(DEFAULT_BOTS)
|
|
|
|
options.bots = DEFAULT_BOTS
|
|
|
|
|
|
|
|
cl = Changelist()
|
|
|
|
if not cl.GetIssue():
|
|
|
|
print 'Need to upload first'
|
|
|
|
return 1
|
|
|
|
|
|
|
|
props = cl.GetIssueProperties()
|
|
|
|
if props.get('closed'):
|
|
|
|
print 'Cannot send tryjobs for a closed CL'
|
|
|
|
return 1
|
|
|
|
|
|
|
|
if props.get('private'):
|
|
|
|
print 'Cannot use trybots with private issue'
|
|
|
|
return 1
|
|
|
|
|
|
|
|
if not options.benchmarks:
|
|
|
|
print 'Please specify the benchmarks to run as arguments.'
|
|
|
|
return 1
|
|
|
|
|
|
|
|
masters = {
|
|
|
|
'internal.client.v8': dict((b, options.benchmarks) for b in options.bots),
|
|
|
|
}
|
|
|
|
cl.RpcServer().trigger_distributed_try_jobs(
|
|
|
|
cl.GetIssue(), cl.GetMostRecentPatchset(), cl.GetBranch(),
|
|
|
|
False, None, masters)
|
|
|
|
return 0
|
|
|
|
|
|
|
|
if __name__ == "__main__": # pragma: no cover
|
|
|
|
sys.exit(main())
|