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

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: rebase Created 8 years, 2 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 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',
« 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