class ThreadedLocalServer(Thread): def __init__(self, port, host='localhost'): super(ThreadedLocalServer, self).__init__() self._app_object = None self._config = None self._host = host self._port = port self._server = None self._server_ready = Event() def wait_for_server_ready(self): self._server_ready.wait() def configure(self, app_object, config): self._app_object = app_object self._config = config def run(self): self._server = LocalDevServer( self._app_object, self._config, self._host, self._port) self._server_ready.set() self._server.serve_forever() def make_call(self, method, path, port, timeout=0.5): self._server_ready.wait() return method('http://{host}:{port}{path}'.format( path=path, host=self._host, port=port), timeout=timeout) def shutdown(self): if self._server is not None: self._server.server.shutdown()
def run(self): self._server = LocalDevServer( self._app_object, self._config, self._host, self._port, ) self._server_ready.set() self._server.serve_forever()
def test_can_delegate_to_server(self, sample_app): http_server = mock.Mock(spec=HTTPServer) dev_server = LocalDevServer( sample_app, Config(), '0.0.0.0', 8000, server_cls=lambda *args: http_server, ) dev_server.handle_single_request() http_server.handle_request.assert_called_with() dev_server.serve_forever() http_server.serve_forever.assert_called_with()
def __init__(self): super().__init__() self._app_object = self self._config = Config() self._host = options['host'] self._port = options['port'] self._server = LocalDevServer(command.app, self._config, self._host, self._port)
class ThreadedLocalServer(Thread): def __init__(self, *, port=None, host='localhost'): super().__init__() self._app_object = None self._config = None self._host = host self._port = port or self.unused_tcp_port() self._server = None self._server_ready = Event() def configure(self, app_object, config=None, **kwargs): self._app_object = app_object self._config = config def run(self): self._server = LocalDevServer( self._app_object, self._config, self._host, self._port, ) self._server_ready.set() self._server.serve_forever() def serve_forever(self): self._server.serve_forever() def shutdown(self): if self._server is not None: self._server.server.shutdown() def make_call(self, method, path, timeout=0.5, **kwarg): self._server_ready.wait() return method(f'http://{self._host}:{self._port}{path}', timeout=timeout, **kwarg) @classmethod def unused_tcp_port(cls): with contextlib.closing(socket.socket()) as sock: sock.bind(('localhost', 0)) return sock.getsockname()[1]
def run(self): self._server = LocalDevServer( self._app_object, self._config, self._host, self._port) self._server_ready.set() self._server.serve_forever()
def run_local_server(app_obj): # type: (Chalice) -> None from chalice.local import LocalDevServer server = LocalDevServer(app_obj) server.serve_forever()