summaryrefslogtreecommitdiffstats
path: root/net/tools
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 22:37:35 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 22:37:35 +0000
commitb89290213d94169f8293f9bd7668550975281d45 (patch)
tree951d1218d6c660cd3cf94c9c67b8c9f193a536a8 /net/tools
parent0c6da50c299be943b4c04a3953e0931734af7eaf (diff)
downloadchromium_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.py25
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',