integration: always return active client

In the integration test, we sometimes stop/restart an etcd server.
Now our client has internal connection monitoring logic that might
set conn to nil when there is a connection failure and the redial
also fails.

Chaning randClient to always return a client with active connection
to make integration test reliable.
release-3.0
Xiang Li 2016-06-02 14:49:30 -07:00
parent 8b28c647ea
commit bbfe7f401f
1 changed files with 9 additions and 1 deletions

View File

@ -795,7 +795,15 @@ func (c *ClusterV3) Terminate(t *testing.T) {
}
func (c *ClusterV3) RandClient() *clientv3.Client {
return c.clients[rand.Intn(len(c.clients))]
for i := 0; i < 100; i++ {
cli := c.clients[rand.Intn(len(c.clients))]
if cli.ActiveConnection() == nil {
time.Sleep(10 * time.Millisecond)
continue
}
return cli
}
panic("failed to get a active client")
}
func (c *ClusterV3) Client(i int) *clientv3.Client {