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)
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]