Chromium Code Reviews| Index: net/tools/testserver/testserver.py |
| diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py |
| index 84ee77ea1982e8dfcbab00104f9ce48927e90f18..b6ea6ca8bc4dc9b1d1c52e999a6d1524cc33efec 100755 |
| --- a/net/tools/testserver/testserver.py |
| +++ b/net/tools/testserver/testserver.py |
| @@ -19,6 +19,7 @@ import BaseHTTPServer |
| import cgi |
| import errno |
| import httplib |
| +import logging |
| import minica |
| import optparse |
| import os |
| @@ -40,6 +41,7 @@ import zlib |
| warnings.filterwarnings("ignore", category=DeprecationWarning) |
| import echo_message |
| +from mod_pywebsocket.standalone import WebSocketServer |
| import pyftpdlib.ftpserver |
| import tlslite |
| import tlslite.api |
| @@ -64,6 +66,10 @@ SERVER_FTP = 1 |
| SERVER_SYNC = 2 |
| SERVER_TCP_ECHO = 3 |
| SERVER_UDP_ECHO = 4 |
| +SERVER_WEBSOCKET = 5 |
| + |
| +# Default request queue size for WebSocketServer. |
| +_DEFAULT_REQUEST_QUEUE_SIZE = 128 |
| # Using debug() seems to cause hangs on XP: see http://crbug.com/64515 . |
| debug_output = sys.stderr |
| @@ -71,6 +77,29 @@ def debug(str): |
| debug_output.write(str + "\n") |
| debug_output.flush() |
| +class WebSocketOptions: |
| + """Holds options for WebSocketServer.""" |
| + |
| + def __init__(self, host, port, data_dir): |
| + self.request_queue_size = _DEFAULT_REQUEST_QUEUE_SIZE |
| + self.server_host = host |
| + self.port = port |
| + self.websock_handlers = data_dir |
| + self.scan_dir = None |
| + self.allow_handlers_outside_root_dir = False |
| + self.websock_handlers_map_file = None |
| + self.cgi_directories = [] |
| + self.is_executable_method = None |
| + self.allow_draft75 = False |
| + self.strict = True |
| + |
| + # TODO(toyoshim): Support SSL and authenticates (http://crbug.com/137639) |
| + self.use_tls = False |
| + self.private_key = None |
| + self.certificate = None |
| + self.tls_client_ca = None |
| + self.use_basic_auth = False |
| + |
| class RecordingSSLSessionCache(object): |
| """RecordingSSLSessionCache acts as a TLS session cache and maintains a log of |
| lookups and inserts in order to test session cache behaviours.""" |
| @@ -2116,6 +2145,14 @@ def main(options, args): |
| server.policy_keys = options.policy_keys |
| server.policy_user = options.policy_user |
| server.gdata_auth_token = options.auth_token |
| + elif options.server_type == SERVER_WEBSOCKET: |
| + # Launch pywebsocket via WebSocketServer. |
| + logger = logging.getLogger() |
| + logger.addHandler(logging.StreamHandler()) |
| + os.chdir(MakeDataDir()) |
|
Ryan Sleevi
2012/08/30 02:54:15
This strikes me as a little odd, just because it's
Takashi Toyoshima
2012/08/31 17:38:20
This is pywebsocket specific requirement.
It need
|
| + server = WebSocketServer(WebSocketOptions(host, port, MakeDataDir())) |
| + print 'WebSocket server started on %s:%d...' % (host, server.server_port) |
| + server_data['port'] = server.server_port |
| elif options.server_type == SERVER_SYNC: |
| xmpp_port = options.xmpp_port |
| server = SyncHTTPServer((host, port), xmpp_port, SyncPageHandler) |
| @@ -2211,6 +2248,10 @@ if __name__ == '__main__': |
| const=SERVER_UDP_ECHO, default=SERVER_HTTP, |
| dest='server_type', |
| help='start up a udp echo server.') |
| + option_parser.add_option('', '--websocket', action='store_const', |
| + const=SERVER_WEBSOCKET, default=SERVER_HTTP, |
| + dest='server_type', |
| + help='start up a WebSocket server.') |
| option_parser.add_option('', '--log-to-console', action='store_const', |
| const=True, default=False, |
| dest='log_to_console', |