func (s *RethinkSuite) TestClusterNodeHealth(c *test.C) { session, err := Connect(ConnectOpts{ Addresses: []string{url, url2, url3}, DiscoverHosts: true, NodeRefreshInterval: time.Second, MaxIdle: 50, MaxOpen: 200, }) c.Assert(err, test.IsNil) attempts := 0 failed := 0 seconds := 0 t := time.NewTimer(time.Second * 10) tick := time.NewTicker(time.Second) for { select { // Fail if deadline has passed case <-tick.C: seconds++ c.Logf("%ds elapsed", seconds) case <-t.C: // Execute queries for 10s and check that at most 5% of the queries fail c.Logf("%d of the %d(%d%%) queries failed", failed, attempts, (failed / attempts)) c.Assert(failed <= 100, test.Equals, true) return default: attempts++ if err := Expr(1).Exec(session); err != nil { c.Logf("Query failed, %s", err) failed++ } } } }