test(ilm): cover manual transition worker failure summary (#5272)

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-07-26 14:45:06 +08:00
committed by GitHub
parent 556f8ed62f
commit a047bbfcfb
@@ -4571,9 +4571,10 @@ mod tests {
};
use crate::bucket::lifecycle::manual_transition_job::{
ManualTransitionJobRecord, ManualTransitionJobState, ManualTransitionScopeAdmission, ManualTransitionScopeAdmissionClaim,
claim_manual_transition_scope_admission, legacy_manual_transition_scope_key, load_manual_transition_job_record,
load_manual_transition_scope_admission, renew_manual_transition_job_lease, request_manual_transition_job_cancel,
save_manual_transition_job_record, save_manual_transition_scope_admission_if_absent,
ManualTransitionWorkerResult, claim_manual_transition_scope_admission, legacy_manual_transition_scope_key,
load_manual_transition_job_record, load_manual_transition_scope_admission, renew_manual_transition_job_lease,
request_manual_transition_job_cancel, save_manual_transition_job_record,
save_manual_transition_scope_admission_if_absent,
};
use crate::bucket::lifecycle::replication_sink::{
ReplicateDecision, ReplicateTargetDecision, ReplicationStatusType, VersionPurgeStatusType,
@@ -7326,6 +7327,36 @@ mod tests {
assert!(!report.has_partial_enqueue());
}
#[test]
fn manual_transition_complete_preserves_worker_failure_summary() {
let options = ManualTransitionRunOptions::default();
let mut record = ManualTransitionJobRecord::new(Uuid::new_v4(), "manual-worker-summary-bucket", &options, "owner-a");
record.record_worker_result(ManualTransitionWorkerResult::Completed, ManualTransitionQueueSnapshot::default());
record.record_worker_result(ManualTransitionWorkerResult::TierFailure, ManualTransitionQueueSnapshot::default());
record.complete(
ManualTransitionRunReport {
bucket: "manual-worker-summary-bucket".to_string(),
scanned: 3,
eligible: 2,
enqueued: 2,
tier_failure: 1,
..Default::default()
},
ManualTransitionQueueSnapshot::default(),
);
assert_eq!(record.state, ManualTransitionJobState::Partial);
assert!(record.scan_completed);
assert_eq!(record.report.scanned, 3);
assert_eq!(record.report.eligible, 2);
assert_eq!(record.report.enqueued, 2);
assert_eq!(record.report.transition_completed, 1);
assert_eq!(record.report.transition_failed, 1);
assert_eq!(record.report.tier_failure, 2);
assert!(record.completed_at_unix_nanos.is_some());
}
#[tokio::test]
async fn manual_transition_counts_already_transitioned_object() {
let lc = latest_transition_lifecycle();