diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/parsebench.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/parsebench.py b/tools/parsebench.py new file mode 100755 index 0000000..acf018a --- /dev/null +++ b/tools/parsebench.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +# Copyright (c) 2014, NORDUnet A/S. +# See LICENSE for licensing information. + +import argparse +import sys +import ast +import itertools + +def parse_one_line(line): + row = line.rstrip().split(":") + assert row[0].startswith("mergeoutput.") + iteration = int(row[0][12:]) + stage = row[2].strip() + data = ast.literal_eval(row[3].strip()) + return (iteration, stage, data) + +def main(): + parser = argparse.ArgumentParser(description="") + parser.add_argument('inputfile', help="Input file") + args = parser.parse_args() + lines = [parse_one_line(line) for line in open(args.inputfile)] + iterations = itertools.groupby(lines, lambda x: x[0]) + print "<!DOCTYPE html>" + print "<html>" + print "<head>" + print "</head>" + print "<body>" + print "<div>" + legend = [] + for (i, iteration) in iterations: + print "<table><tr>" + for (stagen, (_, stage, data)) in enumerate(iteration): + if i == 0: + legend.append("<div><span>%s</span>" % (stage,)) + data = list(data) + for (itemn, (item, useconds)) in enumerate(data): + seconds = useconds / 1000000 + step = 50 / (len(data) - 1) + print "<td style='width: %dpx; padding: 0; background-color: hsl(%d, 90%%, %d%%);' title='%s:%s'>" % (seconds, stagen * 90, itemn * step + 40, stage, item) + if i == 0: + legend.append("<span style='background-color: hsl(%d, 90%%, %d%%);'>%s</span>" % (stagen * 90, itemn * step + 40, item)) + print " " + print "</td>" + if i == 0: + legend.append("</div>") + print "</tr></table>" + print "</div>" + print "<div style='height: 30px;'>" + print "</div>" + print "<div>" + for row in legend: + print row + print "</div>" + print "</body>" + print "</html>" + +main() |