| Index: net/tools/testserver/testserver.py
|
| diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
|
| index aeb0575118b6761feb3069ff64c8e5f4838f2974..55bca1e039acb3fcd857a047a080e69e3f8f9ce8 100755
|
| --- a/net/tools/testserver/testserver.py
|
| +++ b/net/tools/testserver/testserver.py
|
| @@ -21,6 +21,7 @@ import errno
|
| import hashlib
|
| import httplib
|
| import json
|
| +import logging
|
| import minica
|
| import optparse
|
| import os
|
| @@ -42,6 +43,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
|
| @@ -55,6 +57,10 @@ SERVER_SYNC = 2
|
| SERVER_TCP_ECHO = 3
|
| SERVER_UDP_ECHO = 4
|
| SERVER_BASIC_AUTH_PROXY = 5
|
| +SERVER_WEBSOCKET = 6
|
| +
|
| +# 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
|
| @@ -62,6 +68,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."""
|
| @@ -2216,6 +2245,16 @@ 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())
|
| + # TODO(toyoshim): Remove following os.chdir. Currently this operation
|
| + # is required to work correctly. It should be fixed from pywebsocket side.
|
| + os.chdir(MakeDataDir())
|
| + 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)
|
| @@ -2320,6 +2359,10 @@ if __name__ == '__main__':
|
| dest='server_type',
|
| help='start up a proxy server which requires basic '
|
| 'authentication.')
|
| + 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',
|
|
|