try_perf.py 1.87 KB
Newer Older
1 2 3 4 5
#!/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.

6
import argparse
7 8 9 10 11 12 13
import find_depot_tools
import sys

find_depot_tools.add_depot_tools_to_path()

from git_cl import Changelist

14
BOTS = {
15
  '--arm32': 'v8_arm32_perf_try',
16 17 18
  '--linux32': 'v8_linux32_perf_try',
  '--linux64': 'v8_linux64_perf_try',
  '--linux64_haswell': 'v8_linux64_haswell_perf_try',
19 20 21 22
  '--nexus5': 'v8_nexus5_perf_try',
  '--nexus7': 'v8_nexus7_perf_try',
  '--nexus9': 'v8_nexus9_perf_try',
  '--nexus10': 'v8_nexus10_perf_try',
23 24 25
}

DEFAULT_BOTS = [
26
  'v8_linux32_perf_try',
27
  'v8_linux64_haswell_perf_try',
28 29
]

30 31 32 33 34 35 36 37 38 39 40 41
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

42 43 44 45 46 47 48 49 50 51 52 53 54 55
  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

56
  if not options.benchmarks:
57 58 59
    print 'Please specify the benchmarks to run as arguments.'
    return 1

60 61 62
  masters = {
    'internal.client.v8': dict((b, options.benchmarks) for b in options.bots),
  }
63
  cl.RpcServer().trigger_distributed_try_jobs(
64 65
      cl.GetIssue(), cl.GetMostRecentPatchset(), cl.GetBranch(),
      False, None, masters)
66 67 68
  return 0

if __name__ == "__main__":  # pragma: no cover
69
  sys.exit(main())