71 lines
1.8 KiB
Python
Executable file
71 lines
1.8 KiB
Python
Executable file
#!/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 json
|
|
import logging
|
|
import multiprocessing
|
|
import sys
|
|
import time
|
|
|
|
import buildbot
|
|
|
|
|
|
MASTER_NAME = 'chromium.perf'
|
|
BUILDER_NAMES = ('Win 7 Perf (1)', 'Mac 10.9 Perf (1)')
|
|
BENCHMARK_NAME = 'smoothness.top_25_smooth'
|
|
VALUE_NAME = 'frame_times'
|
|
|
|
BUILD_COUNT = 100
|
|
|
|
|
|
def QueryBuild(build):
|
|
steps = build.steps
|
|
if not BENCHMARK_NAME in steps:
|
|
return None
|
|
|
|
step = steps[BENCHMARK_NAME]
|
|
if step.result != buildbot.SUCCESS:
|
|
return None
|
|
|
|
revision_data = []
|
|
trace_results = step.results['chart_data']['charts'][VALUE_NAME].iteritems()
|
|
for user_story_name, user_story_data in trace_results:
|
|
revision_data.append({
|
|
'user_story': user_story_name,
|
|
'start_time': step.start_time,
|
|
'end_time': step.end_time,
|
|
'values': user_story_data['values'],
|
|
})
|
|
return {
|
|
'start_time': build.start_time,
|
|
'end_time': build.end_time,
|
|
'user_story_runs': revision_data,
|
|
}
|
|
|
|
|
|
def QueryBuilds(builder):
|
|
return map(QueryBuild, builder.LastBuilds(BUILD_COUNT))
|
|
|
|
|
|
def main():
|
|
logging.getLogger().setLevel(logging.INFO)
|
|
|
|
builders = buildbot.Builders(MASTER_NAME)
|
|
process_pool = multiprocessing.Pool(8)
|
|
|
|
start_time = time.time()
|
|
data = process_pool.map(QueryBuilds,
|
|
(builders[name] for name in BUILDER_NAMES))
|
|
data = dict(zip(BUILDER_NAMES, data))
|
|
logging.info('Queried %d builds in %2.2f seconds.',
|
|
BUILD_COUNT, time.time() - start_time)
|
|
|
|
start_time = time.time()
|
|
json.dump(data, sys.stdout)
|
|
logging.info('Wrote data in %2.2f seconds.', time.time() - start_time)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|