Skip to content

Instantly share code, notes, and snippets.

@indygreg
Created May 19, 2016 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indygreg/e86462706d3bec66496e8bb2e0809fd9 to your computer and use it in GitHub Desktop.
Save indygreg/e86462706d3bec66496e8bb2e0809fd9 to your computer and use it in GitHub Desktop.
Analyze Automation
import collections
import datetime
import operator
import requests
r = requests.get('http://builddata.pub.build.mozilla.org/builddata/buildjson/builds-pending.js')
pending = r.json()['pending']
by_tree = collections.Counter()
by_tree_revision = collections.Counter()
by_builder = collections.Counter()
total = 0
push_count = 0
oldest_by_builder = {}
for tree in pending:
for revision, jobs in pending[tree].iteritems():
push_count += 1
for job in jobs:
total += 1
by_tree[tree] += 1
builder = job['buildername']
submitted = job['submitted_at']
by_builder[builder] += 1
by_tree_revision[(tree, revision)] += 1
if builder in oldest_by_builder:
if submitted < oldest_by_builder[builder]:
oldest_by_builder[builder] = submitted
else:
oldest_by_builder[builder] = submitted
print('Push Count: %d' % push_count)
cum = 0
for k, v in sorted(by_tree.items(), key=operator.itemgetter(1), reverse=True):
percent = float(v) / float(total) * 100.0
cum += percent
print('%d\t%.1f (%.1f)\t%s' % (v, percent, cum, k))
print('')
cum = 0
for k, v in sorted(by_tree_revision.items(), key=operator.itemgetter(1), reverse=True):
percent = float(v) / float(total) * 100.0
cum += percent
print('%d\t%.1f (%.1f)\t%s' % (v, percent, cum, k))
print('')
now = datetime.datetime.utcnow()
for k, v in sorted(oldest_by_builder.items(), key=operator.itemgetter(1), reverse=True):
submitted = datetime.datetime.utcfromtimestamp(v)
delta = now - submitted
hours, remainder = divmod(delta.seconds, 3600)
hours += 24 * delta.days
minutes, seconds = divmod(remainder, 60)
#print('%02d:%02d:%02d\t%s' % (hours, minutes, seconds, k))
print('')
#cum = 0
#for k, v in sorted(by_builder.items(), key=operator.itemgetter(1), reverse=True):
# percent = float(v) / float(total) * 100.0
# cum += percent
# print('%d\t%.1f (%.1f)\t%s' % (v, percent, cum, k))
# print('')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment