mirror of
https://github.com/restic/restic.git
synced 2025-12-08 06:09:56 +00:00
archiver: add buffer test
This commit is contained in:
parent
3f92987974
commit
d8dcd6d115
1 changed files with 41 additions and 0 deletions
41
internal/archiver/buffer_test.go
Normal file
41
internal/archiver/buffer_test.go
Normal file
|
|
@ -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")
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue