use std::time::{Duration, Instant};
use mailrs_outbound_queue::dsn::format_dsn;
use mailrs_outbound_queue::mta_sts::mx_matches_policy;
use mailrs_outbound_queue::queue::is_hard_bounce;
use mailrs_outbound_queue::retry::{retry_delay_secs, should_bounce};
const ITERS: usize = 100;
fn time_median<F: FnMut()>(mut op: F) -> Duration {
let mut samples = Vec::with_capacity(ITERS);
for _ in 0..ITERS {
let start = Instant::now();
op();
samples.push(start.elapsed());
}
samples.sort();
samples[ITERS / 2]
}
#[test]
fn retry_delay_full_sequence_under_budget() {
let median = time_median(|| {
for attempt in 0..10 {
let _ = retry_delay_secs(attempt);
}
});
let budget = Duration::from_micros(10);
assert!(
median < budget,
"retry_delay_secs(0..10) median {median:?} exceeded {budget:?}"
);
}
#[test]
fn should_bounce_full_sequence_under_budget() {
let median = time_median(|| {
for attempt in 0..10 {
let _ = should_bounce(attempt, 5);
}
});
let budget = Duration::from_micros(10);
assert!(
median < budget,
"should_bounce(0..10, 5) median {median:?} exceeded {budget:?}"
);
}
#[test]
fn mx_matches_policy_exact_x100_under_budget() {
let policy: [&str; 1] = ["mail.example.com"];
let median = time_median(|| {
for _ in 0..100 {
let _ = mx_matches_policy("mail.example.com", &policy);
}
});
let budget = Duration::from_micros(300);
assert!(
median < budget,
"mx_matches_policy (exact x100) median {median:?} exceeded {budget:?}"
);
}
#[test]
fn mx_matches_policy_wildcard_against_five_patterns_under_budget() {
let policy: [&str; 5] = [
"primary.mx.example.com",
"secondary.mx.example.com",
"tertiary.mx.example.com",
"*.mx.example.com",
"*.mail.protection.example.net",
];
let median = time_median(|| {
let _ = mx_matches_policy("mx1.mx.example.com", &policy);
});
let budget = Duration::from_micros(30);
assert!(
median < budget,
"mx_matches_policy (wildcard x5) median {median:?} exceeded {budget:?}"
);
}
#[test]
fn is_hard_bounce_x100_under_budget() {
let median = time_median(|| {
for _ in 0..100 {
let _ = is_hard_bounce("550 5.1.1 <bob@example.com> user unknown");
}
});
let budget = Duration::from_micros(200);
assert!(
median < budget,
"is_hard_bounce x100 median {median:?} exceeded {budget:?}"
);
}
#[test]
fn format_dsn_under_budget() {
let median = time_median(|| {
let _ = format_dsn(
"mx.example.com",
"alice@example.com",
"bob@remote.example.org",
"550 5.1.1 <bob@remote.example.org> user unknown",
Some("original-msg-abc@example.com"),
);
});
let budget = Duration::from_micros(400);
assert!(
median < budget,
"format_dsn median {median:?} exceeded {budget:?}"
);
}