~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/http_server.py

  • Committer: Vincent Ladeuil
  • Date: 2007-12-21 09:43:22 UTC
  • mto: (3146.3.1 179368) (3156.2.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 3158.
  • Revision ID: v.ladeuil+lp@free.fr-20071221094322-pgf4q5wla2mjs3gp
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.

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
    # The Message-like class used to parse the request headers
53
53
    MessageClass = httplib.HTTPMessage
54
54
 
 
55
    def setup(self):
 
56
        SimpleHTTPServer.SimpleHTTPRequestHandler.setup(self)
 
57
        tcs = self.server.test_case_server
 
58
        if tcs.protocol_version is not None:
 
59
            # If the test server forced a protocol version, use it
 
60
            self.protocol_version = tcs.protocol_version
 
61
 
55
62
    def log_message(self, format, *args):
56
63
        tcs = self.server.test_case_server
57
64
        tcs.log('webserver - %s - - [%s] %s "%s" "%s"',
361
368
    _url_protocol = 'http'
362
369
 
363
370
    # Subclasses can provide a specific request handler
364
 
    def __init__(self, request_handler=TestingHTTPRequestHandler):
 
371
    def __init__(self, request_handler=TestingHTTPRequestHandler,
 
372
                 protocol_version=None):
 
373
        """Constructor.
 
374
 
 
375
        :param request_handler: a class that will be instantiated to handle an
 
376
            http connection (one or several requests).
 
377
 
 
378
        :param protocol_version: if specified, will override the protocol
 
379
            version of the request handler.
 
380
        """
365
381
        transport.Server.__init__(self)
366
382
        self.request_handler = request_handler
367
383
        self.host = 'localhost'
368
384
        self.port = 0
369
385
        self._httpd = None
 
386
        self.protocol_version = protocol_version
370
387
        # Allows tests to verify number of GET requests issued
371
388
        self.GET_request_nb = 0
372
389
 
373
390
    def _get_httpd(self):
374
391
        if self._httpd is None:
375
392
            rhandler = self.request_handler
376
 
            proto_vers = rhandler.protocol_version
 
393
            if self.protocol_version is None:
 
394
                proto_vers = rhandler.protocol_version
 
395
            else:
 
396
                proto_vers = self.protocol_version
377
397
            # Create the appropriate server for the required protocol
378
398
            serv_cls = self.http_server_class.get(proto_vers, None)
379
399
            if serv_cls is None: