Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1017)

Unified Diff: scripts/slave/recipe_modules/auto_bisect/resources/check_buildbot.py

Issue 1339613005: Refactoring scripts that wait for buildbot jobs to complete. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@hax
Patch Set: . Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698