| Index: tools/telemetry/third_party/gsutilz/third_party/httplib2/python2/httplib2/test/miniserver.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/httplib2/python2/httplib2/test/miniserver.py b/tools/telemetry/third_party/gsutilz/third_party/httplib2/python2/httplib2/test/miniserver.py
|
| deleted file mode 100644
|
| index e32bf5e5f9bf59763623408baae5ef634c88d51b..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/httplib2/python2/httplib2/test/miniserver.py
|
| +++ /dev/null
|
| @@ -1,100 +0,0 @@
|
| -import logging
|
| -import os
|
| -import select
|
| -import SimpleHTTPServer
|
| -import SocketServer
|
| -import threading
|
| -
|
| -HERE = os.path.dirname(__file__)
|
| -logger = logging.getLogger(__name__)
|
| -
|
| -
|
| -class ThisDirHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
| - def translate_path(self, path):
|
| - path = path.split('?', 1)[0].split('#', 1)[0]
|
| - return os.path.join(HERE, *filter(None, path.split('/')))
|
| -
|
| - def log_message(self, s, *args):
|
| - # output via logging so nose can catch it
|
| - logger.info(s, *args)
|
| -
|
| -
|
| -class ShutdownServer(SocketServer.TCPServer):
|
| - """Mixin that allows serve_forever to be shut down.
|
| -
|
| - The methods in this mixin are backported from SocketServer.py in the Python
|
| - 2.6.4 standard library. The mixin is unnecessary in 2.6 and later, when
|
| - BaseServer supports the shutdown method directly.
|
| - """
|
| -
|
| - def __init__(self, *args, **kwargs):
|
| - SocketServer.TCPServer.__init__(self, *args, **kwargs)
|
| - self.__is_shut_down = threading.Event()
|
| - self.__serving = False
|
| -
|
| - def serve_forever(self, poll_interval=0.1):
|
| - """Handle one request at a time until shutdown.
|
| -
|
| - Polls for shutdown every poll_interval seconds. Ignores
|
| - self.timeout. If you need to do periodic tasks, do them in
|
| - another thread.
|
| - """
|
| - self.__serving = True
|
| - self.__is_shut_down.clear()
|
| - while self.__serving:
|
| - r, w, e = select.select([self.socket], [], [], poll_interval)
|
| - if r:
|
| - self._handle_request_noblock()
|
| - self.__is_shut_down.set()
|
| -
|
| - def shutdown(self):
|
| - """Stops the serve_forever loop.
|
| -
|
| - Blocks until the loop has finished. This must be called while
|
| - serve_forever() is running in another thread, or it will deadlock.
|
| - """
|
| - self.__serving = False
|
| - self.__is_shut_down.wait()
|
| -
|
| - def handle_request(self):
|
| - """Handle one request, possibly blocking.
|
| -
|
| - Respects self.timeout.
|
| - """
|
| - # Support people who used socket.settimeout() to escape
|
| - # handle_request before self.timeout was available.
|
| - timeout = self.socket.gettimeout()
|
| - if timeout is None:
|
| - timeout = self.timeout
|
| - elif self.timeout is not None:
|
| - timeout = min(timeout, self.timeout)
|
| - fd_sets = select.select([self], [], [], timeout)
|
| - if not fd_sets[0]:
|
| - self.handle_timeout()
|
| - return
|
| - self._handle_request_noblock()
|
| -
|
| - def _handle_request_noblock(self):
|
| - """Handle one request, without blocking.
|
| -
|
| - I assume that select.select has returned that the socket is
|
| - readable before this function was called, so there should be
|
| - no risk of blocking in get_request().
|
| - """
|
| - try:
|
| - request, client_address = self.get_request()
|
| - except socket.error:
|
| - return
|
| - 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 start_server(handler):
|
| - httpd = ShutdownServer(("", 0), handler)
|
| - threading.Thread(target=httpd.serve_forever).start()
|
| - _, port = httpd.socket.getsockname()
|
| - return httpd, port
|
|
|