示例#1
0
async def test_send_async_event(full_server: Server):
    evtloop = full_server.get_event_loop()
    fut = evtloop.create_future()

    async def test_func(arg):
        fut.set_result(arg)

    full_server.register_event_handler("test:my_test", test_func)
    full_server.send_event("test:my_test", "test")
    result = await fut
    assert result == "test"
async def test_klippy_reconnect(ready_server: Server, klippy: KlippyProcess):
    evtloop = ready_server.get_event_loop()
    futs = [evtloop.create_future() for _ in range(2)]
    events = {
        "server:klippy_disconnect": lambda: futs[0].set_result("disconnect"),
        "server:klippy_ready": lambda: futs[1].set_result("ready")
    }
    for name, func in events.items():
        ready_server.register_event_handler(name, func)
    klippy.restart()
    ret = await asyncio.wait_for(asyncio.gather(*futs), 6.)
    assert ret == ["disconnect", "ready"]
async def test_klippy_shutdown(ready_server: Server, klippy: KlippyProcess):
    evtloop = ready_server.get_event_loop()
    fut = evtloop.create_future()

    def on_shutdown():
        if not fut.done():
            fut.set_result("shutdown")

    ready_server.register_event_handler("server:klippy_shutdown", on_shutdown)
    klippy.send_gcode("M112")
    await asyncio.wait_for(fut, 2.)
    assert fut.result() == "shutdown"
async def test_gcode_response(ready_server: Server, klippy: KlippyProcess):
    evtloop = ready_server.get_event_loop()
    fut = evtloop.create_future()

    def on_gc_resp(resp: str):
        if not fut.done():
            fut.set_result(resp)

    ready_server.register_event_handler("server:gcode_response", on_gc_resp)
    klippy.send_gcode("M118 Moonraker Test")
    await asyncio.wait_for(fut, 1.)
    assert "Moonraker Test" in fut.result()
async def test_klippy_startup(full_server: Server):
    evtloop = full_server.get_event_loop()
    futs = [evtloop.create_future() for _ in range(3)]
    events = {
        "server:klippy_identified": lambda: futs[0].set_result("id"),
        "server:klippy_started": lambda x: futs[1].set_result("started"),
        "server:klippy_ready": lambda: futs[2].set_result("ready")
    }
    for name, func in events.items():
        full_server.register_event_handler(name, func)
    await full_server.start_server()
    ret = await asyncio.wait_for(asyncio.gather(*futs), 4.)
    assert (ret == ["id", "started", "ready"]
            and full_server.klippy_connection.is_connected())
async def test_status_update(ready_server: Server, klippy: KlippyProcess):
    evtloop = ready_server.get_event_loop()
    fut = evtloop.create_future()

    def on_status_update(data):
        if not fut.done():
            fut.set_result(data)

    ready_server.register_event_handler("server:status_update",
                                        on_status_update)
    kapis = ready_server.klippy_connection.klippy_apis
    await kapis.subscribe_objects({"toolhead": None})
    klippy.send_gcode("G28")
    await asyncio.wait_for(fut, 2.)
    assert isinstance(fut.result(), dict)
示例#7
0
def test_register_async_event(base_server: Server):
    async def test_func():
        pass

    base_server.register_event_handler("test:my_test", test_func)
    assert base_server.events["test:my_test"] == [test_func]