Yulia Portnova | 6d72d7f | 2015-02-04 16:48:50 +0200 | [diff] [blame] | 1 | import argparse |
| 2 | from collections import OrderedDict |
| 3 | import sys |
| 4 | |
| 5 | import charts |
| 6 | import storage_api |
| 7 | |
| 8 | |
| 9 | def parse_args(argv): |
| 10 | parser = argparse.ArgumentParser() |
| 11 | parser.add_argument('-s', '--storage', help='storage location', dest="url") |
| 12 | parser.add_argument('-e', '--email', help='user email', |
| 13 | default="aaa@gmail.com") |
| 14 | parser.add_argument('-p', '--password', help='user password', |
| 15 | default="1234") |
| 16 | return parser.parse_args(argv) |
| 17 | |
| 18 | |
| 19 | def report(url, email=None, password=None): |
| 20 | storage = storage_api.create_storage(url, email, password) |
| 21 | results = storage.recent_builds() |
| 22 | |
| 23 | data = {} |
| 24 | |
| 25 | # render vertical bar |
| 26 | for build, results in results.items(): |
| 27 | for key, value in results.items(): |
| 28 | keys = key.split(' ') |
| 29 | if not data.get(keys[2]): |
| 30 | data[keys[2]] = {} |
| 31 | if not data[keys[2]].get(build): |
| 32 | data[keys[2]][build] = {} |
| 33 | data[keys[2]][build][' '.join([keys[0], keys[1]])] = value |
| 34 | |
| 35 | for name, value in data.items(): |
| 36 | title = name |
| 37 | legend = [] |
| 38 | dataset = [] |
| 39 | scale_x = [] |
| 40 | for build_id, build_results in value.items(): |
| 41 | legend.append(build_id) |
| 42 | ordered_build_results = OrderedDict(sorted(build_results.items(), |
| 43 | key=lambda t: t[0])) |
| 44 | if not scale_x: |
| 45 | scale_x = ordered_build_results.keys() |
| 46 | dataset.append(ordered_build_results.values()) |
| 47 | |
| 48 | bar = charts.render_vertical_bar(title, legend, dataset, |
| 49 | scale_x=scale_x) |
| 50 | print "Vertical bar for %s:\n %s" % (name, str(bar)) |
| 51 | |
| 52 | |
| 53 | def main(argv): |
| 54 | opts = parse_args(argv) |
| 55 | report(opts.url) |
| 56 | return 0 |
| 57 | |
| 58 | |
| 59 | if __name__ == '__main__': |
| 60 | exit(main(sys.argv[1:])) |