Files
cloud-services/pkg/redisv2/tester/mock_client_pool.go

57 lines
953 B
Go

package tester
import (
"sync"
"github.com/fiskerinc/cloud-services/pkg/redis"
)
func NewMockClientPool(args ...interface{}) redis.ClientPoolInterface {
result := &MockClientPool{}
for i := range args {
if pool, ok := args[i].(redis.Pool); ok {
result.pool = pool
} else if client, ok := args[i].(redis.Client); ok {
result.client = client
}
}
return result
}
type MockClientPool struct {
once sync.Once
oncePool sync.Once
client redis.Client
pool redis.Pool
}
func (f *MockClientPool) getClient() redis.Client {
f.once.Do(func() {
if f.client == nil {
f.client = NewRedisMock()
}
})
return f.client
}
func (f *MockClientPool) GetPool() redis.Pool {
f.oncePool.Do(func() {
if f.pool == nil {
f.pool = redis.GetMockPool()
}
})
return f.pool
}
func (f *MockClientPool) SetPool(pool redis.Pool) {
f.pool = pool
}
func (f *MockClientPool) GetFromPool() redis.Client {
return f.getClient()
}