diff --git a/internal/archiver/buffer_test.go b/internal/archiver/buffer_test.go new file mode 100644 index 000000000..d1094a788 --- /dev/null +++ b/internal/archiver/buffer_test.go @@ -0,0 +1,41 @@ +package archiver + +import ( + "testing" +) + +func TestBufferPoolReuse(t *testing.T) { + // Test that buffers are actually reused from the pool + pool := newBufferPool(1024) + + // Get a buffer and modify it + buf1 := pool.Get() + buf1.Data[0] = 0xFF + originalAddr := &buf1.Data[0] + buf1.Release() + + // Get another buffer and check if it's the same underlying slice + buf2 := pool.Get() + if &buf2.Data[0] != originalAddr { + t.Error("buffer was not reused from pool") + } + buf2.Release() +} + +func TestBufferPoolLargeBuffers(t *testing.T) { + // Test that buffers larger than defaultSize are not returned to pool + pool := newBufferPool(1024) + buf := pool.Get() + + // Grow the buffer beyond default size + buf.Data = append(buf.Data, make([]byte, 2048)...) + originalCap := cap(buf.Data) + + buf.Release() + + // Get a new buffer - should not be the same slice + newBuf := pool.Get() + if cap(newBuf.Data) == originalCap { + t.Error("large buffer was incorrectly returned to pool") + } +}