v0.34.0_p1
This commit is contained in:
1 parent
00f29f92c8
commit
0a8bc6f040
21 files changed
+672
-144
No files matched your search
Vendored
+45
@@ -89,6 +89,51 @@ async fn selective_purge_removes_matching_cold_object() {
|
||||
shutdown.cancel();
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn aged_transformed_css_remains_fresh_when_demoted_to_cold() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
let settings = cold_settings();
|
||||
let shutdown = CancellationToken::new();
|
||||
let cache = Cache::start(11, Some(dir.path().to_path_buf()), settings.clone(), shutdown.clone());
|
||||
let ticket = cache.ticket_scoped(
|
||||
11, "cold-test", "http", "cold.example", "origin@127.0.0.1:8080",
|
||||
"/aged-theme.css", &HeaderMap::new(),
|
||||
).unwrap();
|
||||
let body = b"body { color: red; margin: 0px; }";
|
||||
let mut origin = Response::new(Body::from(Bytes::from_static(body)));
|
||||
origin.headers_mut().insert("cache-control", HeaderValue::from_static("public, max-age=2592000"));
|
||||
origin.headers_mut().insert("age", HeaderValue::from_static("1553483"));
|
||||
origin.headers_mut().insert("date", httpdate::fmt_http_date(SystemTime::now()).parse().unwrap());
|
||||
origin.headers_mut().insert("content-type", HeaderValue::from_static("text/css"));
|
||||
origin.headers_mut().insert("content-length", HeaderValue::from_str(&body.len().to_string()).unwrap());
|
||||
origin.headers_mut().insert("etag", HeaderValue::from_static("\"origin\""));
|
||||
let origin_plan = plan(StatusCode::OK, origin.headers(), &settings, Duration::ZERO).unwrap();
|
||||
let transformed = crate::transform::apply(origin, "/aged-theme.css",
|
||||
&crate::transform::Settings { enabled: true, css: true, ..Default::default() }, false
|
||||
).await.unwrap();
|
||||
let transformed_plan = plan(StatusCode::OK, transformed.headers(), &settings, Duration::ZERO).unwrap();
|
||||
cache.wrap(transformed, ticket.clone(), origin_plan.restrict(transformed_plan), &settings)
|
||||
.into_body().collect().await.unwrap();
|
||||
assert_eq!(cache.view().entries, 1);
|
||||
let _another = fill(&cache, &settings, "/another", "another-payload").await;
|
||||
wait_for_cold(&cache, 1).await;
|
||||
let row = cache.dashboard(Some("cold-test"), 0, 20).objects
|
||||
.into_iter().find(|v| v.path == "/aged-theme.css").unwrap();
|
||||
assert_eq!(row.tier, "cold");
|
||||
assert!(row.transformed);
|
||||
assert!(row.remaining_ttl_seconds >= 86_000);
|
||||
shutdown.cancel();
|
||||
drop(cache);
|
||||
let shutdown = CancellationToken::new();
|
||||
let cache = Cache::start(11, Some(dir.path().to_path_buf()), settings.clone(), shutdown.clone());
|
||||
let hit = cache.get_tiered(&ticket, &settings).await.expect("aged transformed COLD should HIT after restart");
|
||||
assert!(hit.transformed);
|
||||
assert!(hit.remaining_ttl >= 86_000);
|
||||
let transformed_body = hit.response.into_body().collect().await.unwrap().to_bytes();
|
||||
assert_ne!(transformed_body.as_ref(), &body[..]);
|
||||
shutdown.cancel();
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn lru_demotion_persists_and_survives_restart() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
|
||||
Reference in new issue
Block a user