Index: tools/auto_bisect/bisect_perf_regression.py |
diff --git a/tools/auto_bisect/bisect_perf_regression.py b/tools/auto_bisect/bisect_perf_regression.py |
index 89ba5e2059e96c3d33ee2de578f7244d1f09497e..032ef13af9e4e36b56392e4cebf8bcb0e901e895 100755 |
--- a/tools/auto_bisect/bisect_perf_regression.py |
+++ b/tools/auto_bisect/bisect_perf_regression.py |
@@ -54,6 +54,7 @@ from bisect_results import BisectResults |
from bisect_state import BisectState |
import bisect_utils |
import builder |
+import query_crbug |
import math_utils |
import request_build |
import source_control |
@@ -2134,6 +2135,7 @@ class BisectPerformanceMetrics(object): |
Returns: |
A BisectResults object. |
""" |
+ |
# Choose depot to bisect first |
target_depot = 'chromium' |
if self.opts.target_platform == 'android-chrome': |
@@ -2489,6 +2491,7 @@ class BisectOptions(object): |
self.builder_port = None |
self.bisect_mode = bisect_utils.BISECT_MODE_MEAN |
self.improvement_direction = 0 |
+ self.bug_id = '' |
@staticmethod |
def _AddBisectOptionsGroup(parser): |
@@ -2536,6 +2539,11 @@ class BisectOptions(object): |
bisect_utils.BISECT_MODE_RETURN_CODE], |
help='The bisect mode. Choices are to bisect on the ' |
'difference in mean, std_dev, or return_code.') |
+ group.add_argument('--bug_id', default='', |
+ help='The id for the bug associated with this bisect. ' + |
+ 'If this number is given, bisect will attempt to ' + |
+ 'verify that the bug is not closed before ' |
+ 'starting.') |
@staticmethod |
def _AddBuildOptionsGroup(parser): |
@@ -2547,12 +2555,12 @@ class BisectOptions(object): |
'working_directory and that will be used to perform the ' |
'bisection. This parameter is optional, if it is not ' |
'supplied, the script will work from the current depot.') |
- group.add_argument('--build_preference', type=str, |
+ group.add_argument('--build_preference', |
choices=['msvs', 'ninja', 'make'], |
help='The preferred build system to use. On linux/mac ' |
'the options are make/ninja. On Windows, the ' |
'options are msvs/ninja.') |
- group.add_argument('--target_platform', type=str, default='chromium', |
+ group.add_argument('--target_platform', default='chromium', |
choices=['chromium', 'android', 'android-chrome'], |
help='The target platform. Choices are "chromium" ' |
'(current platform), or "android". If you specify ' |
@@ -2577,11 +2585,11 @@ class BisectOptions(object): |
group.add_argument('--gs_bucket', default='', dest='gs_bucket', |
help='Name of Google Storage bucket to upload or ' |
'download build. e.g., chrome-perf') |
- group.add_argument('--target_arch', type=str, default='ia32', |
+ group.add_argument('--target_arch', default='ia32', |
dest='target_arch', choices=['ia32', 'x64', 'arm'], |
help='The target build architecture. Choices are "ia32" ' |
'(default), "x64" or "arm".') |
- group.add_argument('--target_build_type', type=str, default='Release', |
+ group.add_argument('--target_build_type', default='Release', |
choices=['Release', 'Debug'], |
help='The target build type. Choices are "Release" ' |
'(default), or "Debug".') |
@@ -2712,6 +2720,23 @@ def main(): |
opts = BisectOptions() |
opts.ParseCommandLine() |
+ if opts.bug_id: |
+ if opts.output_buildbot_annotations: |
+ bisect_utils.OutputAnnotationStepStart('Checking Issue Tracker') |
+ issue_closed = query_crbug.CheckIssueClosed(opts.bug_id) |
+ if issue_closed: |
+ print 'Aborting bisect because bug is closed' |
+ else: |
+ print 'Could not confirm bug is closed, proceeding.' |
+ if opts.output_buildbot_annotations: |
+ bisect_utils.OutputAnnotationStepClosed() |
+ if issue_closed: |
+ results = BisectResults(abort_reason='the bug is closed.') |
+ bisect_test = BisectPerformanceMetrics(opts, os.getcwd()) |
+ bisect_test.printer.FormatAndPrintResults(results) |
+ return 0 |
+ |
+ |
if opts.extra_src: |
extra_src = bisect_utils.LoadExtraSrc(opts.extra_src) |
if not extra_src: |