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