refactor: some minor cleanup
This commit is contained in:
parent
6dd26ad3d8
commit
0a71012709
15 changed files with 188 additions and 91 deletions
|
|
@ -3,6 +3,7 @@ import json
|
|||
|
||||
import server
|
||||
from providers.base import Provider, ProviderTokens
|
||||
from utils.env import parse_int_env
|
||||
|
||||
|
||||
class FakeRequest:
|
||||
|
|
@ -25,9 +26,17 @@ class FakeProvider(Provider):
|
|||
"secondary_window": None,
|
||||
}
|
||||
self._rotate = rotate
|
||||
self._prepare_threshold = 80
|
||||
self.get_token_calls = 0
|
||||
self.standby_calls = 0
|
||||
|
||||
@property
|
||||
def prepare_threshold(self) -> int:
|
||||
return self._prepare_threshold
|
||||
|
||||
def should_prepare_standby(self, usage_percent: int) -> bool:
|
||||
return usage_percent >= self.prepare_threshold
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return "fake"
|
||||
|
|
@ -54,9 +63,10 @@ class FakeProvider(Provider):
|
|||
return self._rotate
|
||||
|
||||
async def ensure_standby_account(
|
||||
self, usage_percent: int, prepare_threshold: int
|
||||
self,
|
||||
usage_percent: int,
|
||||
) -> None:
|
||||
_ = usage_percent, prepare_threshold
|
||||
_ = usage_percent
|
||||
self.standby_calls += 1
|
||||
|
||||
|
||||
|
|
@ -66,17 +76,17 @@ def _response_json(resp) -> dict:
|
|||
|
||||
def test_parse_int_env_defaults(monkeypatch):
|
||||
monkeypatch.delenv("X_TEST", raising=False)
|
||||
assert server._parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
assert parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
|
||||
|
||||
def test_parse_int_env_invalid(monkeypatch):
|
||||
monkeypatch.setenv("X_TEST", "abc")
|
||||
assert server._parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
assert parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
|
||||
|
||||
def test_parse_int_env_out_of_range(monkeypatch):
|
||||
monkeypatch.setenv("X_TEST", "999")
|
||||
assert server._parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
assert parse_int_env("X_TEST", 10, 1, 20) == 10
|
||||
|
||||
|
||||
def test_build_limit_fields():
|
||||
|
|
@ -90,7 +100,10 @@ def test_build_limit_fields():
|
|||
|
||||
|
||||
def test_get_prepare_threshold():
|
||||
assert server.get_prepare_threshold("chatgpt") == server.CHATGPT_PREPARE_THRESHOLD
|
||||
assert (
|
||||
server.get_prepare_threshold("chatgpt")
|
||||
== server.PROVIDERS["chatgpt"].prepare_threshold
|
||||
)
|
||||
assert server.get_prepare_threshold("unknown") == 100
|
||||
|
||||
|
||||
|
|
@ -100,12 +113,16 @@ def test_token_handler_unknown_provider(monkeypatch):
|
|||
assert resp.status == 404
|
||||
|
||||
|
||||
def test_health_handler_ok():
|
||||
resp = asyncio.run(server.health_handler(object()))
|
||||
assert resp.status == 200
|
||||
assert resp.text == "ok"
|
||||
|
||||
|
||||
def test_token_handler_success(monkeypatch):
|
||||
provider = FakeProvider()
|
||||
monkeypatch.setattr(server, "PROVIDERS", {"fake": provider})
|
||||
monkeypatch.setattr(server, "background_tasks", {"fake": None})
|
||||
monkeypatch.setattr(server, "get_prepare_threshold", lambda _: 80)
|
||||
|
||||
resp = asyncio.run(server.token_handler(FakeRequest("fake")))
|
||||
data = _response_json(resp)
|
||||
|
||||
|
|
@ -124,10 +141,9 @@ def test_token_handler_triggers_standby(monkeypatch):
|
|||
def fake_trigger(name, usage_percent, reason):
|
||||
assert name == "fake"
|
||||
assert usage_percent == 90
|
||||
assert "threshold" in reason
|
||||
assert "standby policy" in reason
|
||||
called["value"] = True
|
||||
|
||||
monkeypatch.setattr(server, "get_prepare_threshold", lambda _: 80)
|
||||
monkeypatch.setattr(server, "trigger_standby_prepare", fake_trigger)
|
||||
|
||||
resp = asyncio.run(server.token_handler(FakeRequest("fake")))
|
||||
|
|
@ -142,7 +158,6 @@ def test_token_handler_rotation_path(monkeypatch):
|
|||
)
|
||||
monkeypatch.setattr(server, "PROVIDERS", {"fake": provider})
|
||||
monkeypatch.setattr(server, "background_tasks", {"fake": None})
|
||||
monkeypatch.setattr(server, "get_prepare_threshold", lambda _: 80)
|
||||
monkeypatch.setattr(server, "trigger_standby_prepare", lambda *_: None)
|
||||
|
||||
resp = asyncio.run(server.token_handler(FakeRequest("fake")))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue