diff --git a/pool.go b/pool.go index 1a3fb30..f8afb35 100644 --- a/pool.go +++ b/pool.go @@ -388,6 +388,7 @@ func (p *Pool) CreateResource(ctx context.Context) error { creationTime: time.Now(), status: resourceStatusIdle, value: value, + lastUsedNano: nanotime(), } p.cond.L.Lock() diff --git a/pool_test.go b/pool_test.go index 1e2fe32..69c3646 100644 --- a/pool_test.go +++ b/pool_test.go @@ -255,21 +255,18 @@ func TestPoolCreateResource(t *testing.T) { err = pool.CreateResource(context.Background()) require.NoError(t, err) - allIdle := pool.AcquireAllIdle() - assert.Equal(t, counter.Value(), allIdle[0].Value()) - allIdle[0].ReleaseUnused() - stats := pool.Stat() assert.EqualValues(t, 1, stats.IdleResources()) res, err := pool.Acquire(context.Background()) require.NoError(t, err) + assert.Equal(t, counter.Value(), res.Value()) + assert.True(t, res.LastUsedNanotime() > 0, "should set LastUsedNanotime so that idle calculations can still work") assert.Equal(t, 1, res.Value()) assert.WithinDuration(t, time.Now(), res.CreationTime(), time.Second) res.Release() - stats = pool.Stat() - assert.EqualValues(t, 0, stats.EmptyAcquireCount()) + assert.EqualValues(t, 0, pool.Stat().EmptyAcquireCount(), "should have been a warm resource") } func TestPoolCreateResourceReturnsErrorFromFailedResourceCreate(t *testing.T) {