mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 13:16:28 +00:00
test(app): distinguish usage overlay from quota floor (#6479)
test(app): preserve delete quota floor assertion
This commit is contained in:
@@ -66,7 +66,7 @@ use super::storage_api::object_usecase::contract::namespace::NamespaceLocking;
|
||||
use super::storage_api::object_usecase::contract::object::{ObjectIO as _, ObjectOperations as _};
|
||||
use super::storage_api::object_usecase::contract::range::HTTPRangeSpec;
|
||||
use super::storage_api::object_usecase::data_usage::{
|
||||
quota_object_size, record_bucket_delete_marker_memory, record_bucket_object_delete_memory,
|
||||
apply_bucket_usage_memory_overlay, quota_object_size, record_bucket_delete_marker_memory, record_bucket_object_delete_memory,
|
||||
record_bucket_object_version_write_memory, record_bucket_object_write_memory,
|
||||
record_bucket_object_write_unknown_previous_memory,
|
||||
};
|
||||
@@ -18074,9 +18074,15 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
#[serial_test::serial]
|
||||
async fn compressed_delete_requests_restore_usage_baseline() {
|
||||
async fn compressed_delete_requests_update_observed_usage_without_releasing_quota_floor() {
|
||||
use crate::app::storage_api::test::contract::bucket::{BucketOperations as _, DeleteBucketOptions, MakeBucketOptions};
|
||||
|
||||
async fn observed_bucket_usage(bucket: &str) -> Option<u64> {
|
||||
let mut usage = rustfs_data_usage::DataUsageInfo::default();
|
||||
apply_bucket_usage_memory_overlay(&mut usage).await;
|
||||
usage.buckets_usage.get(bucket).map(|value| value.size)
|
||||
}
|
||||
|
||||
let store = crate::app::gating_test_env::shared_gating_ecstore().await;
|
||||
if current_app_context().is_none() {
|
||||
crate::app::runtime_sources::install_test_app_context(Arc::clone(&store)).await;
|
||||
@@ -18132,10 +18138,15 @@ mod tests {
|
||||
.await
|
||||
.expect("single compressed delete should succeed");
|
||||
assert_eq!(
|
||||
crate::app::storage_api::test::data_usage::get_bucket_usage_memory(&bucket).await,
|
||||
observed_bucket_usage(&bucket).await,
|
||||
Some(1_000),
|
||||
"single delete must subtract the logical accounting size"
|
||||
);
|
||||
assert_eq!(
|
||||
crate::app::storage_api::test::data_usage::get_bucket_usage_memory(&bucket).await,
|
||||
Some(2_000),
|
||||
"quota must retain the pre-delete floor until scanner reconciliation"
|
||||
);
|
||||
|
||||
let mut batch_req = build_request(
|
||||
DeleteObjectsInput::builder()
|
||||
@@ -18161,10 +18172,15 @@ mod tests {
|
||||
.await
|
||||
.expect("batch compressed delete should succeed");
|
||||
assert_eq!(
|
||||
crate::app::storage_api::test::data_usage::get_bucket_usage_memory(&bucket).await,
|
||||
observed_bucket_usage(&bucket).await,
|
||||
Some(0),
|
||||
"batch delete must subtract the committed logical accounting size"
|
||||
);
|
||||
assert_eq!(
|
||||
crate::app::storage_api::test::data_usage::get_bucket_usage_memory(&bucket).await,
|
||||
Some(2_000),
|
||||
"quota must retain both pending deletes until scanner reconciliation"
|
||||
);
|
||||
|
||||
store
|
||||
.delete_bucket(
|
||||
|
||||
Reference in New Issue
Block a user