47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""Tests for the unified durable Campaign startup recovery seam."""
|
|
|
|
from agenteval.evaluation import campaign_lifecycle
|
|
|
|
|
|
def test_recovery_coordinator_orders_cleanup_before_relaunch(db_session, monkeypatch):
|
|
calls: list[str] = []
|
|
|
|
class FakeRuns:
|
|
def __init__(self, _session):
|
|
pass
|
|
|
|
def mark_orphans_failed(self):
|
|
calls.append("runs")
|
|
return 2
|
|
|
|
class FakeAnalysis:
|
|
def __init__(self, _session):
|
|
pass
|
|
|
|
def mark_orphans_failed(self):
|
|
calls.append("analysis")
|
|
return 1
|
|
|
|
class FakeComparison(FakeAnalysis):
|
|
def mark_orphans_failed(self):
|
|
calls.append("comparison")
|
|
return 1
|
|
|
|
monkeypatch.setattr(campaign_lifecycle, "RunRepository", FakeRuns)
|
|
monkeypatch.setattr(campaign_lifecycle, "CampaignAnalysisRepository", FakeAnalysis)
|
|
monkeypatch.setattr(campaign_lifecycle, "CampaignPeriodComparisonRepository", FakeComparison)
|
|
|
|
import agenteval.evaluation.analysis as analysis
|
|
import agenteval.evaluation.campaign_runner as runner
|
|
|
|
monkeypatch.setattr(analysis, "resume_queued_campaign_analysis", lambda _session: calls.append("queued") or 3)
|
|
monkeypatch.setattr(runner, "resume_running_campaigns", lambda _session, **_: calls.append("campaigns") or 4)
|
|
|
|
summary = campaign_lifecycle.recover_campaign_runtime(db_session)
|
|
|
|
assert calls == ["runs", "analysis", "comparison", "campaigns", "queued"]
|
|
assert summary.interrupted_runs == 2
|
|
assert summary.interrupted_analysis == 2
|
|
assert summary.resumed_campaigns == 4
|
|
assert summary.resumed_analysis == 3
|