420a752a83adac45f534c4407c71a17d1ba29c54
[WebKit.git] / Tools / Scripts / webkitpy / benchmark_runner / http_server_driver / http_server / twisted_http_server.py
1 #!/usr/bin/env python
2
3 import argparse
4 import logging
5 import os
6 import sys
7
8 try:
9     import twisted
10 except ImportError:
11     sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../../..')))
12     from webkitpy.thirdparty.autoinstalled.twisted import twisted
13
14 from twisted.web import static, server
15 from twisted.web.resource import Resource
16 from twisted.internet import reactor
17
18 _log = logging.getLogger(__name__)
19
20
21 class ServerControl(Resource):
22     isLeaf = True
23
24     def render_GET(self, request):
25         _log.info("Serving request %s" % request)
26         reactor.stop()
27         return ""
28
29     def render_POST(self, request):
30         _log.info("Serving request %s" % request)
31         sys.stdout.write(request.content.read())
32         sys.stdout.flush()
33         reactor.stop()
34         return 'OK'
35
36
37 if __name__ == '__main__':
38     parser = argparse.ArgumentParser(description='python twisted_http_server.py web_root')
39     parser.add_argument('web_root')
40     parser.add_argument('--port', type=int, default=0)
41     args = parser.parse_args()
42     web_root = static.File(args.web_root)
43     serverControl = ServerControl()
44     web_root.putChild('shutdown', serverControl)
45     web_root.putChild('report', serverControl)
46     reactor.listenTCP(args.port, server.Site(web_root))
47     reactor.run()