Beispiel #1
0
def make_server(args, application):
    """Create a new http server using settings from the command line

    :param args:
        An :module:`argparse` namespace populated with the arguments from
        :func:`add_arguments`
    :param application:
        The wsgi application to serve
    :returns:
        A verktyg server that can be run by calling the `run_forever` method
    """
    ssl_context = make_ssl_context(args)

    socket = make_socket(args, ssl_context)

    server = verktyg_server.make_server(socket, application)
    return server
Beispiel #2
0
    def test_yield_no_set_headers(self):
        def application(environ, start_response):
            return [b"Who needs headers"]

        socket = make_inet_socket('localhost')
        port = socket.getsockname()[1]

        server = make_server(socket, application)
        thread = Thread(target=server.serve_forever)
        thread.start()

        try:
            conn = HTTPConnection('localhost', port)
            conn.request('GET', '/')

            resp = conn.getresponse()
            self.assertEqual(resp.status, 500)
        finally:
            server.shutdown()
            thread.join()
Beispiel #3
0
    def test_basic(self):
        def application(environ, start_response):
            status = '200 OK'
            headers = [('Content-type', 'text/plain; charset=utf-8')]
            start_response(status, headers)
            return [b"Hello world!"]

        socket = make_inet_socket('localhost')
        port = socket.getsockname()[1]

        server = make_server(socket, application)
        thread = Thread(target=server.serve_forever)
        thread.start()

        try:
            conn = HTTPConnection('localhost', port)
            conn.request('GET', '/')

            resp = conn.getresponse()
            self.assertEqual(resp.read(), b"Hello world!")
        finally:
            server.shutdown()
            thread.join()
Beispiel #4
0
    def __init__(
                self, app, *, threaded=False,
                request_handler=None, ssl_context=None
            ):
        self._app = app
        self._threaded = threaded
        self._request_handler = request_handler
        self._ssl_context = ssl_context

        self._host = 'localhost'

        socket = make_inet_socket(self.host, 0, ssl_context=self._ssl_context)
        self._port = socket.getsockname()[1]

        self._server = make_server(
            socket, self._app,
            threaded=self._threaded,
            request_handler=self._request_handler,
        )

        self._thread = Thread(target=self._server.serve_forever)
        self._thread.start()

        self.closed = False