File size: 1,508 Bytes
31c8075 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import time
from arena.sandbox_lease import SandboxLeaseManager, sandbox_ttl_seconds_from_env
def test_sandbox_lease_closes_resource_after_idle_ttl() -> None:
closed: list[str] = []
expired: list[str] = []
leases = SandboxLeaseManager(ttl_seconds=0.01)
leases.start("lease-1", lambda: closed.append("lease-1"), on_expire=lambda: expired.append("lease-1"))
deadline = time.time() + 1
while time.time() < deadline and not closed:
time.sleep(0.01)
assert closed == ["lease-1"]
assert expired == ["lease-1"]
def test_sandbox_lease_touch_resets_idle_ttl() -> None:
closed: list[str] = []
leases = SandboxLeaseManager(ttl_seconds=0.06)
leases.start("lease-1", lambda: closed.append("lease-1"))
time.sleep(0.03)
assert leases.touch("lease-1") is True
time.sleep(0.04)
assert closed == []
deadline = time.time() + 1
while time.time() < deadline and not closed:
time.sleep(0.01)
assert closed == ["lease-1"]
def test_sandbox_lease_close_is_idempotent() -> None:
closed: list[str] = []
leases = SandboxLeaseManager(ttl_seconds=60)
leases.start("lease-1", lambda: closed.append("lease-1"))
assert leases.close("lease-1") is True
assert leases.close("lease-1") is False
assert closed == ["lease-1"]
def test_sandbox_ttl_env_falls_back_on_invalid_value(monkeypatch) -> None:
monkeypatch.setenv("DEEPAGENT_SANDBOX_TTL_SECONDS", "bad")
assert sandbox_ttl_seconds_from_env() == 30 * 60
|