| 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 fd63d88f46317127fc1f28c671d27aed94233b93..54a808e29f507ac93cc893dc150c04c4c47a428d 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 crbug_query
|
| import math_utils
|
| import request_build
|
| import source_control
|
| @@ -2144,6 +2145,7 @@ class BisectPerformanceMetrics(object):
|
| Returns:
|
| A BisectResults object.
|
| """
|
| +
|
| # Choose depot to bisect first
|
| target_depot = 'chromium'
|
| if self.opts.target_platform == 'android-chrome':
|
| @@ -2484,6 +2486,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):
|
| @@ -2531,6 +2534,10 @@ 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', type=str, 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):
|
| @@ -2542,12 +2549,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='choice',
|
| + group.add_argument('--build_preference', type=str,
|
| 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='choice', default='chromium',
|
| + group.add_argument('--target_platform', type=str, default='chromium',
|
| choices=['chromium', 'android', 'android-chrome'],
|
| help='The target platform. Choices are "chromium" '
|
| '(current platform), or "android". If you specify '
|
| @@ -2572,18 +2579,18 @@ 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='choice', default='ia32',
|
| + group.add_argument('--target_arch', type=str, 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='choice', default='Release',
|
| + group.add_argument('--target_build_type', type=str, default='Release',
|
| choices=['Release', 'Debug'],
|
| help='The target build type. Choices are "Release" '
|
| '(default), or "Debug".')
|
| group.add_argument('--builder_host', dest='builder_host',
|
| help='Host address of server to produce build by '
|
| 'posting try job request.')
|
| - group.add_argument('--builder_port', dest='builder_port', type='int',
|
| + group.add_argument('--builder_port', dest='builder_port', type=int,
|
| help='HTTP port of the server to produce build by '
|
| 'posting try job request.')
|
|
|
| @@ -2600,7 +2607,7 @@ class BisectOptions(object):
|
| action='store_true',
|
| help='DEBUG: Don\'t score the confidence of the initial '
|
| 'good and bad revisions\' test results.')
|
| - group.add_argument('--debug_fake_first_test_mean', type='int', default='0',
|
| + group.add_argument('--debug_fake_first_test_mean', type=int, default='0',
|
| help='DEBUG: When faking performance tests, return this '
|
| 'value as the mean of the first performance test, '
|
| 'and return a mean of 0.0 for further tests.')
|
| @@ -2626,7 +2633,7 @@ class BisectOptions(object):
|
| def ParseCommandLine(self):
|
| """Parses the command line for bisect options."""
|
| parser = self._CreateCommandLineParser()
|
| - opts, _ = parser.parse_args()
|
| + opts = parser.parse_args()
|
|
|
| try:
|
| if (not opts.metric and
|
| @@ -2707,6 +2714,23 @@ def main():
|
| opts = BisectOptions()
|
| opts.ParseCommandLine()
|
|
|
| + if opts.bug_id:
|
| + if opts.output_buildbot_annotations:
|
| + bisect_utils.OutputAnnotationStepStart('Checking Issue Tracker')
|
| + issue_closed = crbug_query.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:
|
|
|