looking at rate-limiting implementations

This commit is contained in:
V
2026-05-09 13:15:44 +01:00
commit 29656c8d15
10 changed files with 267 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
import pytest
from fixed_window import FixedWindowLimiter
def test_limit_respected():
limiter = FixedWindowLimiter(10, 10)
try:
for i in range(9):
with limiter:
pass
except RuntimeError as e:
assert False, f"Limiter raised an exception -> {e}"
def test_limit_enforced():
limiter = FixedWindowLimiter(10, 10)
with pytest.raises(RuntimeError) as e:
for i in range(11):
with limiter:
pass
assert "Rate exceeded" in str(e.value)
+25
View File
@@ -0,0 +1,25 @@
import pytest
from time import sleep
from token_bucket import TokenBucketLimiter, RateLimitExceeded
def test_limit_respected() -> None:
limiter = TokenBucketLimiter(10, 10)
try:
for i in range(30):
with limiter:
sleep(0.1)
except RateLimitExceeded:
assert False, "Rate limit exceeded!"
def test_limit_exceeded() -> None:
limiter = TokenBucketLimiter(10, 10)
with pytest.raises(RateLimitExceeded) as e:
for i in range(20):
with limiter:
continue
assert "Rate exceeded" in str(e.value)