Mercurial > hg > Lemuriformes
diff lemuriformes/test_server.py @ 15:0d1b8bb1d97b
SQL + data related functionality
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 10 Dec 2017 17:16:52 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lemuriformes/test_server.py Sun Dec 10 17:16:52 2017 -0800 @@ -0,0 +1,41 @@ +""" +mock server for testing purposes +""" + +# see https://realpython.com/blog/python/testing-third-party-apis-with-mock-servers/ + +# TODO: +# - python3 compatability +# - use multiprocessing as threading does not allow hangin thread deletion +from BaseHTTPServer import HTTPServer +from threading import Thread +from .port import get_free_port + + +class MockServer(HTTPServer): + + hostname = 'localhost' + + def __init__(self, handler): + HTTPServer.__init__(self, + (self.hostname, get_free_port()), + handler) + self.thread = None + + def base_url(self): + return 'http://{0}:{1}/'.format(*self.server_address) + + def start_thread(self): + self.thread = Thread(target=self.serve_forever) + self.thread.setDaemon(True) + self.thread.start() + + def stop_thread(self): + raise NotImplementedError('TODO') + + def __enter__(self): + self.start_thread() + return self # or perhaps `self.thread`? + + def __exit__(self, *args): + pass # nothing to do? really?