Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(994)

Unified Diff: net/tools/testserver/testserver.py

Issue 10879029: reland: Launch pywebsocket via net::TestServer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ws works Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/testserver/run_testserver.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/testserver/testserver.py
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index 84ee77ea1982e8dfcbab00104f9ce48927e90f18..ba6a4aceb024f26a266b7498f86e84adf574a333 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())
+ server = WebSocketServer(WebSocketOptions(host, port, MakeDataDir()))
+ print 'WebSocket server started on %s:%d...' % (host, server.server_port)
+ server_data['port'] = server._sockets[0][0].getsockname()[1]
bashi 2012/08/27 13:57:51 I'm not sure why you refer server._sockets[0][0].g
Takashi Toyoshima 2012/08/28 05:14:00 This is for the case where server.server_port is 0
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',
« no previous file with comments | « net/tools/testserver/run_testserver.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698