annotate talosnames/web.py @ 35:88d280049e2f

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