This commit is contained in:
Mateusz Gruszczyński committed 2026-10-25 10:15:26 +01:00
1 parent b3dfd570b5
commit a4042d6439
16 files changed
+362 -55

No files matched your search

+74
View File
@@ -409,6 +409,80 @@ mod dashboard_tests {
);
}
#[test]
fn rfc9211_method_bypass_and_stale_hit_do_not_misstate_freshness() {
assert_eq!(cache_status_ttl(1, 2), -1);
assert_eq!(cache_status_ttl(10, 10), 0);
assert_eq!(cache_status_ttl(600, 5), 595);
let settings = Settings {
expose_status: true,
expose_cache_status: true,
..Settings::default()
};
let mut headers = HeaderMap::new();
settings.annotate_reason(&mut headers, "BYPASS", 0, 0, "request_method");
assert_eq!(
headers["cache-status"],
"RustProxy; fwd=method; detail=\"request_method\"",
);
let mut headers = HeaderMap::new();
settings.annotate_reason_transformed_freshness(
&mut headers, "HIT", 3, -7, "cache_max_stale", false,
);
assert_eq!(
headers["cache-status"],
"RustProxy; hit; ttl=-7; detail=\"cache_max_stale\"",
);
let mut headers = HeaderMap::new();
settings.annotate_reason_transformed_freshness(
&mut headers, "HIT", 3, -5, "cache_stale_while_revalidate", false,
);
assert_eq!(
headers["cache-status"],
"RustProxy; hit; ttl=-5; detail=\"cache_stale_while_revalidate\"",
);
}
#[test]
fn rfc9211_forwarded_stale_error_and_forced_validation_report_real_hops() {
let settings = Settings {
expose_status: true,
expose_cache_status: true,
..Settings::default()
};
let mut headers = HeaderMap::new();
headers.append("cache-status", HeaderValue::from_static("OriginCache; hit"));
settings.annotate_reason_transformed_forwarded(
&mut headers, "HIT", 3, 0, "cache_stale_if_error", false,
"stale", Some(StatusCode::SERVICE_UNAVAILABLE),
);
assert_eq!(headers["x-cache"], "HIT");
let values: Vec<_> = headers.get_all("cache-status").iter()
.map(|value| value.to_str().unwrap()).collect();
assert_eq!(values, vec![
"OriginCache; hit",
"RustProxy; fwd=stale; fwd-status=503; detail=\"cache_stale_if_error\"",
]);
let mut headers = HeaderMap::new();
settings.annotate_reason_transformed_forwarded(
&mut headers, "HIT", 2, 42, "cache_revalidated", false,
"request", Some(StatusCode::NOT_MODIFIED),
);
assert_eq!(
headers["cache-status"],
"RustProxy; fwd=request; fwd-status=304; detail=\"cache_revalidated\"",
);
let mut headers = HeaderMap::new();
settings.annotate_reason_transformed_forwarded(
&mut headers, "HIT", 2, 0, "cache_stale_if_error", false,
"stale", None,
);
assert_eq!(
headers["cache-status"],
"RustProxy; fwd=stale; detail=\"cache_stale_if_error\"",
);
}
#[test]
fn cache_domain_metrics_do_not_lock_hot_store_and_preserve_reasons() {
let cache = Cache::new(7);