Fix flaky tests

This commit is contained in:
Vladimir Mihailenco 2017-08-15 10:34:05 +03:00
parent 63e3bc58c7
commit 8ff417ca18
4 changed files with 28 additions and 15 deletions

View File

@ -342,7 +342,8 @@ var _ = Describe("ClusterClient", func() {
Expect(get.Val()).To(Equal(key + "_value")) Expect(get.Val()).To(Equal(key + "_value"))
ttl := cmds[(i*2)+1].(*redis.DurationCmd) ttl := cmds[(i*2)+1].(*redis.DurationCmd)
Expect(ttl.Val()).To(BeNumerically("~", time.Duration(i+1)*time.Hour, time.Second)) dur := time.Duration(i+1) * time.Hour
Expect(ttl.Val()).To(BeNumerically("~", dur, 5*time.Second))
} }
}) })
@ -476,9 +477,9 @@ var _ = Describe("ClusterClient", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, client := range cluster.masters() { for _, client := range cluster.masters() {
keys, err := client.Keys("*").Result() size, err := client.DBSize().Result()
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
Expect(keys).To(HaveLen(0)) Expect(size).To(Equal(int64(0)))
} }
}) })
@ -551,6 +552,9 @@ var _ = Describe("ClusterClient", func() {
}) })
_ = client.ForEachSlave(func(slave *redis.Client) error { _ = client.ForEachSlave(func(slave *redis.Client) error {
Eventually(func() int64 {
return client.DBSize().Val()
}, 30*time.Second).Should(Equal(int64(0)))
return slave.ClusterFailover().Err() return slave.ClusterFailover().Err()
}) })
}) })
@ -717,11 +721,12 @@ var _ = Describe("ClusterClient timeout", func() {
}) })
AfterEach(func() { AfterEach(func() {
client.ForEachNode(func(client *redis.Client) error {
Eventually(func() error { Eventually(func() error {
return client.ForEachNode(func(client *redis.Client) error {
return client.Ping().Err() return client.Ping().Err()
})
}, 2*pause).ShouldNot(HaveOccurred()) }, 2*pause).ShouldNot(HaveOccurred())
return nil
})
}) })
testTimeout() testTimeout()

View File

@ -191,7 +191,7 @@ type Cmdable interface {
ConfigGet(parameter string) *SliceCmd ConfigGet(parameter string) *SliceCmd
ConfigResetStat() *StatusCmd ConfigResetStat() *StatusCmd
ConfigSet(parameter, value string) *StatusCmd ConfigSet(parameter, value string) *StatusCmd
DbSize() *IntCmd DBSize() *IntCmd
FlushAll() *StatusCmd FlushAll() *StatusCmd
FlushAllAsync() *StatusCmd FlushAllAsync() *StatusCmd
FlushDB() *StatusCmd FlushDB() *StatusCmd
@ -1684,7 +1684,12 @@ func (c *cmdable) ConfigSet(parameter, value string) *StatusCmd {
return cmd return cmd
} }
// Deperecated. Use DBSize instead.
func (c *cmdable) DbSize() *IntCmd { func (c *cmdable) DbSize() *IntCmd {
return c.DBSize()
}
func (c *cmdable) DBSize() *IntCmd {
cmd := NewIntCmd("dbsize") cmd := NewIntCmd("dbsize")
c.process(cmd) c.process(cmd)
return cmd return cmd
@ -1704,9 +1709,7 @@ func (c *cmdable) FlushAllAsync() *StatusCmd {
// Deprecated. Use FlushDB instead. // Deprecated. Use FlushDB instead.
func (c *cmdable) FlushDb() *StatusCmd { func (c *cmdable) FlushDb() *StatusCmd {
cmd := NewStatusCmd("flushdb") return c.FlushDB()
c.process(cmd)
return cmd
} }
func (c *cmdable) FlushDB() *StatusCmd { func (c *cmdable) FlushDB() *StatusCmd {

View File

@ -139,10 +139,10 @@ var _ = Describe("Commands", func() {
Expect(configSet.Val()).To(Equal("OK")) Expect(configSet.Val()).To(Equal("OK"))
}) })
It("should DbSize", func() { It("should DBSize", func() {
dbSize := client.DbSize() size, err := client.DBSize().Result()
Expect(dbSize.Err()).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
Expect(dbSize.Val()).To(Equal(int64(0))) Expect(size).To(Equal(int64(0)))
}) })
It("should Info", func() { It("should Info", func() {

View File

@ -400,8 +400,11 @@ var _ = Describe("PubSub", func() {
pubsub := client.Subscribe() pubsub := client.Subscribe()
defer pubsub.Close() defer pubsub.Close()
var wg sync.WaitGroup
wg.Add(1)
go func() { go func() {
defer GinkgoRecover() defer GinkgoRecover()
defer wg.Done()
time.Sleep(2 * timeout) time.Sleep(2 * timeout)
@ -418,5 +421,7 @@ var _ = Describe("PubSub", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
Expect(msg.Channel).To(Equal("mychannel")) Expect(msg.Channel).To(Equal("mychannel"))
Expect(msg.Payload).To(Equal("hello")) Expect(msg.Payload).To(Equal("hello"))
wg.Wait()
}) })
}) })