[test-runner] Enable specification of trybots.
authormachenbach <machenbach@chromium.org>
Thu, 30 Apr 2015 05:12:33 +0000 (22:12 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 30 Apr 2015 05:12:42 +0000 (05:12 +0000)
Now it's possible to specify the desired trybots for perf
tries, e.g.:

tools/try_perf.py --linux64_haswell octane sunspider

BUG=chromium:478460
LOG=n
NOTRY=true

Review URL: https://codereview.chromium.org/1114913002

Cr-Commit-Position: refs/heads/master@{#28142}

tools/try_perf.py

index fcd1ddc..58927bd 100755 (executable)
@@ -3,6 +3,7 @@
 # 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
 
@@ -10,12 +11,29 @@ find_depot_tools.add_depot_tools_to_path()
 
 from git_cl import Changelist
 
-BOTS = [
+BOTS = {
+  '--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_perf_try',
+  'v8_linux64_haswell_perf_try',
 ]
 
-def main(tests):
+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'
@@ -30,15 +48,17 @@ def main(tests):
     print 'Cannot use trybots with private issue'
     return 1
 
-  if not tests:
+  if not options.benchmarks:
     print 'Please specify the benchmarks to run as arguments.'
     return 1
 
-  masters = {'internal.client.v8': dict((b, tests) for b in BOTS)}
+  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)
+      cl.GetIssue(), cl.GetMostRecentPatchset(), cl.GetBranch(),
+      False, None, masters)
   return 0
 
 if __name__ == "__main__":  # pragma: no cover
-  sys.exit(main(sys.argv[1:]))
+  sys.exit(main())