[this time to list] For completeness, here's the tool I'm using now with that kludge. It's good enough for today, though the sparkly dashboard in nine would be nicer.
#!/bin/sh # See http://trac.buildbot.net/wiki/BuildbotJson # Report statistics on build times for builders that match given strings # Show avg and max latency and duration set -e set -x if test "$1" = "" then filter1=- else filter1=$1 fi if test "$2" = "" then filter2=- else filter2=$2 fi cat > report-stats.py << _EOF_ stats=[] for bname in b.builders.keys: if '$filter1' in bname and '$filter2' in bname: builds = b.builders[bname].builds okbuilds = [build for build in builds if build.duration] sum_n = sum(1 for build in okbuilds) if (sum_n > 0): sum_duration = sum(build.duration for build in okbuilds) max_duration = max(build.duration for build in okbuilds) sum_latency = 0 max_latency = -1 n_latency = 0 for build in okbuilds: if build.latency != None: sum_latency += build.latency if build.latency > max_latency: max_latency = build.latency n_latency += 1 stats.append([sum_n, sum_duration/sum_n, max_duration, ((sum_latency/n_latency) if n_latency > 0 else -1), max_latency, bname]) # Sort four different ways, show worst for each def report(stats, label): print "Sorted by %s" % label n = 0 for stat in stats: (sum_n, avg_duration, max_duration, avg_latency, max_latency, bname) = stat print "%-42s: duration: %4d .. %4d, latency: %4d .. %4d" % (bname, avg_duration, max_duration, avg_latency, max_latency) n += 1 if (n > 5): break print "\nPrinting worst 5 $filter1 $filter2 builders:" report(sorted(stats, key=lambda stat: -stat[1]), "avg_duration") report(sorted(stats, key=lambda stat: -stat[2]), "max_duration") report(sorted(stats, key=lambda stat: -stat[3]), "avg_latency") report(sorted(stats, key=lambda stat: -stat[4]), "max_latency") _EOF_ bbjs() { # patched copy of buildbot_json.py to report latency buildbot-local/buildbot_json.py $1 buildhost.example.com } bbjs interactive < report-stats.py _______________________________________________ users mailing list [email protected] https://lists.buildbot.net/mailman/listinfo/users
