Rev 5269: All http tests passing (including https). in file:///home/vila/src/bzr/experimental/leaking-tests/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Fri Jun 4 17:31:07 BST 2010
At file:///home/vila/src/bzr/experimental/leaking-tests/
------------------------------------------------------------
revno: 5269
revision-id: v.ladeuil+lp at free.fr-20100604163107-z04iiarg4nbwgzai
parent: v.ladeuil+lp at free.fr-20100604114856-7e505v5w40937ya5
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: http-leaks
timestamp: Fri 2010-06-04 18:31:07 +0200
message:
All http tests passing (including https).
* bzrlib/tests/test_server.py:
(TestingTCPServerMixin.handle_request): Override python version.
* bzrlib/tests/https_server.py:
(TestingHTTPSServerMixin.verify_request): Overriden for the ssl
handshake.
(TestingHTTPSServer, TestingThreadingHTTPSServer, HTTPSServer):
Tweaks to comply to the new implementation.
* bzrlib/tests/http_server.py:
(create_server): Fix indentation.
-------------- next part --------------
=== modified file 'bzrlib/tests/http_server.py'
--- a/bzrlib/tests/http_server.py 2010-06-04 11:48:56 +0000
+++ b/bzrlib/tests/http_server.py 2010-06-04 16:31:07 +0000
@@ -404,8 +404,8 @@
self.logs = []
def create_server(self):
- return self.server_class(
- (self.host, self.port), self.request_handler_class, self)
+ return self.server_class(
+ (self.host, self.port), self.request_handler_class, self)
def _get_remote_url(self, path):
path_parts = path.split(os.path.sep)
=== modified file 'bzrlib/tests/https_server.py'
--- a/bzrlib/tests/https_server.py 2010-05-24 01:05:14 +0000
+++ b/bzrlib/tests/https_server.py 2010-06-04 16:31:07 +0000
@@ -21,6 +21,7 @@
from bzrlib.tests import (
http_server,
ssl_certs,
+ test_server,
)
@@ -44,11 +45,13 @@
Return True if we should proceed with this request, False if we should
not even touch a single byte in the socket !
"""
- serving = self.serving is not None and self.serving.isSet()
+ serving = test_server.TestingTCPServerMixin.verify_request(
+ self, request, client_address)
if serving:
request.do_handshake()
return serving
+
class TestingHTTPSServer(TestingHTTPSServerMixin,
http_server.TestingHTTPServer):
@@ -58,8 +61,8 @@
http_server.TestingHTTPServer.__init__(
self, server_address, request_handler_class, test_case_server)
- def _get_request (self):
- sock, addr = http_server.TestingHTTPServer._get_request(self)
+ def get_request (self):
+ sock, addr = http_server.TestingHTTPServer.get_request(self)
return self._get_ssl_request(sock, addr)
@@ -72,8 +75,8 @@
http_server.TestingThreadingHTTPServer.__init__(
self, server_address, request_handler_class, test_case_server)
- def _get_request (self):
- sock, addr = http_server.TestingThreadingHTTPServer._get_request(self)
+ def get_request (self):
+ sock, addr = http_server.TestingThreadingHTTPServer.get_request(self)
return self._get_ssl_request(sock, addr)
@@ -98,9 +101,10 @@
self.cert_file = cert_file
self.temp_files = []
- def create_httpd(self, serv_cls, rhandler_cls):
- return serv_cls((self.host, self.port), self.request_handler,
- self, self.key_file, self.cert_file)
+ def create_server(self):
+ return self.server_class(
+ (self.host, self.port), self.request_handler_class, self,
+ self.key_file, self.cert_file)
class HTTPSServer_urllib(HTTPSServer):
=== modified file 'bzrlib/tests/test_server.py'
--- a/bzrlib/tests/test_server.py 2010-06-04 11:48:56 +0000
+++ b/bzrlib/tests/test_server.py 2010-06-04 16:31:07 +0000
@@ -304,6 +304,7 @@
separate thread.
"""
+ # FIXME: sibling_class is a hack -- vila 20100604
def __init__(self, sibling_class):
self.sibling_class = sibling_class
self.started = threading.Event()
@@ -335,6 +336,20 @@
self.server_close()
self.stopped.set()
+ def handle_request(self):
+ """Handle one request.
+
+ The python version swallows some socket exceptions and we don't use
+ timeout, so we override to better control the server behavior.
+ """
+ request, client_address = self.get_request()
+ if self.verify_request(request, client_address):
+ try:
+ self.process_request(request, client_address)
+ except:
+ self.handle_error(request, client_address)
+ self.close_request(request)
+
def verify_request(self, request, client_address):
"""Verify the request.
More information about the bazaar-commits
mailing list