2
0

Extract createCloseResourceFuncWithNotifierChan

This commit is contained in:
Jack Christensen
2018-12-24 12:07:48 -06:00
parent 3559b7b000
commit 49b32fb7f3
+18 -33
View File
@@ -56,6 +56,20 @@ func createCreateResourceFuncWithNotifierChan() (puddle.CreateFunc, *Counter, ch
return f, &c, ch return f, &c, ch
} }
func createCloseResourceFuncWithNotifierChan() (puddle.CloseFunc, *Counter, chan int) {
ch := make(chan int)
var c Counter
f := func(interface{}) error {
n := c.Next()
// Because the tests will not read from ch until after the close function f returns.
go func() { ch <- n }()
return nil
}
return f, &c, ch
}
func stubCloseRes(interface{}) error { return nil } func stubCloseRes(interface{}) error { return nil }
func waitForRead(ch chan int) bool { func waitForRead(ch chan int) bool {
@@ -200,15 +214,8 @@ func TestPoolReturnClosesAndRemovesResourceIfOlderThanMaxDuration(t *testing.T)
} }
func TestPoolReturnClosesAndRemovesResourceIfMoreUsesThanMaxResourceUses(t *testing.T) { func TestPoolReturnClosesAndRemovesResourceIfMoreUsesThanMaxResourceUses(t *testing.T) {
closeCallsChan := make(chan int, 4)
createFunc, _ := createCreateResourceFunc() createFunc, _ := createCreateResourceFunc()
var closeCalls Counter closeFunc, closeCalls, closeCallsChan := createCloseResourceFuncWithNotifierChan()
closeFunc := func(interface{}) error {
n := closeCalls.Next()
closeCallsChan <- n
return nil
}
pool := puddle.NewPool(createFunc, closeFunc) pool := puddle.NewPool(createFunc, closeFunc)
pool.SetMaxResourceUses(1) pool.SetMaxResourceUses(1)
@@ -252,16 +259,8 @@ func TestPoolCloseClosesAllAvailableResources(t *testing.T) {
} }
func TestPoolReturnClosesResourcePoolIsAlreadyClosed(t *testing.T) { func TestPoolReturnClosesResourcePoolIsAlreadyClosed(t *testing.T) {
closeCallsChan := make(chan int, 4)
createFunc, _ := createCreateResourceFunc() createFunc, _ := createCreateResourceFunc()
closeFunc, closeCalls, closeCallsChan := createCloseResourceFuncWithNotifierChan()
var closeCalls Counter
closeFunc := func(interface{}) error {
n := closeCalls.Next()
closeCallsChan <- n
return nil
}
p := puddle.NewPool(createFunc, closeFunc) p := puddle.NewPool(createFunc, closeFunc)
@@ -309,14 +308,7 @@ func TestPoolRemoveRemovesResourceFromPool(t *testing.T) {
func TestPoolRemoveRemovesResourceFromPoolAndStartsNewCreationToMaintainMinSize(t *testing.T) { func TestPoolRemoveRemovesResourceFromPoolAndStartsNewCreationToMaintainMinSize(t *testing.T) {
createFunc, createCounter, createCallsChan := createCreateResourceFuncWithNotifierChan() createFunc, createCounter, createCallsChan := createCreateResourceFuncWithNotifierChan()
closeFunc, closeCalls, closeCallsChan := createCloseResourceFuncWithNotifierChan()
closeCallsChan := make(chan int, 4)
var closeCalls Counter
closeFunc := func(interface{}) error {
n := closeCalls.Next()
closeCallsChan <- n
return nil
}
pool := puddle.NewPool(createFunc, closeFunc) pool := puddle.NewPool(createFunc, closeFunc)
@@ -357,14 +349,7 @@ func TestPoolRemoveRemovesResourceFromPoolAndStartsNewCreationToMaintainMinSize(
func TestPoolRemoveRemovesResourceFromPoolAndDoesNotStartNewCreationToMaintainMinSizeWhenPoolIsClosed(t *testing.T) { func TestPoolRemoveRemovesResourceFromPoolAndDoesNotStartNewCreationToMaintainMinSizeWhenPoolIsClosed(t *testing.T) {
createFunc, createCounter, createCallsChan := createCreateResourceFuncWithNotifierChan() createFunc, createCounter, createCallsChan := createCreateResourceFuncWithNotifierChan()
closeCallsChan := make(chan int, 4) closeFunc, closeCalls, closeCallsChan := createCloseResourceFuncWithNotifierChan()
var closeCalls Counter
closeFunc := func(interface{}) error {
n := closeCalls.Next()
closeCallsChan <- n
return nil
}
pool := puddle.NewPool(createFunc, closeFunc) pool := puddle.NewPool(createFunc, closeFunc)