diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 22:37:35 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 22:37:35 +0000 |
commit | b89290213d94169f8293f9bd7668550975281d45 (patch) | |
tree | 951d1218d6c660cd3cf94c9c67b8c9f193a536a8 /net/tools | |
parent | 0c6da50c299be943b4c04a3953e0931734af7eaf (diff) | |
download | chromium_src-b89290213d94169f8293f9bd7668550975281d45.zip chromium_src-b89290213d94169f8293f9bd7668550975281d45.tar.gz chromium_src-b89290213d94169f8293f9bd7668550975281d45.tar.bz2 |
Speed up net_unittests a bit by re-using launched test server.
On POSIX it makes the server fork a separate process for each request for better
test isolation.
Starting with just few tests to limit impact of an eventual breakage. The results are promising.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/164522
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23481 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools')
-rw-r--r-- | net/tools/testserver/testserver.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py index 14ae182..aeee5e2 100644 --- a/net/tools/testserver/testserver.py +++ b/net/tools/testserver/testserver.py @@ -78,6 +78,16 @@ class HTTPSServer(tlslite.api.TLSSocketServerMixIn, StoppableHTTPServer): print "Handshake failure:", str(error) return False +class ForkingHTTPServer(SocketServer.ForkingMixIn, StoppableHTTPServer): + """This is a specialization of of StoppableHTTPServer which serves each + request in a separate process""" + pass + +class ForkingHTTPSServer(SocketServer.ForkingMixIn, HTTPSServer): + """This is a specialization of of HTTPSServer which serves each + request in a separate process""" + pass + class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler): def __init__(self, request, client_address, socket_server): @@ -1047,10 +1057,18 @@ def main(options, args): if not os.path.isfile(options.cert): print 'specified cert file not found: ' + options.cert + ' exiting...' return - server = HTTPSServer(('127.0.0.1', port), TestPageHandler, options.cert) + if options.forking: + server_class = ForkingHTTPSServer + else: + server_class = HTTPSServer + server = server_class(('127.0.0.1', port), TestPageHandler, options.cert) print 'HTTPS server started on port %d...' % port else: - server = StoppableHTTPServer(('127.0.0.1', port), TestPageHandler) + if options.forking: + server_class = ForkingHTTPServer + else: + server_class = StoppableHTTPServer + server = server_class(('127.0.0.1', port), TestPageHandler) print 'HTTP server started on port %d...' % port server.data_dir = MakeDataDir() @@ -1102,6 +1120,9 @@ if __name__ == '__main__': const=SERVER_FTP, default=SERVER_HTTP, dest='server_type', help='FTP or HTTP server default HTTP') + option_parser.add_option('--forking', action='store_true', default=False, + dest='forking', + help='Serve each request in a separate process') option_parser.add_option('', '--port', default='8888', type='int', help='Port used by the server') option_parser.add_option('', '--data-dir', dest='data_dir', |