Open-Harness-Leaderboard / tests /test_controller_status.py
joelniklaus's picture
joelniklaus HF Staff
deploy: 02401dd8f99074a56436c5fc8487ac227f5c31fe (part 2)
ea2cc30 verified
Raw
History Blame Contribute Delete
12 kB
from datetime import UTC, datetime, timedelta
from pathlib import Path
from types import SimpleNamespace
import pytest
from huggingface_hub import CommitOperationAdd, CommitOperationDelete
from harbor_hf.controller_status import (
ControllerAttemptReservation,
ControllerClaim,
ControllerEndedReceipt,
ControllerLaunchClaim,
ControllerLaunchReceipt,
ControllerLaunchUnavailable,
ControllerOwnershipConflict,
ControllerProjectionCounts,
ControllerRecoveryDecision,
ControllerStartedReceipt,
ControllerStatus,
ControllerStatusError,
HubControllerStateStore,
ProviderCapacityClaim,
ProviderCapacityUnavailable,
provider_capacity_claim_path,
)
NOW = datetime(2026, 7, 30, tzinfo=UTC)
class FakeControllerApi:
def __init__(self, root: Path) -> None:
self.root = root
self.revision = 1
self.files: dict[str, bytes] = {}
self.commits: list[tuple[str, list[str]]] = []
def repo_info(self, repo_id: str, **kwargs: object) -> object:
assert repo_id == "org/harbor-hf-coordination"
return SimpleNamespace(sha=str(self.revision))
def get_paths_info(
self, repo_id: str, paths: str | list[str], **kwargs: object
) -> list[object]:
del repo_id, kwargs
values = [paths] if isinstance(paths, str) else paths
return [SimpleNamespace(path=path) for path in values if path in self.files]
def hf_hub_download(self, repo_id: str, filename: str, **kwargs: object) -> str:
del repo_id, kwargs
path = self.root / str(self.revision) / filename
path.parent.mkdir(parents=True, exist_ok=True)
path.write_bytes(self.files[filename])
return str(path)
def create_commit(
self, repo_id: str, operations: list[object], **kwargs: object
) -> object:
del repo_id
assert kwargs["parent_commit"] == str(self.revision)
changed: list[str] = []
for operation in operations:
if isinstance(operation, CommitOperationAdd):
source = operation.path_or_fileobj
if isinstance(source, bytes):
content = source
elif isinstance(source, (str, Path)):
content = Path(source).read_bytes()
else:
content = source.read()
self.files[operation.path_in_repo] = content
changed.append(operation.path_in_repo)
elif isinstance(operation, CommitOperationDelete):
self.files.pop(operation.path_in_repo, None)
changed.append(operation.path_in_repo)
else:
raise AssertionError("unexpected operation")
self.revision += 1
self.commits.append((str(kwargs["commit_message"]), changed))
return SimpleNamespace(oid=str(self.revision))
def _claim(job_id: str = "job-one", attempt: int = 1) -> ControllerClaim:
return ControllerClaim(
run_id="run-one",
job_id=job_id,
plan_digest="sha256:" + "1" * 64,
attempt=attempt,
acquired_at=NOW,
heartbeat_at=NOW,
expires_at=NOW + timedelta(minutes=10),
)
def _status(claim: ControllerClaim, heartbeat: datetime = NOW) -> ControllerStatus:
return ControllerStatus(
run_id=claim.run_id,
plan_digest=claim.plan_digest,
job_id=claim.job_id,
attempt=claim.attempt,
state="running",
heartbeat_at=heartbeat,
lease_expires_at=heartbeat + timedelta(minutes=10),
physical_deadline=NOW + timedelta(hours=1),
remaining_seconds=3_600,
projection=ControllerProjectionCounts(
logical_trials=690,
terminal_trials=2,
active_trials=1,
physical_attempts=3,
),
)
def test_controller_claim_is_exclusive_renewable_and_reversible(tmp_path: Path) -> None:
api = FakeControllerApi(tmp_path)
store = HubControllerStateStore("org", "token", api=api)
first = _claim()
store.acquire(first, prior_job_terminal=False)
assert store.read_claim(first.run_id) == first
with pytest.raises(ControllerOwnershipConflict):
store.acquire(_claim("job-two"), prior_job_terminal=False)
renewed = first.model_copy(
update={
"heartbeat_at": NOW + timedelta(minutes=1),
"expires_at": NOW + timedelta(minutes=11),
}
)
store.heartbeat(first, renewed)
assert store.read_claim(first.run_id) == renewed
store.release(renewed)
assert store.read_claim(first.run_id) is None
def test_expired_claim_still_requires_terminal_job_proof(tmp_path: Path) -> None:
store = HubControllerStateStore("org", "token", api=FakeControllerApi(tmp_path))
first = _claim().model_copy(update={"expires_at": NOW + timedelta(seconds=1)})
store.acquire(first, prior_job_terminal=False)
replacement = ControllerClaim(
run_id=first.run_id,
job_id="job-two",
plan_digest=first.plan_digest,
attempt=2,
acquired_at=NOW + timedelta(minutes=1),
heartbeat_at=NOW + timedelta(minutes=1),
expires_at=NOW + timedelta(minutes=11),
)
with pytest.raises(ControllerOwnershipConflict):
store.acquire(replacement, prior_job_terminal=False)
store.acquire(replacement, prior_job_terminal=True)
assert store.read_claim(first.run_id) == replacement
def test_controller_launch_is_serialized_and_has_an_immutable_receipt(
tmp_path: Path,
) -> None:
store = HubControllerStateStore("org", "token", api=FakeControllerApi(tmp_path))
first = ControllerLaunchClaim(
run_id="run-one",
plan_digest="sha256:" + "1" * 64,
attempt=1,
launcher_id="launcher-one",
acquired_at=NOW,
expires_at=NOW + timedelta(minutes=30),
)
competing = first.model_copy(
update={
"launcher_id": "launcher-two",
"acquired_at": NOW + timedelta(minutes=1),
"expires_at": NOW + timedelta(minutes=31),
}
)
store.acquire_launch(first)
with pytest.raises(ControllerLaunchUnavailable, match="in progress"):
store.acquire_launch(competing)
assert store.read_launch_claim(first.run_id, first.attempt) == first
takeover = competing.model_copy(
update={
"acquired_at": NOW + timedelta(minutes=31),
"expires_at": NOW + timedelta(minutes=61),
}
)
store.acquire_launch(takeover)
receipt = ControllerLaunchReceipt(
run_id=first.run_id,
plan_digest=first.plan_digest,
input_digest="sha256:" + "2" * 64,
attempt=1,
job_id="a" * 24,
)
store.write_launch(receipt)
store.write_launch(receipt)
assert store.read_launch(first.run_id, 1) == receipt
with pytest.raises(ControllerStatusError, match="immutable"):
store.write_launch(receipt.model_copy(update={"job_id": "b" * 24}))
store.release_launch(takeover)
assert store.read_launch_claim(first.run_id, 1) is None
def test_provider_capacity_is_exclusive_and_released_exactly(tmp_path: Path) -> None:
store = HubControllerStateStore("org", "token", api=FakeControllerApi(tmp_path))
first = ProviderCapacityClaim(
provider="hf-inference-providers",
run_id="run-one",
plan_digest="sha256:" + "1" * 64,
job_id="job-one",
attempt=1,
action_id="act-one",
acquired_at=NOW,
)
competing = first.model_copy(update={"run_id": "run-two", "job_id": "job-two"})
store.acquire_provider_capacity(first)
store.acquire_provider_capacity(first)
assert store.read_provider_capacity(first.provider) == first
with pytest.raises(ProviderCapacityUnavailable, match="occupied"):
store.acquire_provider_capacity(competing)
with pytest.raises(ControllerStatusError, match="ownership"):
store.release_provider_capacity(competing)
store.release_provider_capacity(first)
assert store.read_provider_capacity(first.provider) is None
assert provider_capacity_claim_path(first.provider).startswith(
"claims/provider-capacity/"
)
def test_replacement_recovers_only_its_terminal_predecessor_provider_claim(
tmp_path: Path,
) -> None:
store = HubControllerStateStore("org", "token", api=FakeControllerApi(tmp_path))
capacity = ProviderCapacityClaim(
provider="hf-inference-providers",
run_id="run-one",
plan_digest="sha256:" + "1" * 64,
job_id="job-one",
attempt=1,
action_id="act-one",
acquired_at=NOW,
)
replacement = _claim("job-two", attempt=2).model_copy(
update={
"acquired_at": NOW + timedelta(minutes=1),
"heartbeat_at": NOW + timedelta(minutes=1),
"expires_at": NOW + timedelta(minutes=11),
}
)
store.acquire_provider_capacity(capacity)
with pytest.raises(ControllerStatusError, match="cannot be recovered safely"):
store.recover_provider_capacity(
capacity.provider, replacement, prior_job_terminal=False
)
store.recover_provider_capacity(
capacity.provider, replacement, prior_job_terminal=True
)
assert store.read_provider_capacity(capacity.provider) is None
def test_controller_status_and_receipts_reject_backward_or_conflicting_writes(
tmp_path: Path,
) -> None:
api = FakeControllerApi(tmp_path)
store = HubControllerStateStore("org", "token", api=api)
claim = _claim()
status = _status(claim)
store.write_status(status)
store.write_status(status)
assert store.read_status(claim.run_id) == status
with pytest.raises(ControllerStatusError, match="moved backwards"):
store.write_status(_status(claim, NOW - timedelta(seconds=1)))
started = ControllerStartedReceipt(
run_id=claim.run_id,
plan_digest=claim.plan_digest,
input_digest="sha256:" + "2" * 64,
worker_revision="3" * 40,
job_id=claim.job_id,
attempt=1,
started_at=NOW,
)
ended = ControllerEndedReceipt(
run_id=claim.run_id,
plan_digest=claim.plan_digest,
job_id=claim.job_id,
attempt=1,
state="completed",
ended_at=NOW + timedelta(minutes=2),
)
store.write_started(started)
store.write_ended(ended)
store.write_started(started)
conflict = started.model_copy(update={"input_digest": "sha256:" + "4" * 64})
with pytest.raises(ControllerStatusError, match="immutable"):
store.write_started(conflict)
def test_controller_attempt_reservations_are_sequential_and_immutable(
tmp_path: Path,
) -> None:
store = HubControllerStateStore("org", "token", api=FakeControllerApi(tmp_path))
first = ControllerAttemptReservation(
run_id="run-one",
plan_digest="sha256:" + "1" * 64,
input_digest="sha256:" + "2" * 64,
input_uri="hf://buckets/org/input/path",
output_uri="hf://buckets/org/output",
worker_revision="3" * 40,
attempt=1,
reserved_at=NOW,
)
store.reserve_attempt(first)
assert store.read_attempt(first.run_id, 1) == first
third = first.model_copy(update={"attempt": 3})
with pytest.raises(ControllerStatusError, match="predecessor"):
store.reserve_attempt(third)
second = first.model_copy(
update={"attempt": 2, "reserved_at": NOW + timedelta(minutes=1)}
)
store.reserve_attempt(second)
assert store.read_attempt(first.run_id, 2) == second
recovery = ControllerRecoveryDecision(
run_id=first.run_id,
plan_digest=first.plan_digest,
prior_job_id="job-one",
prior_attempt=1,
replacement_attempt=2,
checkpoint_revision="commit-one",
category="lost",
decided_at=second.reserved_at,
)
store.write_recovery(recovery)
assert store.read_recovery(first.run_id, 2) == recovery