summaryrefslogtreecommitdiffstats
path: root/net/tools/testserver/testserver.py
diff options
context:
space:
mode:
Diffstat (limited to 'net/tools/testserver/testserver.py')
-rwxr-xr-xnet/tools/testserver/testserver.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index aeb0575..55bca1e 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',