Add canceled acquire counting
This commit is contained in:
+55
-1
@@ -310,7 +310,7 @@ func TestPoolStatResources(t *testing.T) {
|
||||
close(endWaitChan)
|
||||
}
|
||||
|
||||
func TestPoolStatCounters(t *testing.T) {
|
||||
func TestPoolStatSuccessfulAcquireCounters(t *testing.T) {
|
||||
createFunc, _ := createCreateResourceFunc()
|
||||
pool := puddle.NewPool(createFunc, stubCloseRes, 1)
|
||||
defer pool.Close()
|
||||
@@ -350,6 +350,60 @@ func TestPoolStatCounters(t *testing.T) {
|
||||
assert.Equal(t, int64(2), stat.SlowAcquireCount())
|
||||
}
|
||||
|
||||
func TestPoolStatCanceledAcquireBeforeStart(t *testing.T) {
|
||||
createFunc, _ := createCreateResourceFunc()
|
||||
pool := puddle.NewPool(createFunc, stubCloseRes, 1)
|
||||
defer pool.Close()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
_, err := pool.Acquire(ctx)
|
||||
require.Equal(t, context.Canceled, err)
|
||||
|
||||
stat := pool.Stat()
|
||||
assert.Equal(t, int64(0), stat.AcquireCount())
|
||||
assert.Equal(t, int64(1), stat.CanceledAcquireCount())
|
||||
}
|
||||
|
||||
func TestPoolStatCanceledAcquireDuringCreate(t *testing.T) {
|
||||
createFunc := func(ctx context.Context) (interface{}, error) {
|
||||
<-ctx.Done()
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
|
||||
pool := puddle.NewPool(createFunc, stubCloseRes, 1)
|
||||
defer pool.Close()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
time.AfterFunc(50*time.Millisecond, cancel)
|
||||
_, err := pool.Acquire(ctx)
|
||||
require.Equal(t, context.Canceled, err)
|
||||
|
||||
stat := pool.Stat()
|
||||
assert.Equal(t, int64(0), stat.AcquireCount())
|
||||
assert.Equal(t, int64(1), stat.CanceledAcquireCount())
|
||||
}
|
||||
|
||||
func TestPoolStatCanceledAcquireDuringWait(t *testing.T) {
|
||||
createFunc, _ := createCreateResourceFunc()
|
||||
pool := puddle.NewPool(createFunc, stubCloseRes, 1)
|
||||
defer pool.Close()
|
||||
|
||||
res, err := pool.Acquire(context.Background())
|
||||
require.Nil(t, err)
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
time.AfterFunc(50*time.Millisecond, cancel)
|
||||
_, err = pool.Acquire(ctx)
|
||||
require.Equal(t, context.Canceled, err)
|
||||
|
||||
res.Release()
|
||||
|
||||
stat := pool.Stat()
|
||||
assert.Equal(t, int64(1), stat.AcquireCount())
|
||||
assert.Equal(t, int64(1), stat.CanceledAcquireCount())
|
||||
}
|
||||
|
||||
func TestResourceDestroyRemovesResourceFromPool(t *testing.T) {
|
||||
createFunc, _ := createCreateResourceFunc()
|
||||
var closeCalls Counter
|
||||
|
||||
Reference in New Issue
Block a user