--- /dev/null
+#!/usr/bin/env python
+import json, sys
+
+runs = json.load(sys.stdin)
+
+selecters = dict(s.split('=',1) for s in sys.argv[1:])
+
+selected=list()
+
+names=set()
+
+for run in runs:
+ match = True
+ for k,v in selecters.iteritems():
+ # print k, v, run[k]
+ if run[k] != v:
+ match = False
+ break
+
+ if match:
+ selected.append((run['tag'], run))
+ names.update(run)
+
+selected.sort()
+
+names.discard('tag')
+
+fmt=''.join('%%%ds' % (i+4) for i in [3]+map(len, sorted(names)))
+print fmt % tuple(['tag']+sorted(names))
+for tag, stats in selected:
+ print fmt % tuple(['tag'] + [stats.get(s) for s in sorted(names)])
--- /dev/null
+#!/usr/bin/env python
+import glob, json
+
+varnames = set()
+statnames = set()
+runs = list()
+
+for fname in glob.glob('testresults-*.xml'):
+ info = fname[12:-4].split('.')
+ tag = info.pop(0)
+ vars = dict(s.split(':') for s in info)
+ vars['tag'] = tag
+ varnames.update(vars.keys())
+ stats=dict()
+ for line in open(fname):
+ if line.startswith('<'):
+ sname = line.split(';')[4][:-3]
+ sval = line.split(';')[8][:-3]
+ stats[sname]=sval
+ statnames.add(sname)
+ # print fname, vars, stats
+ runs.append(dict(vars.items()+stats.items()))
+
+# print varnames
+# print statnames
+
+print json.dumps(runs)