2
0

Add test for release after acquire

This commit is contained in:
Jan Dubsky
2022-09-29 22:53:23 +02:00
committed by Jack Christensen
parent 4fbc609092
commit 58f94f0470
+21 -1
View File
@@ -1170,7 +1170,6 @@ func BenchmarkPoolAcquireAndRelease(b *testing.B) {
})
}
}
func benchmarkPool[T any](t testing.TB) *puddle.Pool[T] {
cfg := puddle.Config[T]{
MaxSize: 1,
@@ -1206,6 +1205,27 @@ func releaser[T any](t testing.TB) chan<- *puddle.Resource[T] {
return workChan
}
func TestReleaseAfterAcquire(t *testing.T) {
const cnt = 100000
r := require.New(t)
ctx := context.Background()
pool := benchmarkPool[int32](t)
releaseChan := releaser[int32](t)
res, err := pool.Acquire(ctx)
r.NoError(err)
// We need to release the last connection. Otherwise the pool.Close()
// method will block and this function will never return.
defer func() { res.Release() }()
for i := 0; i < cnt; i++ {
releaseChan <- res
res, err = pool.Acquire(ctx)
r.NoError(err)
}
}
func BenchmarkAcquire_ReleaseAfterAcquire(b *testing.B) {
r := require.New(b)
ctx := context.Background()