chore: tighten scheduling review coverage
This commit is contained in:
@@ -22,7 +22,6 @@ from tests.scheduling.controlled import (
|
||||
)
|
||||
from wf_artifacts.runs.store import FileRunStore
|
||||
from wf_scheduling.calendar import OneShotSource
|
||||
from wf_scheduling.dispatch import StillRunning
|
||||
from wf_scheduling.models import Schedule
|
||||
from wf_scheduling.ownership import SchedulerOwnership, SecondOwnerError
|
||||
from wf_scheduling.poll import Scheduler
|
||||
@@ -80,13 +79,13 @@ def test_unrelated_held_lock_rejected_before_writes(tmp_path: Path) -> None:
|
||||
|
||||
def spy(admission: Any, now: datetime) -> Any:
|
||||
calls.append(admission.id)
|
||||
return StillRunning()
|
||||
raise AssertionError("dispatcher must not run without covering ownership")
|
||||
|
||||
sched_store = FileScheduleStore(tmp_path / "sched")
|
||||
run_store = FileRunStore(tmp_path / "runs")
|
||||
ownership = SchedulerOwnership(tmp_path / "other", owner="unrelated").acquire()
|
||||
try:
|
||||
sched = _scheduler(sched_store, run_store, ownership)
|
||||
sched = _scheduler(sched_store, run_store, ownership, script={"*": spy})
|
||||
intended = ts(2026, 9, 8, 12, 0)
|
||||
_due(sched, sched_store, intended)
|
||||
with pytest.raises(SecondOwnerError):
|
||||
@@ -103,9 +102,12 @@ def test_two_lock_dirs_cannot_operate_same_stores(tmp_path: Path) -> None:
|
||||
sched_store = FileScheduleStore(tmp_path / "sched")
|
||||
run_store = FileRunStore(tmp_path / "runs")
|
||||
intended = ts(2026, 9, 8, 12, 0)
|
||||
covering = SchedulerOwnership(tmp_path, owner="covering").acquire()
|
||||
other = SchedulerOwnership(tmp_path / "other", owner="other").acquire()
|
||||
covering: SchedulerOwnership | None = None
|
||||
other: SchedulerOwnership | None = None
|
||||
try:
|
||||
covering = SchedulerOwnership(tmp_path, owner="covering").acquire()
|
||||
other = SchedulerOwnership(tmp_path / "other", owner="other").acquire()
|
||||
assert covering is not None and other is not None
|
||||
first = _scheduler(sched_store, run_store, covering, script={"*": "hang"})
|
||||
_due(first, sched_store, intended)
|
||||
assert first.poll(intended)["a"].startswith("admit:run-")
|
||||
@@ -117,8 +119,10 @@ def test_two_lock_dirs_cannot_operate_same_stores(tmp_path: Path) -> None:
|
||||
second.poll(intended + timedelta(minutes=1))
|
||||
assert len(run_store.list_runs()) == 1
|
||||
finally:
|
||||
covering.release()
|
||||
other.release()
|
||||
if covering is not None:
|
||||
covering.release()
|
||||
if other is not None:
|
||||
other.release()
|
||||
|
||||
|
||||
def test_recover_with_unrelated_lock_rejected(tmp_path: Path) -> None:
|
||||
|
||||
Reference in New Issue
Block a user