summaryrefslogtreecommitdiff
path: root/vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go')
-rw-r--r--vendor/github.com/oxtoacart/bpool/sizedbufferpool_test.go50
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)
+ }
+ }
+
+}