Mercurial > mozilla > hg > talosnames
annotate talosnames/web.py @ 38:ef8590b55605
determine actually correct name extension
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 24 Jul 2012 11:12:07 -0700 |
parents | c945731f06d0 |
children | 10945dedde84 |
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 |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
10 import talos.test |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
11 import tempita |
18 | 12 from api import TalosNames |
31
c6580ad2612f
better formatting of command
Jeff Hammel <jhammel@mozilla.com>
parents:
26
diff
changeset
|
13 from subprocess import list2cmdline |
0 | 14 from webob import Request, Response, exc |
15 | |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
16 here = os.path.dirname(os.path.abspath(__file__)) |
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
17 template = os.path.join(here, 'templates', 'index.html') |
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
18 |
0 | 19 class Handler(object): |
20 | |
21 def __init__(self, **kw): | |
18 | 22 self.api = TalosNames() |
0 | 23 |
25 | 24 # get data |
21 | 25 suites = sorted(self.api.suites.keys()) |
26 tests = {} | |
27 for suite in suites: | |
28 try: | |
29 test = self.api.test_config(suite) | |
30 tests[suite] = test | |
31 except: | |
32 tests[suite] = None | |
33 | |
25 | 34 self.data = {'suites': suites, |
35 'commands': self.api.buildbot_commands, | |
36 'tbpl': dict([(suite, self.api.tbpl_name(suite)) | |
37 for suite in suites]), | |
38 'tests': tests, | |
39 'pprint': pprint.pformat, | |
31
c6580ad2612f
better formatting of command
Jeff Hammel <jhammel@mozilla.com>
parents:
26
diff
changeset
|
40 'list2cmdline': list2cmdline |
25 | 41 } |
42 | |
26 | 43 paint = {} |
44 chrome = {} | |
45 graphserver = {} | |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
46 test_type = {} |
26 | 47 for suite in suites: |
48 for test in tests.get(suite) or []: | |
49 config = self.api.talos_config(suite) | |
50 _paint = '--mozAfterPaint' in self.data['commands'][suite] | |
51 _chrome = '--noChrome' not in self.data['commands'][suite] | |
52 extension = config.get('test_name_extension', '') | |
53 _extension = '' | |
54 if not _chrome: | |
55 _extension += '_nochrome' | |
56 if _paint: | |
57 _extension += '_paint' | |
58 if extension != _extension: | |
59 raise AssertionError | |
60 paint[suite] = _paint | |
61 chrome[suite] = _chrome | |
36 | 62 |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
63 # determine test extension |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
64 # TODO: move this to api.py |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
65 testname = test |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
66 testobj = talos.test.test_dict[testname] |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
67 if issubclass(testobj, talos.test.TsBase): |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
68 test_type.setdefault(suite, {})[test] = 'Startup Test' |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
69 elif issubclass(testobj, talos.test.PageloaderTest): |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
70 test_type.setdefault(suite, {})[test] = 'Page Load Test' |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
71 testname += extension |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
72 else: |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
73 raise Exception |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
74 |
36 | 75 # get graphserver data |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
76 names = self.api.graphserver_name(testname) |
36 | 77 if names: |
78 graphserver.setdefault(suite, {})[test] = [names] | |
79 else: | |
80 graphserver.setdefault(suite, {})[test] = None | |
26 | 81 self.data['graphserver'] = graphserver |
82 self.data['paint'] = paint | |
83 self.data['chrome'] = chrome | |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
84 self.data['test_type'] = test_type |
25 | 85 |
86 def __call__(self, environ, start_response): | |
87 request = Request(environ) | |
88 response = Response(content_type='text/html', | |
89 body=self.render()) | |
90 return response(environ, start_response) | |
91 | |
92 def render(self): | |
32
1a9ec766f2b0
add a thing for tbpl short names
Jeff Hammel <jhammel@mozilla.com>
parents:
31
diff
changeset
|
93 contents = file(template).read() |
1a9ec766f2b0
add a thing for tbpl short names
Jeff Hammel <jhammel@mozilla.com>
parents:
31
diff
changeset
|
94 _template = tempita.HTMLTemplate(contents) |
1a9ec766f2b0
add a thing for tbpl short names
Jeff Hammel <jhammel@mozilla.com>
parents:
31
diff
changeset
|
95 return _template.substitute(self.data) |
19
aae0a420c4f7
should now actually do something
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
96 |
0 | 97 if __name__ == '__main__': |
35 | 98 |
99 parser = optparse.OptionParser() | |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
100 parser.add_option('-o', '--output', dest='output', |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
101 help="file to output to") |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
102 parser.add_option('-p', '--port', dest='port', |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
103 default=8080, type='int', |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
104 help="port to serve on") |
35 | 105 options, args = parser.parse_args() |
106 | |
0 | 107 app = Handler() |
38
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
108 |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
109 if options.output: |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
110 f = file(options.output, 'w') |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
111 f.write(app.render()) |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
112 f.close() |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
113 else: |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
114 from wsgiref import simple_server |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
115 server = simple_server.make_server(host='0.0.0.0', port=options.port, app=app) |
ef8590b55605
determine actually correct name extension
Jeff Hammel <jhammel@mozilla.com>
parents:
36
diff
changeset
|
116 server.serve_forever() |
0 | 117 |
18 | 118 |