test(e2e): require zero KMS concurrency failures (#6428)

* test(e2e): require zero KMS upload failures

* test(e2e): bind KMS selection to Linux listing

---------

Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
Zhengchao An
2026-08-24 14:13:36 +08:00
committed by GitHub
parent 232190a205
commit a66b568ba0
@@ -393,11 +393,10 @@ async fn test_kms_multipart_upload_interruption() -> Result<(), Box<dyn std::err
Ok(()) Ok(())
} }
/// Test KMS resilience to temporary resource constraints /// Test concurrent KMS encryption requests
#[tokio::test] #[tokio::test]
async fn test_kms_resource_constraints() -> Result<(), Box<dyn std::error::Error + Send + Sync>> { async fn test_kms_concurrent_encryption_requests() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
init_logging(); init_logging();
info!("🧪 Testing KMS behavior under resource constraints");
let mut kms_env = LocalKMSTestEnvironment::new().await?; let mut kms_env = LocalKMSTestEnvironment::new().await?;
let _default_key_id = kms_env.start_rustfs_for_local_kms().await?; let _default_key_id = kms_env.start_rustfs_for_local_kms().await?;
@@ -431,29 +430,27 @@ async fn test_kms_resource_constraints() -> Result<(), Box<dyn std::error::Error
} }
// Wait for all uploads to complete // Wait for all uploads to complete
let mut successful_uploads = 0; let mut failures = Vec::new();
let mut failed_uploads = 0;
for task in upload_tasks { for task in upload_tasks {
let (object_key, result) = task.await.unwrap(); let (object_key, result) = task.await?;
match result { match result {
Ok(_) => { Ok(_) => {
successful_uploads += 1;
info!("✅ Rapid upload {} succeeded", object_key); info!("✅ Rapid upload {} succeeded", object_key);
} }
Err(e) => { Err(e) => {
failed_uploads += 1;
warn!("❌ Rapid upload {} failed: {}", object_key, e); warn!("❌ Rapid upload {} failed: {}", object_key, e);
failures.push(format!("{object_key}: {e}"));
} }
} }
} }
info!("📊 Rapid upload results: {} succeeded, {} failed", successful_uploads, failed_uploads); assert!(
failures.is_empty(),
// We expect most uploads to succeed even under load "all 10 concurrent KMS uploads must succeed; failures: {}",
assert!(successful_uploads >= 7, "Expected at least 7/10 rapid uploads to succeed"); failures.join("; ")
);
kms_env.base_env.delete_test_bucket(TEST_BUCKET).await?; kms_env.base_env.delete_test_bucket(TEST_BUCKET).await?;
info!("✅ Resource constraints test completed successfully");
Ok(()) Ok(())
} }