From 23f4683f2028315d29436288408b1c7c409fd4df Mon Sep 17 00:00:00 2001 From: houseme Date: Sun, 26 Jul 2026 15:21:37 +0800 Subject: [PATCH] test(ilm): cover queue terminal partial reports (#5277) Cover manual transition terminal job records for queue closed and queue send timeout outcomes so backpressure summaries remain partial with the expected counters and queue snapshots. Co-authored-by: heihutu --- .../bucket/lifecycle/bucket_lifecycle_ops.rs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs b/crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs index f5ae07fc8..9bb98f9a3 100644 --- a/crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs +++ b/crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs @@ -7391,6 +7391,53 @@ mod tests { assert!(report.has_partial_enqueue()); } + #[test] + fn manual_transition_job_record_closed_and_timeout_reports_are_partial() { + let options = ManualTransitionRunOptions::default(); + + for (bucket, outcome, skipped_queue_closed, skipped_queue_timeout, queue_snapshot) in [ + ( + "manual-queue-closed-bucket", + TransitionEnqueueOutcome::QueueClosed, + 1, + 0, + ManualTransitionQueueSnapshot { + queue_capacity: 1, + workers: 1, + ..Default::default() + }, + ), + ( + "manual-queue-timeout-bucket", + TransitionEnqueueOutcome::QueueSendTimedOut, + 0, + 1, + ManualTransitionQueueSnapshot { + queue_capacity: 1, + workers: 1, + queue_send_timeout: 1, + ..Default::default() + }, + ), + ] { + let mut report = ManualTransitionRunReport::new(bucket, &options); + report.record_enqueue_outcome(outcome); + assert!(report.has_partial_enqueue()); + + let mut record = ManualTransitionJobRecord::new(Uuid::new_v4(), bucket, &options, "owner"); + record.complete(report, queue_snapshot); + + assert_eq!(record.state, ManualTransitionJobState::Partial); + assert_eq!(record.report.enqueued, 0); + assert_eq!(record.report.skipped_queue_full, 0); + assert_eq!(record.report.skipped_queue_closed, skipped_queue_closed); + assert_eq!(record.report.skipped_queue_timeout, skipped_queue_timeout); + assert_eq!(record.queue_snapshot.queue_send_timeout, queue_snapshot.queue_send_timeout); + assert!(record.completed_at_unix_nanos.is_some()); + assert!(record.error.is_none()); + } + } + #[test] fn manual_transition_version_marker_preserves_null_version_cursor() { let null_version = ObjectInfo {