Rev 3126: Provide a way to specify the protocol version at the server layer. in file:///v/home/vila/src/bzr/bugs/175524/

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Dec 21 09:43:29 GMT 2007


At file:///v/home/vila/src/bzr/bugs/175524/

------------------------------------------------------------
revno: 3126
revision-id:v.ladeuil+lp at free.fr-20071221094322-pgf4q5wla2mjs3gp
parent: v.ladeuil+lp at free.fr-20071220201638-dcvzegapib1wkdga
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 175524
timestamp: Fri 2007-12-21 10:43:22 +0100
message:
  Provide a way to specify the protocol version at the server layer.
  
  * bzrlib/tests/http_server.py:
  (TestingHTTPRequestHandler): Take the test case server protocol
  version if provided to override the local protocol version.
  (HttpServer): Add a optional protol_version parameter.
  (HttpServer.__init__): If provided, our protocol version takes
  precedence over the request handler one.
modified:
  bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
-------------- next part --------------
=== modified file 'bzrlib/tests/http_server.py'
--- a/bzrlib/tests/http_server.py	2007-12-19 07:46:29 +0000
+++ b/bzrlib/tests/http_server.py	2007-12-21 09:43:22 +0000
@@ -52,6 +52,13 @@
     # The Message-like class used to parse the request headers
     MessageClass = httplib.HTTPMessage
 
+    def setup(self):
+        SimpleHTTPServer.SimpleHTTPRequestHandler.setup(self)
+        tcs = self.server.test_case_server
+        if tcs.protocol_version is not None:
+            # If the test server forced a protocol version, use it
+            self.protocol_version = tcs.protocol_version
+
     def log_message(self, format, *args):
         tcs = self.server.test_case_server
         tcs.log('webserver - %s - - [%s] %s "%s" "%s"',
@@ -361,19 +368,32 @@
     _url_protocol = 'http'
 
     # Subclasses can provide a specific request handler
-    def __init__(self, request_handler=TestingHTTPRequestHandler):
+    def __init__(self, request_handler=TestingHTTPRequestHandler,
+                 protocol_version=None):
+        """Constructor.
+
+        :param request_handler: a class that will be instantiated to handle an
+            http connection (one or several requests).
+
+        :param protocol_version: if specified, will override the protocol
+            version of the request handler.
+        """
         transport.Server.__init__(self)
         self.request_handler = request_handler
         self.host = 'localhost'
         self.port = 0
         self._httpd = None
+        self.protocol_version = protocol_version
         # Allows tests to verify number of GET requests issued
         self.GET_request_nb = 0
 
     def _get_httpd(self):
         if self._httpd is None:
             rhandler = self.request_handler
-            proto_vers = rhandler.protocol_version
+            if self.protocol_version is None:
+                proto_vers = rhandler.protocol_version
+            else:
+                proto_vers = self.protocol_version
             # Create the appropriate server for the required protocol
             serv_cls = self.http_server_class.get(proto_vers, None)
             if serv_cls is None:



More information about the bazaar-commits mailing list