From 193624e522bc9f456e81d7ff7bc7ba6283d3cac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?373=5B=C3=98=5D=E2=84=A2?= <151577046+ccclxxiii@users.noreply.github.com> Date: Sun, 22 Feb 2026 15:58:21 +0000 Subject: [PATCH] fix(benchmark): add rate-limit refill cooldown for send_10_receive_10 and avoid fixture signature mismatch --- cmdeploy/src/cmdeploy/tests/online/benchmark.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/cmdeploy/src/cmdeploy/tests/online/benchmark.py b/cmdeploy/src/cmdeploy/tests/online/benchmark.py index 01de017b..eca7751c 100644 --- a/cmdeploy/src/cmdeploy/tests/online/benchmark.py +++ b/cmdeploy/src/cmdeploy/tests/online/benchmark.py @@ -1,3 +1,4 @@ +import time def test_tls_imap(benchmark, imap): def imap_connect(): imap.connect() @@ -47,7 +48,7 @@ class TestDC: benchmark(dc_ping_pong, 5) - def test_send_10_receive_10(self, benchmark, cmfactory, lp): + def test_send_10_receive_10(self, request, cmfactory, chatmail_config, lp): ac1, ac2 = cmfactory.get_online_accounts(2) chat = cmfactory.get_accepted_chat(ac1, ac2) @@ -57,4 +58,16 @@ class TestDC: for i in range(10): ac2._evtracker.wait_next_incoming_message() - benchmark(dc_send_10_receive_10, 5) + per_minute = max(chatmail_config.max_user_send_per_minute, 1) + cooldown = chatmail_config.max_user_send_burst_size * 60 / per_minute + durations = [] + num = 5 + for i in range(num): + now = time.time() + dc_send_10_receive_10() + durations.append(time.time() - now) + if i + 1 < num: + # Keep post-run cooldown out of measured benchmark duration. + time.sleep(cooldown) + durations.sort() + request.config._benchresults["dc_send_10_receive_10"] = (None, durations)