async def test_serve_non_tcp_listener(nursery):
    listeners = [MemoryListener()]
    server = WebSocketServer(echo_request_handler, listeners)
    await nursery.start(server.run)
    assert len(server.listeners) == 1
    with pytest.raises(RuntimeError):
        server.port
    assert server.listeners[0].startswith('MemoryListener(')
Beispiel #2
0
async def test_wrap_client_stream(nursery):
    listener = MemoryListener()
    server = WebSocketServer(echo_request_handler, [listener])
    await nursery.start(server.run)
    stream = await listener.connect()
    conn = await wrap_client_stream(nursery, stream, HOST, RESOURCE)
    async with conn:
        assert not conn.closed
        await conn.send_message('Hello from client!')
        msg = await conn.get_message()
        assert msg == 'Hello from client!'
        assert conn.local.startswith('StapledStream(')
    assert conn.closed
async def test_serve_multiple_listeners(nursery):
    listener1 = (await trio.open_tcp_listeners(0, host=HOST))[0]
    listener2 = MemoryListener()
    server = WebSocketServer(echo_request_handler, [listener1, listener2])
    await nursery.start(server.run)
    assert len(server.listeners) == 2
    with pytest.raises(RuntimeError):
        # Even though the first listener has a port, this property is only
        # usable if you have exactly one listener.
        server.port
    # The first listener metadata is a ListenPort instance.
    assert server.listeners[0].port != 0
    # The second listener metadata is a string containing the repr() of a
    # MemoryListener object.
    assert server.listeners[1].startswith('MemoryListener(')
Beispiel #4
0
async def main(args):
    ''' Main entry point. '''
    logging.info('Starting websocket server…')
    if args.ssl:
        ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        try:
            ssl_context.load_cert_chain(here / 'fake.server.pem')
        except FileNotFoundError:
            logging.error(
                'Did not find file "fake.server.pem". You need to run'
                ' generate-cert.py')
    else:
        ssl_context = None
    server = WebSocketServer(handler,
                             args.ip,
                             args.port,
                             ssl_context=ssl_context)
    await server.listen()
Beispiel #5
0
async def main():
    ''' Main entry point. '''
    logger.info('Starting websocket server on ws://%s:%d', BIND_IP, BIND_PORT)
    server = WebSocketServer(handler, BIND_IP, BIND_PORT, ssl_context=None)
    await server.listen()
async def test_serve_with_zero_listeners(nursery):
    task = trio.hazmat.current_task()
    with pytest.raises(ValueError):
        server = WebSocketServer(echo_request_handler, [])