fix(ecstore): use capacity info override for decommission race test
The assert_real_activation_start_race test used set_decommission_space_info_override_for_test which creates capacity infos via from_logical with take semantics (consumed on first access). After the decommission capacity reservation model was introduced in PR #6917, the capacity check reads actual physical disk space when the override has already been consumed, causing the test to fail with real disk values (~11TB required vs ~2TB available on a local Mac). Switch to set_decommission_capacity_info_overrides_for_test which uses a VecDeque (supports multiple snapshots for repeated access) and provides properly formed DecommissionPoolCapacityInfo values with matching erasure layout.
This commit is contained in:
@@ -1329,8 +1329,9 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::config::com::delete_config;
|
||||
use crate::core::pools::{
|
||||
POOL_META_NAME, PoolActivationDurableSaveBarrier, PoolActivationStartKind, PoolActivationStartProbe, PoolMetaWriteState,
|
||||
persist_pool_meta_identity_for_startup,
|
||||
DecommissionErasureLayout, DecommissionPoolCapacityInfo, POOL_META_NAME, PoolActivationDurableSaveBarrier,
|
||||
PoolActivationStartKind, PoolActivationStartProbe, PoolMetaWriteState, persist_pool_meta_identity_for_startup,
|
||||
set_decommission_capacity_info_overrides_for_test,
|
||||
};
|
||||
use crate::object_api::NamespaceLockFence;
|
||||
use crate::set_disk::{PutObjectCommitBarrier, PutObjectCommitPause, hermetic_set_disks_isolated};
|
||||
@@ -1751,25 +1752,18 @@ mod tests {
|
||||
];
|
||||
set_rebalance_disk_stats_override_for_test(rebalance_store.id, disk_stats.clone());
|
||||
set_rebalance_disk_stats_override_for_test(decommission_store.id, disk_stats);
|
||||
crate::core::pools::set_decommission_space_info_override_for_test(
|
||||
let capacity_layout = DecommissionErasureLayout { data: 4, parity: 4 };
|
||||
set_decommission_capacity_info_overrides_for_test(
|
||||
decommission_store.id,
|
||||
vec![
|
||||
(
|
||||
0,
|
||||
crate::core::pools::PoolSpaceInfo {
|
||||
free: 0,
|
||||
total: 100,
|
||||
used: 100,
|
||||
},
|
||||
),
|
||||
(
|
||||
1,
|
||||
crate::core::pools::PoolSpaceInfo {
|
||||
free: 200,
|
||||
total: 200,
|
||||
used: 0,
|
||||
},
|
||||
),
|
||||
vec![
|
||||
DecommissionPoolCapacityInfo::for_test(0, capacity_layout, 0, 100, 100),
|
||||
DecommissionPoolCapacityInfo::for_test(1, capacity_layout, 200, 200, 0),
|
||||
],
|
||||
vec![
|
||||
DecommissionPoolCapacityInfo::for_test(0, capacity_layout, 0, 100, 100),
|
||||
DecommissionPoolCapacityInfo::for_test(1, capacity_layout, 200, 200, 0),
|
||||
],
|
||||
],
|
||||
);
|
||||
let (first_object, competing_object, competing_kind) = match paused_kind {
|
||||
|
||||
Reference in New Issue
Block a user