2
0

Rename Get to Acquire

This commit is contained in:
Jack Christensen
2018-12-25 19:23:50 -06:00
parent 3afe49e88b
commit 4ef5d16aa8
2 changed files with 33 additions and 33 deletions
+8 -8
View File
@@ -71,7 +71,7 @@ func NewPool(createRes CreateFunc, closeRes CloseFunc) *Pool {
}
}
// Close closes all resources in the pool and rejects future Get calls.
// Close closes all resources in the pool and rejects future Acquire calls.
// Unavailable resources will be closes when they are returned to the pool.
func (p *Pool) Close() {
p.cond.L.Lock()
@@ -169,11 +169,11 @@ func (p *Pool) SetMaxResourceCheckouts(n uint64) {
p.cond.L.Unlock()
}
// Get gets a resource from the pool. If no resources are available and the pool
// Acquire gets a resource from the pool. If no resources are available and the pool
// is not at maximum capacity it will create a new resource. If the pool is at
// maximum capacity it will block until a resource is available. ctx can be used
// to cancel the Get.
func (p *Pool) Get(ctx context.Context) (*Resource, error) {
// to cancel the Acquire.
func (p *Pool) Acquire(ctx context.Context) (*Resource, error) {
if doneChan := ctx.Done(); doneChan != nil {
select {
case <-ctx.Done():
@@ -191,7 +191,7 @@ func (p *Pool) Get(ctx context.Context) (*Resource, error) {
// If a resource is available now
if len(p.availableResources) > 0 {
rw := p.lockedAvailableGet()
rw := p.lockedAvailableAcquire()
p.cond.L.Unlock()
return rw, nil
}
@@ -231,7 +231,7 @@ func (p *Pool) Get(ctx context.Context) (*Resource, error) {
p.cond.L.Unlock()
return
}
rw := p.lockedAvailableGet()
rw := p.lockedAvailableAcquire()
p.cond.L.Unlock()
select {
@@ -250,9 +250,9 @@ func (p *Pool) Get(ctx context.Context) (*Resource, error) {
}
}
// lockedAvailableGet gets the top resource from p.availableResources. p.cond.L
// lockedAvailableAcquire gets the top resource from p.availableResources. p.cond.L
// must already be locked. len(p.availableResources) must be > 0.
func (p *Pool) lockedAvailableGet() *Resource {
func (p *Pool) lockedAvailableAcquire() *Resource {
rw := p.availableResources[len(p.availableResources)-1]
p.availableResources = p.availableResources[:len(p.availableResources)-1]
if rw.status != resourceStatusAvailable {
+25 -25
View File
@@ -80,18 +80,18 @@ func waitForRead(ch chan int) bool {
}
}
func TestPoolGetCreatesResourceWhenNoneAvailable(t *testing.T) {
func TestPoolAcquireCreatesResourceWhenNoneAvailable(t *testing.T) {
createFunc, _ := createCreateResourceFunc()
pool := puddle.NewPool(createFunc, stubCloseRes)
defer pool.Close()
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, res.Value())
res.Release()
}
func TestPoolGetDoesNotCreatesResourceWhenItWouldExceedMaxSize(t *testing.T) {
func TestPoolAcquireDoesNotCreatesResourceWhenItWouldExceedMaxSize(t *testing.T) {
createFunc, createCounter := createCreateResourceFunc()
pool := puddle.NewPool(createFunc, stubCloseRes)
pool.SetMaxSize(1)
@@ -102,7 +102,7 @@ func TestPoolGetDoesNotCreatesResourceWhenItWouldExceedMaxSize(t *testing.T) {
wg.Add(1)
go func() {
for j := 0; j < 100; j++ {
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
assert.NoError(t, err)
assert.Equal(t, 1, res.Value())
res.Release()
@@ -117,29 +117,29 @@ func TestPoolGetDoesNotCreatesResourceWhenItWouldExceedMaxSize(t *testing.T) {
assert.Equal(t, 1, pool.Size())
}
func TestPoolGetReturnsErrorFromFailedResourceCreate(t *testing.T) {
func TestPoolAcquireReturnsErrorFromFailedResourceCreate(t *testing.T) {
errCreateFailed := errors.New("create failed")
createFunc := func(ctx context.Context) (interface{}, error) {
return nil, errCreateFailed
}
pool := puddle.NewPool(createFunc, stubCloseRes)
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
assert.Equal(t, errCreateFailed, err)
assert.Nil(t, res)
}
func TestPoolGetReusesResources(t *testing.T) {
func TestPoolAcquireReusesResources(t *testing.T) {
createFunc, createCounter := createCreateResourceFunc()
pool := puddle.NewPool(createFunc, stubCloseRes)
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, res.Value())
res.Release()
res, err = pool.Get(context.Background())
res, err = pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, res.Value())
@@ -148,7 +148,7 @@ func TestPoolGetReusesResources(t *testing.T) {
assert.Equal(t, 1, createCounter.Value())
}
func TestPoolGetContextAlreadyCanceled(t *testing.T) {
func TestPoolAcquireContextAlreadyCanceled(t *testing.T) {
createFunc := func(ctx context.Context) (interface{}, error) {
panic("should never be called")
}
@@ -156,12 +156,12 @@ func TestPoolGetContextAlreadyCanceled(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
cancel()
res, err := pool.Get(ctx)
res, err := pool.Acquire(ctx)
assert.Equal(t, context.Canceled, err)
assert.Nil(t, res)
}
func TestPoolGetContextCanceledDuringCreate(t *testing.T) {
func TestPoolAcquireContextCanceledDuringCreate(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
time.AfterFunc(100*time.Millisecond, cancel)
timeoutChan := time.After(1 * time.Second)
@@ -177,7 +177,7 @@ func TestPoolGetContextCanceledDuringCreate(t *testing.T) {
}
pool := puddle.NewPool(createFunc, stubCloseRes)
res, err := pool.Get(ctx)
res, err := pool.Acquire(ctx)
assert.Equal(t, context.Canceled, err)
assert.Nil(t, res)
}
@@ -188,7 +188,7 @@ func TestResourceReleaseClosesAndRemovesResourceIfOlderThanMaxDuration(t *testin
pool := puddle.NewPool(createFunc, closeFunc)
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, pool.Size())
@@ -209,7 +209,7 @@ func TestResourceReleaseClosesAndRemovesResourceWhenResourceCheckoutCountIsMaxRe
pool := puddle.NewPool(createFunc, closeFunc)
pool.SetMaxResourceCheckouts(1)
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
res.Release()
@@ -233,7 +233,7 @@ func TestPoolCloseClosesAllAvailableResources(t *testing.T) {
resources := make([]*puddle.Resource, 4)
for i := range resources {
var err error
resources[i], err = p.Get(context.Background())
resources[i], err = p.Acquire(context.Background())
require.Nil(t, err)
}
@@ -255,7 +255,7 @@ func TestPoolReleaseClosesResourcePoolIsAlreadyClosed(t *testing.T) {
resources := make([]*puddle.Resource, 4)
for i := range resources {
var err error
resources[i], err = p.Get(context.Background())
resources[i], err = p.Acquire(context.Background())
require.Nil(t, err)
}
@@ -278,7 +278,7 @@ func TestResourceDestroyRemovesResourceFromPool(t *testing.T) {
createFunc, _ := createCreateResourceFunc()
pool := puddle.NewPool(createFunc, stubCloseRes)
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
require.NoError(t, err)
assert.Equal(t, 1, res.Value())
@@ -287,17 +287,17 @@ func TestResourceDestroyRemovesResourceFromPool(t *testing.T) {
assert.Equal(t, 0, pool.Size())
}
func TestPoolGetReturnsErrorWhenPoolIsClosed(t *testing.T) {
func TestPoolAcquireReturnsErrorWhenPoolIsClosed(t *testing.T) {
createFunc, _ := createCreateResourceFunc()
pool := puddle.NewPool(createFunc, stubCloseRes)
pool.Close()
res, err := pool.Get(context.Background())
res, err := pool.Acquire(context.Background())
assert.Equal(t, puddle.ErrClosedPool, err)
assert.Nil(t, res)
}
func BenchmarkPoolGetAndRelease(b *testing.B) {
func BenchmarkPoolAcquireAndRelease(b *testing.B) {
benchmarks := []struct {
poolSize int
concurrentClientCount int
@@ -341,8 +341,8 @@ func BenchmarkPoolGetAndRelease(b *testing.B) {
pool := puddle.NewPool(createFunc, stubCloseRes)
pool.SetMaxSize(bm.poolSize)
borrowAndRelease := func() {
res, err := pool.Get(context.Background())
acquireAndRelease := func() {
res, err := pool.Acquire(context.Background())
if err != nil {
b.Fatal(err)
}
@@ -362,13 +362,13 @@ func BenchmarkPoolGetAndRelease(b *testing.B) {
default:
}
borrowAndRelease()
acquireAndRelease()
}
}()
}
for i := 0; i < b.N; i++ {
borrowAndRelease()
acquireAndRelease()
}
})
}