Index: tools/perf/PRESUBMIT.py |
diff --git a/tools/perf/PRESUBMIT.py b/tools/perf/PRESUBMIT.py |
index ad11c24a0e1183ed359e668afe0b68963da89012..6d0199171bf3fd7b848fa82af20966f008dfb36a 100644 |
--- a/tools/perf/PRESUBMIT.py |
+++ b/tools/perf/PRESUBMIT.py |
@@ -9,6 +9,7 @@ for more details about the presubmit API built into depot_tools. |
""" |
import os |
+import re |
import sys |
@@ -76,3 +77,49 @@ def CheckChangeOnCommit(input_api, output_api): |
report = [] |
report.extend(_CommonChecks(input_api, output_api)) |
return report |
+ |
+ |
+def _IsBenchmarksModified(change): |
+ """Checks whether CL contains any modification to Telemetry benchmarks.""" |
+ for affected_file in change.AffectedFiles(): |
+ affected_file_path = affected_file.LocalPath() |
+ file_path, _ = os.path.splitext(affected_file_path) |
+ if (os.path.join('tools', 'perf', 'benchmarks') in file_path or |
+ os.path.join('tools', 'perf', 'measurements') in file_path): |
+ return True |
+ return False |
+ |
+ |
+def PostUploadHook(cl, change, output_api): |
+ """git cl upload will call this hook after the issue is created/modified. |
+ |
+ This hook adds extra try bots list to the CL description in order to run |
+ Telemetry benchmarks on Perf trybots in addtion to CQ trybots if the CL |
+ contains any changes to Telemetry benchmarks. |
+ """ |
+ benchmarks_modified = _IsBenchmarksModified(change) |
+ rietveld_obj = cl.RpcServer() |
+ issue = cl.issue |
+ original_description = rietveld_obj.get_description(issue) |
+ if not benchmarks_modified or re.search( |
+ r'^CQ_EXTRA_TRYBOTS=.*', original_description, re.M | re.I): |
+ return [] |
+ |
+ results = [] |
+ bots = [ |
+ 'linux_perf_bisect', |
+ 'mac_perf_bisect', |
+ 'win_perf_bisect', |
+ 'android_nexus5_perf_bisect' |
+ ] |
+ bots = ['tryserver.chromium.perf:%s' % s for s in bots] |
+ bots_string = ';'.join(bots) |
+ description = original_description |
+ description += '\nCQ_EXTRA_TRYBOTS=%s' % bots_string |
+ results.append(output_api.PresubmitNotifyResult( |
+ 'Automatically added Perf trybots to run Telemetry benchmarks on CQ.')) |
+ |
+ if description != original_description: |
+ rietveld_obj.update_description(issue, description) |
+ |
+ return results |