in core/server/src/streaming/utils/memory_pool.rs [642:732]
fn test_different_resize_methods() {
initialize_pool_for_tests();
let pool = memory_pool();
// Test put_slice
{
let initial_events = pool.resize_events();
let mut buffer = PooledBuffer::with_capacity(4 * 1024);
let orig_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
let orig_in_use = pool.bucket_current_elements(orig_bucket_idx);
buffer.put_slice(&vec![0u8; 64 * 1024]);
assert_eq!(
pool.resize_events(),
initial_events + 1,
"put_slice should trigger resize event"
);
assert_eq!(
pool.bucket_current_elements(orig_bucket_idx),
orig_in_use - 1,
"put_slice should update bucket accounting"
);
}
// Test put_bytes
{
let initial_events = pool.resize_events();
let mut buffer = PooledBuffer::with_capacity(4 * 1024);
let orig_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
let orig_in_use = pool.bucket_current_elements(orig_bucket_idx);
buffer.put_bytes(0, 64 * 1024); // 64KiB of zeros
assert_eq!(
pool.resize_events(),
initial_events + 1,
"put_bytes should trigger resize event"
);
assert_eq!(
pool.bucket_current_elements(orig_bucket_idx),
orig_in_use - 1,
"put_bytes should update bucket accounting"
);
}
// Test extend_from_slice
{
let initial_events = pool.resize_events();
let mut buffer = PooledBuffer::with_capacity(4 * 1024);
let orig_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
let orig_in_use = pool.bucket_current_elements(orig_bucket_idx);
buffer.extend_from_slice(&vec![0u8; 64 * 1024]);
assert_eq!(
pool.resize_events(),
initial_events + 1,
"extend_from_slice should trigger resize event"
);
assert_eq!(
pool.bucket_current_elements(orig_bucket_idx),
orig_in_use - 1,
"extend_from_slice should update bucket accounting"
);
}
// Test reserve
{
let initial_events = pool.resize_events();
let mut buffer = PooledBuffer::with_capacity(4 * 1024);
let orig_bucket_idx = pool.best_fit(buffer.capacity()).unwrap();
let orig_in_use = pool.bucket_current_elements(orig_bucket_idx);
buffer.reserve(64 * 1024);
if buffer.capacity() > 4 * 1024 {
assert_eq!(
pool.resize_events(),
initial_events + 1,
"reserve should trigger resize event when capacity changes"
);
assert_eq!(
pool.bucket_current_elements(orig_bucket_idx),
orig_in_use - 1,
"reserve should update bucket accounting when capacity changes"
);
}
}
}