Chromium Code Reviews| Index: scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py |
| diff --git a/scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py b/scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py |
| index 72fe3b2f66330a111196fc1a75bf1a0e475a544c..4a279d8f44497058495edc8d3a58a2bc8e2e1e8a 100755 |
| --- a/scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py |
| +++ b/scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py |
| @@ -25,14 +25,32 @@ def _get_build_name(job): |
| return property_tuple[1] |
| -def main(argv): |
| - if len(argv) < 4: |
| - print 'Usage: %s <master> <builder> <job_name1> [<job_name2> [...]]' |
| - print ' e.g. %s tryserver.chromium.perf linux_perf_bisector a012bc66ef98bb' |
| - sys.exit(1) |
| +def main(config): |
| + """"Checks jobs on a buildbot builder. |
| - master, builder = argv[1:3] |
| - job_names = argv[3:] |
| + Args: |
| + config (dict): a configuration in the following format. |
| + |
| + { |
| + "master": "tryserver.chromium.perf", |
| + "builder": "linux_perf_bisect", |
| + "job_names": [ "abc1234", "deadbeef000", "f00ba12"] |
| + } |
| + |
| + Returns: |
| + A dictionary containing a list of failed and/or a list of completed jobs. |
| + e.g. |
| + { |
| + "failed": ["deadbeef000"], |
| + "completed": ["abc1234"] |
| + } |
| + """ |
| + master = config['master'] |
| + builder = config['builder'] |
| + job_names = config['job_names'] |
| + results = {} |
| + completed_jobs = [] |
| + failed_jobs = [] |
| if 'TESTING_MASTER_HOST' in os.environ: |
| url = ('http://%(host)s:8041/json/builders/%(builder)s/' |
| @@ -42,27 +60,24 @@ def main(argv): |
| } |
| else: |
| url = BASE_URL % {'master': master, 'builder': builder} |
| - print 'Verifying buildbot jobs status at: ', url |
| builds_info = json.load(urllib2.urlopen(url)) |
| for build_num in builds_info.keys(): |
| build_name = _get_build_name(builds_info[build_num]) |
| if build_name in job_names: |
| - if builds_info[build_num]['results'] in [2, 4]: |
| - locator = 'bb:%s:%s:%s' % (master, builder, build_name) |
| - print 'Failed build url: %(url)s\nBuild failed: %(locator)s' % { |
|
prasadv
2015/09/17 22:33:34
We need this build url to be a part of step link,
RobertoCN
2015/09/19 00:32:54
Done.
|
| - 'locator': locator, |
| - 'url': LINK_URL % { |
| - 'master': master, |
| - 'builder': builder, |
| - 'build_num': build_num, |
| - } |
| - } |
| - return 1 |
| - print 'The specified jobs are not failed.' |
| - return 0 |
| + if builds_info[build_num]['results'] in [2,3,4]: |
| + failed_jobs.append(build_name) |
| + elif builds_info[build_num]['results'] in [0, 1]: |
| + completed_jobs.append(build_name) |
| + if completed_jobs: |
| + results['completed'] = completed_jobs |
| + if failed_jobs: |
| + results['failed_jobs'] = failed_jobs |
| + return results |
| if __name__ == '__main__': |
| - sys.exit(main(sys.argv)) |
| + config = json.loads(sys.stdin.read()) |
| + print main(config) |
| + sys.exit(0) |