blob: dff1ed18a12cae5d4e1f3c71fe0824cde0a25d88 [file] [log] [blame]
Yulia Portnova6d72d7f2015-02-04 16:48:50 +02001import argparse
2from collections import OrderedDict
3import sys
4
5import charts
6import storage_api
7
8
9def 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
19def 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
53def main(argv):
54 opts = parse_args(argv)
55 report(opts.url)
56 return 0
57
58
59if __name__ == '__main__':
60 exit(main(sys.argv[1:]))