Fix training agent heartbeat status

This commit is contained in:
Codex
2026-06-27 11:02:41 +03:00
parent b6d616ec2a
commit 83bffadc0a
5 changed files with 96 additions and 13 deletions
+18
View File
@@ -2,6 +2,7 @@ from __future__ import annotations
import base64
import hashlib
import json
from crypto_spot_bot.training_coordination import TrainingCoordinator
@@ -68,3 +69,20 @@ def test_training_coordinator_accepts_chunked_artifact_upload(tmp_path) -> None:
assert part_2["complete"] is True
assert (tmp_path / "lstm_forecaster.json").read_bytes() == payload
assert coordinator.status()["latest_job"]["artifacts"][0]["sha256"] == sha256
def test_running_claimed_job_keeps_agent_online_when_heartbeat_is_stale(tmp_path) -> None:
coordinator = TrainingCoordinator(tmp_path)
coordinator.request_retrain({"source": "android"})
coordinator.claim({"worker_id": "win-1", "name": "DESKTOP-TMFDL0H"})
state_path = tmp_path / "training_coordination.json"
state = json.loads(state_path.read_text(encoding="utf-8"))
state["worker"]["last_seen_at"] = "2026-01-01T00:00:00+00:00"
state_path.write_text(json.dumps(state), encoding="utf-8")
status = coordinator.status()
assert status["agent_recently_seen"] is False
assert status["agent_busy"] is True
assert status["agent_online"] is True