func (d *poolDialer) check(message string, p *redis.Pool, dialed, open int) { d.mu.Lock() if d.dialed != dialed { d.t.Errorf("%s: dialed=%d, want %d", message, d.dialed, dialed) } if d.open != open { d.t.Errorf("%s: open=%d, want %d", message, d.open, open) } if active := p.ActiveCount(); active != open { d.t.Errorf("%s: active=%d, want %d", message, active, open) } d.mu.Unlock() }
func startGoroutines(p *redis.Pool, cmd string, args ...interface{}) chan error { errs := make(chan error, 10) for i := 0; i < cap(errs); i++ { go func() { c := p.Get() _, err := c.Do(cmd, args...) errs <- err c.Close() }() } // Wait for goroutines to block. time.Sleep(time.Second / 4) return errs }
func BenchmarkPoolGet(b *testing.B) { b.StopTimer() p := redis.Pool{Dial: redistest.Dial, MaxIdle: 2} c := p.Get() if err := c.Err(); err != nil { b.Fatal(err) } c.Close() defer p.Close() b.StartTimer() for i := 0; i < b.N; i++ { c = p.Get() c.Close() } }