huskies: merge 852
This commit is contained in:
@@ -87,6 +87,47 @@ async fn stale_running_merge_job_is_cleared_and_retry_succeeds() {
|
||||
);
|
||||
}
|
||||
|
||||
// ── story 852: periodic background reaper ────────────────────────────────
|
||||
|
||||
/// AC2: a Running merge_job whose `server_start` is older than the current
|
||||
/// server's boot time must be deleted by `reap_stale_merge_jobs` without any
|
||||
/// merge attempt being triggered.
|
||||
#[tokio::test]
|
||||
async fn reap_stale_merge_jobs_removes_old_running_entry_without_merge() {
|
||||
crate::crdt_state::init_for_test();
|
||||
|
||||
let pool = Arc::new(AgentPool::new_test(3001));
|
||||
|
||||
// Inject a Running entry whose server_start predates the current server.
|
||||
crate::crdt_state::write_merge_job(
|
||||
"852_stale_reaper",
|
||||
"running",
|
||||
1.0,
|
||||
None,
|
||||
Some(&super::time::encode_server_start_time(0.0)), // older boot → stale
|
||||
);
|
||||
assert!(
|
||||
crate::crdt_state::read_merge_job("852_stale_reaper").is_some(),
|
||||
"stale entry must exist before reap"
|
||||
);
|
||||
|
||||
// Reap: must remove the entry without triggering a merge pipeline.
|
||||
pool.reap_stale_merge_jobs();
|
||||
|
||||
assert!(
|
||||
crate::crdt_state::read_merge_job("852_stale_reaper").is_none(),
|
||||
"reap_stale_merge_jobs must delete the stale Running entry"
|
||||
);
|
||||
|
||||
// No agents must have been spawned (no merge was triggered).
|
||||
let agents = pool.agents.lock().unwrap();
|
||||
assert!(
|
||||
agents.is_empty(),
|
||||
"reap must not spawn any agents; got {} agent(s)",
|
||||
agents.len()
|
||||
);
|
||||
}
|
||||
|
||||
// ── story 719: stale-lock recovery on new merge attempts ─────────────────
|
||||
|
||||
/// AC1/AC2/AC3: seeding merge_jobs with an entry whose PID is dead, then
|
||||
|
||||
Reference in New Issue
Block a user