mirror of
https://github.com/redis/go-redis.git
synced 2025-07-28 06:42:00 +03:00
Better rate limited message.
This commit is contained in:
26
pool_test.go
26
pool_test.go
@ -1,6 +1,7 @@
|
||||
package redis_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
@ -36,7 +37,6 @@ var _ = Describe("pool", func() {
|
||||
})
|
||||
|
||||
AfterEach(func() {
|
||||
Expect(client.FlushDb().Err()).NotTo(HaveOccurred())
|
||||
Expect(client.Close()).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
@ -141,12 +141,12 @@ var _ = Describe("pool", func() {
|
||||
pool := client.Pool()
|
||||
|
||||
// Reserve one connection.
|
||||
cn, _, err := client.Pool().Get()
|
||||
cn, _, err := pool.Get()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Reserve the rest of connections.
|
||||
for i := 0; i < 9; i++ {
|
||||
_, _, err := client.Pool().Get()
|
||||
_, _, err := pool.Get()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
|
||||
@ -168,7 +168,8 @@ var _ = Describe("pool", func() {
|
||||
// ok
|
||||
}
|
||||
|
||||
Expect(pool.Remove(cn)).NotTo(HaveOccurred())
|
||||
err = pool.Remove(cn, errors.New("test"))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Check that Ping is unblocked.
|
||||
select {
|
||||
@ -179,6 +180,23 @@ var _ = Describe("pool", func() {
|
||||
}
|
||||
Expect(ping.Err()).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
It("should rate limit dial", func() {
|
||||
pool := client.Pool()
|
||||
|
||||
var rateErr error
|
||||
for i := 0; i < 1000; i++ {
|
||||
cn, _, err := pool.Get()
|
||||
if err != nil {
|
||||
rateErr = err
|
||||
break
|
||||
}
|
||||
|
||||
_ = pool.Remove(cn, errors.New("test"))
|
||||
}
|
||||
|
||||
Expect(rateErr).To(MatchError(`redis: you open connections too fast (last_error="test")`))
|
||||
})
|
||||
})
|
||||
|
||||
func BenchmarkPool(b *testing.B) {
|
||||
|
Reference in New Issue
Block a user