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