in core/server/src/streaming/utils/memory_pool.rs [557:638]
fn test_multiple_resize_operations() {
initialize_pool_for_tests();
let pool = memory_pool();
let initial_resize_events = pool.resize_events();
let mut buffer = PooledBuffer::with_capacity(BUCKET_SIZES[1]); // 8KiB
let original_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
let original_bucket_in_use = pool.bucket_current_elements(original_bucket_idx);
let first_resize_size = BUCKET_SIZES[4]; // 64KiB
buffer.put_slice(&vec![0u8; first_resize_size]);
assert!(
buffer.capacity() >= first_resize_size,
"Buffer should increase capacity after first resize"
);
assert_eq!(
pool.resize_events(),
initial_resize_events + 1,
"One resize event should be recorded"
);
let mid_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
assert!(
mid_bucket_idx > original_bucket_idx,
"Buffer should move to a larger bucket after first resize"
);
let mid_bucket_in_use = pool.bucket_current_elements(mid_bucket_idx);
assert_eq!(
pool.bucket_current_elements(original_bucket_idx),
original_bucket_in_use - 1,
"Original bucket count should decrease after first resize"
);
let second_resize_size = BUCKET_SIZES[9]; // 1MiB
buffer.put_slice(&vec![0u8; second_resize_size]);
assert!(
buffer.capacity() >= second_resize_size,
"Buffer should increase capacity after second resize"
);
assert_eq!(
pool.resize_events(),
initial_resize_events + 2,
"Two resize events should be recorded"
);
let final_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
assert!(
final_bucket_idx > mid_bucket_idx,
"Buffer should move to an even larger bucket after second resize"
);
let final_bucket_in_use = pool.bucket_current_elements(final_bucket_idx);
assert_eq!(
pool.bucket_current_elements(mid_bucket_idx),
mid_bucket_in_use - 1,
"Mid bucket count should decrease after second resize"
);
drop(buffer);
assert_eq!(
pool.bucket_current_elements(original_bucket_idx),
original_bucket_in_use - 1,
"Original bucket should remain decreased"
);
assert_eq!(
pool.bucket_current_elements(mid_bucket_idx),
mid_bucket_in_use - 1,
"Mid bucket should remain decreased"
);
assert_eq!(
pool.bucket_current_elements(final_bucket_idx),
final_bucket_in_use - 1,
"Final bucket count should decrease after drop"
);
}