Files
MajoorWaldi-ComfyUI-Majoor-…/tests/config/test_rate_limit_knobs.py
T
Wiley Walarus 6054b71c00 feat(config): make delete and asset-write rate limits configurable
Add MJR_AM_DELETE_RATE_LIMIT (default 20) and MJR_AM_ASSET_WRITE_RATE_LIMIT
(default 30) env knobs, clamped to 1..10000 per 60 s window, and wire the
single-asset delete route and the shared rating/tags request preparation to
use them instead of hard-coded literals. Defaults are unchanged.
2026-11-03 21:10:18 -08:00

68 lines
2.1 KiB
Python

"""
Tests for the configurable write rate-limit knobs in mjr_am_backend.config.
Covers the I/O matrix for MJR_AM_DELETE_RATE_LIMIT and
MJR_AM_ASSET_WRITE_RATE_LIMIT (defaults, valid values, invalid values,
clamping).
"""
import importlib
import os
import pytest
_KNOB_VARS = ("MJR_AM_DELETE_RATE_LIMIT", "MJR_AM_ASSET_WRITE_RATE_LIMIT")
@pytest.fixture
def reloadable_config():
"""Yield the config module and restore env + module state afterwards."""
import mjr_am_backend.config as cfg
saved = {name: os.environ.get(name) for name in _KNOB_VARS}
yield cfg
for name, value in saved.items():
if value is None:
os.environ.pop(name, None)
else:
os.environ[name] = value
importlib.reload(cfg)
def _reloaded(cfg):
return importlib.reload(cfg)
def test_knobs_default_when_unset(reloadable_config, monkeypatch):
for name in _KNOB_VARS:
monkeypatch.delenv(name, raising=False)
cfg = _reloaded(reloadable_config)
assert cfg.DELETE_RATE_LIMIT_PER_MIN == 20
assert cfg.ASSET_WRITE_RATE_LIMIT_PER_MIN == 30
def test_knobs_accept_valid_values(reloadable_config, monkeypatch):
monkeypatch.setenv("MJR_AM_DELETE_RATE_LIMIT", "600")
monkeypatch.setenv("MJR_AM_ASSET_WRITE_RATE_LIMIT", "600")
cfg = _reloaded(reloadable_config)
assert cfg.DELETE_RATE_LIMIT_PER_MIN == 600
assert cfg.ASSET_WRITE_RATE_LIMIT_PER_MIN == 600
def test_delete_knob_falls_back_to_default_on_non_integer(reloadable_config, monkeypatch):
monkeypatch.setenv("MJR_AM_DELETE_RATE_LIMIT", "abc")
cfg = _reloaded(reloadable_config)
assert cfg.DELETE_RATE_LIMIT_PER_MIN == 20
def test_asset_write_knob_clamps_below_range(reloadable_config, monkeypatch):
monkeypatch.setenv("MJR_AM_ASSET_WRITE_RATE_LIMIT", "0")
cfg = _reloaded(reloadable_config)
assert cfg.ASSET_WRITE_RATE_LIMIT_PER_MIN == 1
def test_delete_knob_clamps_above_range(reloadable_config, monkeypatch):
monkeypatch.setenv("MJR_AM_DELETE_RATE_LIMIT", "999999")
cfg = _reloaded(reloadable_config)
assert cfg.DELETE_RATE_LIMIT_PER_MIN == 10000