~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http.py

  • Committer: James Henstridge
  • Date: 2006-02-06 07:32:47 UTC
  • mto: (1185.50.83 bzr-jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1562.
  • Revision ID: james.henstridge@canonical.com-20060206073247-001a39bcae4ae3d6
Make bzrlib.transport.http.HttpServer output referer and user agent as in
common log format.

Update my new test_http tests to use TestCaseWithWebserver, and check log
to make sure user-agent is written.

Show diffs side-by-side

added added

removed removed

Lines of Context:
305
305
class TestingHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
306
306
 
307
307
    def log_message(self, format, *args):
308
 
        self.server.test_case.log("webserver - %s - - [%s] %s",
 
308
        self.server.test_case.log('webserver - %s - - [%s] %s "%s" "%s"',
309
309
                                  self.address_string(),
310
310
                                  self.log_date_time_string(),
311
 
                                  format%args)
 
311
                                  format % args,
 
312
                                  self.headers.get('referer', '-'),
 
313
                                  self.headers.get('user-agent', '-'))
312
314
 
313
315
    def handle_one_request(self):
314
316
        """Handle a single HTTP request.
354
356
class HttpServer(Server):
355
357
    """A test server for http transports."""
356
358
 
357
 
    _HTTP_PORTS = range(13000, 0x8000)
358
 
 
359
359
    def _http_start(self):
360
360
        httpd = None
361
 
        for port in self._HTTP_PORTS:
362
 
            try:
363
 
                httpd = TestingHTTPServer(('localhost', port),
364
 
                                          TestingHTTPRequestHandler,
365
 
                                          self)
366
 
            except socket.error, e:
367
 
                if e.args[0] == errno.EADDRINUSE:
368
 
                    continue
369
 
                print >>sys.stderr, "Cannot run webserver :-("
370
 
                raise
371
 
            else:
372
 
                break
373
 
 
374
 
        if httpd is None:
375
 
            raise WebserverNotAvailable("Cannot run webserver :-( "
376
 
                                        "no free ports in range %s..%s" %
377
 
                                        (_HTTP_PORTS[0], _HTTP_PORTS[-1]))
378
 
 
 
361
        httpd = TestingHTTPServer(('localhost', 0),
 
362
                                  TestingHTTPRequestHandler,
 
363
                                  self)
 
364
        host, port = httpd.socket.getsockname()
379
365
        self._http_base_url = 'http://localhost:%s/' % port
380
366
        self._http_starting.release()
381
367
        httpd.socket.settimeout(0.1)
400
386
        self._http_starting.release()
401
387
        return self._http_base_url + remote_path
402
388
 
403
 
    def log(self, *args, **kwargs):
 
389
    def log(self, format, *args):
404
390
        """Capture Server log output."""
405
 
        self.logs.append(args[3])
 
391
        self.logs.append(format % args)
406
392
 
407
393
    def setUp(self):
408
394
        """See bzrlib.transport.Server.setUp."""