Check cluster state before running the tests

This commit is contained in:
Vladimir Mihailenco 2018-07-23 12:01:13 +03:00
parent 3143c672b6
commit 4ae24be287
2 changed files with 33 additions and 7 deletions

View File

@ -49,21 +49,51 @@ func (s *clusterScenario) addrs() []string {
}
func (s *clusterScenario) clusterClient(opt *redis.ClusterOptions) *redis.ClusterClient {
var errBadState = fmt.Errorf("cluster state is not consistent")
opt.Addrs = s.addrs()
client := redis.NewClusterClient(opt)
err := eventually(func() error {
state, err := client.GetState()
if opt.ClusterSlots != nil {
return nil
}
state, err := client.LoadState()
if err != nil {
return err
}
if !state.IsConsistent() {
return fmt.Errorf("cluster state is not conistent")
return errBadState
}
if len(state.Masters) < 3 {
return errBadState
}
for _, master := range state.Masters {
s := master.Client.Info("replication").Val()
if !strings.Contains(s, "role:master") {
return errBadState
}
}
if len(state.Slaves) < 3 {
return errBadState
}
for _, slave := range state.Slaves {
s := slave.Client.Info("replication").Val()
if !strings.Contains(s, "role:slave") {
return errBadState
}
}
return nil
}, 30*time.Second)
if err != nil {
panic(err)
}
return client
}
@ -703,7 +733,7 @@ var _ = Describe("ClusterClient", func() {
})
Expect(err).NotTo(HaveOccurred())
state, err := client.GetState()
state, err := client.LoadState()
Expect(err).NotTo(HaveOccurred())
Expect(state.IsConsistent()).To(BeTrue())

View File

@ -21,10 +21,6 @@ func (c *PubSub) ReceiveMessageTimeout(timeout time.Duration) (*Message, error)
return c.receiveMessage(timeout)
}
func (c *ClusterClient) GetState() (*clusterState, error) {
return c.state.Get()
}
func (c *ClusterClient) LoadState() (*clusterState, error) {
return c.loadState()
}