Compare commits

...

2 Commits

Author SHA1 Message Date
houseme f6038037a8 test(scanner): bound G14 multi-pool evidence size
Keep the multi-pool evidence runner within the registry object budget while retaining deferred outage-write diagnostics for release-gate validation.

Co-Authored-By: heihutu <heihutu@gmail.com>

Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
2026-09-10 18:01:23 +08:00
houseme f5bfdd55eb test(e2e): record deferred G14 outage writes
Include optional outage-write diagnostics in G14 evidence oracles so deferred multi-pool outage writes bind their down-window refusals and post-rejoin acceptance.

Co-Authored-By: heihutu <heihutu@gmail.com>

Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
2026-09-10 17:38:55 +08:00
2 changed files with 20 additions and 3 deletions
@@ -1336,7 +1336,7 @@ mod tests {
replacement_format,
expected_pool_metadata,
} = select_replacement_drive(&cluster, 1, background_enabled)?;
let default_online_object_count = if !outage_target_manifest_required { 96 } else { 24 };
let default_online_object_count = if !outage_target_manifest_required { 64 } else { 24 };
let online_object_count = std::env::var("RUSTFS_HEAL_CHAOS_OBJECT_COUNT")
.ok()
.and_then(|value| value.parse::<usize>().ok())
@@ -2124,7 +2124,21 @@ mod tests {
evidence_context.run.binary.sha256,
"server build changed during restart"
);
let evidence = serde_json::json!({
let outage_write_diagnostic = (!outage_target_manifest_required).then(|| {
serde_json::json!({
"attempted": true,
"required": false,
"accepted": true,
"attempts": if outage_write_deferred_until_rejoin {
max_outage_write_attempts
} else {
service_unavailable_outage_writes + 1
},
"service_unavailable": service_unavailable_outage_writes,
"deferred_until_rejoin": outage_write_deferred_until_rejoin,
})
});
let mut evidence = serde_json::json!({
"schema": 1, "case": evidence_context.case.id, "evidence": evidence_context.case.evidence,
"run_id": evidence_context.run.run_id, "source_revision": evidence_context.run.source_revision,
"test_build": compiled_test_identity(),
@@ -2147,6 +2161,9 @@ mod tests {
"unclean_shutdown_marker": unclean_shutdown_marker_observed.unwrap_or(false),
"objects": evidence_objects, "node_listings": node_listings,
});
if let Some(outage_write) = outage_write_diagnostic {
evidence["outage_write"] = outage_write;
}
let data = serde_json::to_vec(&evidence)?;
if data.len() > 1024 * 1024 {
return Err("scanner/heal oracle exceeds the 1 MiB artifact budget".into());
+1 -1
View File
@@ -112,7 +112,7 @@ apply_runtime_profile() {
export RUSTFS_HEAL_CHAOS_PARTIAL_TIMEOUT_SECS="${RUSTFS_HEAL_CHAOS_PARTIAL_TIMEOUT_SECS:-180}"
;;
background-ec8-4-multi-pool)
export RUSTFS_HEAL_CHAOS_OBJECT_COUNT="${RUSTFS_HEAL_CHAOS_OBJECT_COUNT:-96}"
export RUSTFS_HEAL_CHAOS_OBJECT_COUNT="${RUSTFS_HEAL_CHAOS_OBJECT_COUNT:-64}"
export RUSTFS_HEAL_CHAOS_OBJECT_SIZE_BYTES="${RUSTFS_HEAL_CHAOS_OBJECT_SIZE_BYTES:-4194304}"
export RUSTFS_HEAL_CHAOS_PARTIAL_TIMEOUT_SECS="${RUSTFS_HEAL_CHAOS_PARTIAL_TIMEOUT_SECS:-240}"
;;