From 009dd93788b7c5de18b35b6ce6060da18f21f7a7 Mon Sep 17 00:00:00 2001 From: houseme Date: Sun, 26 Jul 2026 21:15:25 +0800 Subject: [PATCH] test(ilm): cover restart unknown readback (#5298) Co-authored-by: heihutu --- .../bucket/lifecycle/manual_transition_job.rs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/crates/ecstore/src/bucket/lifecycle/manual_transition_job.rs b/crates/ecstore/src/bucket/lifecycle/manual_transition_job.rs index b45d55e1a..870a7f63a 100644 --- a/crates/ecstore/src/bucket/lifecycle/manual_transition_job.rs +++ b/crates/ecstore/src/bucket/lifecycle/manual_transition_job.rs @@ -1919,6 +1919,26 @@ mod tests { ); } + #[test] + fn manual_transition_job_record_persists_restart_unknown_state() { + let options = ManualTransitionRunOptions::default(); + let mut record = ManualTransitionJobRecord::new(Uuid::new_v4(), "bucket", &options, TEST_OWNER); + record.mark_unknown_if_unowned(); + + let encoded = record.encode().expect("unknown restart job should encode"); + let decoded = ManualTransitionJobRecord::decode(record.job_id, &encoded).expect("unknown restart job should decode"); + + assert_eq!(decoded.state, ManualTransitionJobState::Unknown); + assert!(decoded.is_terminal()); + assert!(decoded.completed_at_unix_nanos.is_some()); + assert!( + decoded + .error + .as_deref() + .is_some_and(|error| error.contains("unknown after restart")) + ); + } + #[test] fn manual_transition_job_record_failure_counts_tier_failure() { let options = ManualTransitionRunOptions::default();