Exemplo n.º 1
0
import asyncio

from yawf import App, BaseHandler

app = App(name="test")


@app.route("/echo")
class Echo(BaseHandler):
    @asyncio.coroutine
    def handle(self, *args, **kwargs):
        app.logger.debug("recieved a websocket connection")
        while self.websocket.open:
            app.logger.debug("websocket.open {}".format(self.websocket.open))
            app.logger.debug("waiting for value from client")
            value = yield from self.websocket.recv()
            if value is None:
                break
            app.logger.debug("recieved `{}` from client".format(value))
            yield from self.websocket.send(value)
            app.logger.debug("sent value back to client")
        app.logger.debug("closing the websocket now.")


app.run("localhost", 8765, debug=True)
Exemplo n.º 2
0
def test_run_app_debug(evloop, mock_loop):
    app = App(name="testapp")
    app.run("localhost", 8765, debug=True, loop=mock_loop)
    assert app.logger.level == 10  # debug
    assert app.debug is True
Exemplo n.º 3
0
def test_run_app(evloop, mock_loop):
    app = App(name="testapp")
    app.run("localhost", 8765, loop=mock_loop)
    assert mock_loop.run_until_complete.called
    assert mock_loop.run_forever.called
    assert mock_loop.close.called
Exemplo n.º 4
0
class Chatroom(BaseHandler):
    recv_schema = ChatroomSchema
    send_schema = ChatroomSchema

    @asyncio.coroutine
    def handle(self, ws, *args, **kwargs):
        app.logger.debug("recieved a websocket connection")
        while ws.open:
            value = yield from self.recv_json(ws)
            if value is None:
                self.remove_websocket(ws)
                break
            app.logger.debug("recieved `{}` from client".format(value))
            app.logger.debug("distributing message to {}"
                                " clients".format(len(self.websockets)))
            yield from self.distribute_message(value)
        app.logger.debug("closing the websocket now.")

    @asyncio.coroutine
    def distribute_message(self, message):
        websockets = list(self.websockets)
        for ws in websockets:
            if ws.open:
                app.logger.debug("sending message to {}".format(ws))
                yield from self.send_json(ws, message)
            else:
                app.logger.debug("websocket was closed, removing client")
                self.remove_websocket(ws)

app.run("localhost", 8765, debug=True)
Exemplo n.º 5
0
def test_run_app_debug(evloop, mock_loop):
    app = App(name="testapp")
    app.run("localhost", 8765, debug=True, loop=mock_loop)
    assert app.logger.level == 10  # debug
    assert app.debug is True
Exemplo n.º 6
0
def test_run_app(evloop, mock_loop):
    app = App(name="testapp")
    app.run("localhost", 8765, loop=mock_loop)
    assert mock_loop.run_until_complete.called
    assert mock_loop.run_forever.called
    assert mock_loop.close.called