From 168197a072045b0d5688da5f222785125987d107 Mon Sep 17 00:00:00 2001 From: calvin Date: Mon, 22 Nov 2004 22:34:03 +0000 Subject: [PATCH] make http request handler customizable git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@2033 e7d03fd6-7b0d-0410-9947-9c21f3af8025 --- linkcheck/ftests/httptest.py | 59 ++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/linkcheck/ftests/httptest.py b/linkcheck/ftests/httptest.py index 15228e99..cefe811f 100644 --- a/linkcheck/ftests/httptest.py +++ b/linkcheck/ftests/httptest.py @@ -24,32 +24,6 @@ import time import linkcheck.ftests -class HttpServerTest (linkcheck.ftests.StandardTest): - """start/stop an HTTP server that can be used for testing""" - - def __init__ (self, methodName='runTest'): - """init test class and store default http server port""" - super(HttpServerTest, self).__init__(methodName=methodName) - self.port = 8001 - - def start_server (self): - """start a new HTTP server in a new thread""" - try: - import threading - except ImportError: - self.fail("This test needs threading support") - t = threading.Thread(None, start_server, None, (self.port,)) - t.start() - # wait for server to start up - time.sleep(3) - - def stop_server (self): - """send QUIT request to http server""" - conn = httplib.HTTPConnection("localhost:%d"%self.port) - conn.request("QUIT", "/") - conn.getresponse() - - class StoppableHttpRequestHandler (SimpleHTTPServer.SimpleHTTPRequestHandler, object): """http request handler with QUIT stopping the server""" @@ -94,11 +68,36 @@ class NoQueryHttpRequestHandler (StoppableHttpRequestHandler): super(NoQueryHttpRequestHandler, self).do_HEAD() -def start_server (port): +class HttpServerTest (linkcheck.ftests.StandardTest): + """start/stop an HTTP server that can be used for testing""" + + def __init__ (self, methodName='runTest'): + """init test class and store default http server port""" + super(HttpServerTest, self).__init__(methodName=methodName) + self.port = 8001 + + def start_server (self, handler=NoQueryHttpRequestHandler): + """start a new HTTP server in a new thread""" + try: + import threading + except ImportError: + self.fail("This test needs threading support") + t = threading.Thread(None, start_server, None, (self.port, handler)) + t.start() + # wait for server to start up + time.sleep(3) + + def stop_server (self): + """send QUIT request to http server""" + conn = httplib.HTTPConnection("localhost:%d"%self.port) + conn.request("QUIT", "/") + conn.getresponse() + + +def start_server (port, handler): """start an HTTP server on given port""" - HandlerClass = NoQueryHttpRequestHandler ServerClass = StoppableHttpServer server_address = ('', port) - HandlerClass.protocol_version = "HTTP/1.0" - httpd = ServerClass(server_address, HandlerClass) + handler.protocol_version = "HTTP/1.0" + httpd = ServerClass(server_address, handler) httpd.serve_forever()