Index: tools/bisect-perf-regression.py |
diff --git a/tools/bisect-perf-regression.py b/tools/bisect-perf-regression.py |
index 17805f4c752301bb4712ce3177906658395748ff..ea5734ce822011339d87d69e6d08c1063ae0f79f 100755 |
--- a/tools/bisect-perf-regression.py |
+++ b/tools/bisect-perf-regression.py |
@@ -2242,23 +2242,25 @@ class BisectPerformanceMetrics(object): |
# CrOS and SVN use integers. |
return int(good_revision) <= int(bad_revision) |
- def CanPerformBisect(self, revision_to_check): |
+ def CanPerformBisect(self, good_revision, bad_revision): |
"""Checks whether a given revision is bisectable. |
- Note: At present it checks whether a given revision is bisectable on |
- android bots(refer crbug.com/385324). |
+ Checks for following: |
+ 1. Non-bisectable revsions for android bots (refer to crbug.com/385324). |
+ 2. Non-bisectable revsions for Windows bots (refer to crbug.com/405274). |
Args: |
- revision_to_check: Known good revision. |
+ good_revision: Known good revision. |
+ bad_revision: Known bad revision. |
Returns: |
A dictionary indicating the result. If revision is not bisectable, |
this will contain the field "error", otherwise None. |
""" |
if self.opts.target_platform == 'android': |
- revision_to_check = self.source_control.SVNFindRev(revision_to_check) |
- if (bisect_utils.IsStringInt(revision_to_check) |
- and revision_to_check < 265549): |
+ revision_to_check = self.source_control.SVNFindRev(good_revision) |
+ if (bisect_utils.IsStringInt(good_revision) |
+ and good_revision < 265549): |
return {'error': ( |
'Bisect cannot continue for the given revision range.\n' |
'It is impossible to bisect Android regressions ' |
@@ -2266,6 +2268,18 @@ class BisectPerformanceMetrics(object): |
'rely on Telemetry to do apk installation of the most recently ' |
'built local ChromeShell(refer to crbug.com/385324).\n' |
'Please try bisecting revisions greater than or equal to r265549.')} |
+ |
+ if bisect_utils.IsWindowsHost(): |
+ good_revision = self.source_control.SVNFindRev(good_revision) |
+ bad_revision = self.source_control.SVNFindRev(bad_revision) |
+ if (bisect_utils.IsStringInt(good_revision) and |
+ bisect_utils.IsStringInt(bad_revision)): |
+ if (289987 <= good_revision < 290716 or |
+ 289987 <= bad_revision < 290716): |
+ return {'error': ('Oops! Revision between r289987 and r290716 are ' |
+ 'marked as dead zone for Windows due to ' |
+ 'crbug.com/405274. Please try another range.')} |
+ |
return None |
def Run(self, command_to_run, bad_revision_in, good_revision_in, metric): |
@@ -2352,7 +2366,7 @@ class BisectPerformanceMetrics(object): |
if self.opts.output_buildbot_annotations: |
bisect_utils.OutputAnnotationStepStart('Gathering Revisions') |
- cannot_bisect = self.CanPerformBisect(good_revision) |
+ cannot_bisect = self.CanPerformBisect(good_revision, bad_revision) |
if cannot_bisect: |
results['error'] = cannot_bisect.get('error') |
return results |