Mercurial > mozilla > hg > talosnames
annotate talosnames/web.py @ 29:905daa511aa4
minor improvements
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 17 Jul 2012 14:17:41 -0700 |
parents | c6a042aad739 |
children | c6580ad2612f |
rev | line source |
---|---|
0 | 1 #!/usr/bin/env python |
2 | |
3 """ | |
4 web handler for talosnames | |
5 """ | |
6 | |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
7 import os |
22 | 8 import pprint |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
9 import tempita |
18 | 10 from api import TalosNames |
0 | 11 from webob import Request, Response, exc |
12 | |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
13 here = os.path.dirname(os.path.abspath(__file__)) |
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
14 template = os.path.join(here, 'templates', 'index.html') |
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
15 |
0 | 16 class Handler(object): |
17 | |
18 def __init__(self, **kw): | |
18 | 19 self.api = TalosNames() |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
20 self.template = file(template).read() |
0 | 21 |
25 | 22 # get data |
21 | 23 suites = sorted(self.api.suites.keys()) |
24 tests = {} | |
25 for suite in suites: | |
26 try: | |
27 test = self.api.test_config(suite) | |
28 tests[suite] = test | |
29 except: | |
30 tests[suite] = None | |
31 | |
25 | 32 self.data = {'suites': suites, |
33 'commands': self.api.buildbot_commands, | |
34 'tbpl': dict([(suite, self.api.tbpl_name(suite)) | |
35 for suite in suites]), | |
36 'tests': tests, | |
37 'pprint': pprint.pformat, | |
38 'api': self.api | |
39 } | |
40 | |
26 | 41 paint = {} |
42 chrome = {} | |
43 graphserver = {} | |
44 for suite in suites: | |
45 for test in tests.get(suite) or []: | |
46 config = self.api.talos_config(suite) | |
47 _paint = '--mozAfterPaint' in self.data['commands'][suite] | |
48 _chrome = '--noChrome' not in self.data['commands'][suite] | |
49 extension = config.get('test_name_extension', '') | |
50 _extension = '' | |
51 if not _chrome: | |
52 _extension += '_nochrome' | |
53 if _paint: | |
54 _extension += '_paint' | |
55 if extension != _extension: | |
56 raise AssertionError | |
57 paint[suite] = _paint | |
58 chrome[suite] = _chrome | |
59 graphserver.setdefault(suite, {})[test] = [self.api.graphserver_name(test + extension) or ('','')] | |
60 self.data['graphserver'] = graphserver | |
61 self.data['paint'] = paint | |
62 self.data['chrome'] = chrome | |
25 | 63 |
64 def __call__(self, environ, start_response): | |
65 request = Request(environ) | |
66 response = Response(content_type='text/html', | |
67 body=self.render()) | |
68 return response(environ, start_response) | |
69 | |
70 def render(self): | |
71 template = tempita.HTMLTemplate(self.template) | |
72 return template.substitute(self.data) | |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
73 |
0 | 74 if __name__ == '__main__': |
75 from wsgiref import simple_server | |
76 app = Handler() | |
77 server = simple_server.make_server(host='0.0.0.0', port=8080, app=app) | |
78 server.serve_forever() | |
79 | |
18 | 80 |