| #!/usr/bin/env python |
| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| import multiprocessing |
| import sys |
| import time |
| import traceback |
| |
| import buildbot |
| |
| |
| POLL_INTERVAL = 600 |
| BUILD_HISTORY_COUNT = 200 |
| BUILD_RESULTS_COUNT = 50 |
| |
| |
| def FetchLatestBuildResults(builder): |
| try: |
| builder.FetchRecentBuilds(BUILD_HISTORY_COUNT) |
| print 'Fetching results for', builder |
| for build in builder.LastBuilds(BUILD_RESULTS_COUNT): |
| for step in build.steps.itervalues(): |
| step.results # pylint: disable=pointless-statement |
| except: # multiprocessing doesn't give useful stack traces, so print it here. |
| traceback.print_exc(file=sys.stderr) |
| print |
| raise |
| |
| |
| def main(): |
| logging.getLogger().setLevel(logging.INFO) |
| builders = buildbot.Builders('chromium.perf') |
| |
| process_pool = multiprocessing.Pool(4) |
| |
| while True: |
| print 'Refreshing...' |
| buildbot.Update('chromium.perf', builders) |
| process_pool.map(FetchLatestBuildResults, builders.itervalues()) |
| print 'Refreshed!' |
| time.sleep(POLL_INTERVAL) |
| |
| |
| if __name__ == '__main__': |
| main() |