diff options
Diffstat (limited to 'vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go')
-rw-r--r-- | vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go b/vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go new file mode 100644 index 0000000..6e574b3 --- /dev/null +++ b/vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go @@ -0,0 +1,50 @@ +package bpool + +import ( + "bytes" + "testing" +) + +// TestSizedBufferPool checks that over-sized buffers are released and that new +// buffers are created in their place. +func TestSizedBufferPool(t *testing.T) { + + var size int = 4 + var capacity int = 1024 + + bufPool := NewSizedBufferPool(size, capacity) + + b := bufPool.Get() + + // Check the cap before we use the buffer. + if cap(b.Bytes()) != capacity { + t.Fatalf("buffer capacity incorrect: got %v want %v", cap(b.Bytes()), + capacity) + } + + // Grow the buffer beyond our capacity and return it to the pool + b.Grow(capacity * 3) + bufPool.Put(b) + + // Add some additional buffers to fill up the pool. + for i := 0; i < size; i++ { + bufPool.Put(bytes.NewBuffer(make([]byte, 0, bufPool.a*2))) + } + + // Check that oversized buffers are being replaced. + if len(bufPool.c) < size { + t.Fatalf("buffer pool too small: got %v want %v", len(bufPool.c), size) + } + + // Close the channel so we can iterate over it. + close(bufPool.c) + + // Check that there are buffers of the correct capacity in the pool. + for buffer := range bufPool.c { + if cap(buffer.Bytes()) != bufPool.a { + t.Fatalf("returned buffers wrong capacity: got %v want %v", + cap(buffer.Bytes()), capacity) + } + } + +} |