// queryCount returns the total SQL queries executed by the cluster. func (cl continuousLoadTest) queryCount(f *terrafarm.Farmer) (float64, error) { var client http.Client var resp status.NodeStatus host := f.Nodes()[0] if err := httputil.GetJSON(client, "http://"+host+":8080/_status/nodes/local", &resp); err != nil { return 0, err } count, ok := resp.Metrics["sql.query.count"] if !ok { return 0, errors.New("couldn't find SQL query count metric") } return count, nil }
func (cl continuousLoadTest) startLoad(f *terrafarm.Farmer) error { if *flagCLTWriters > len(f.Nodes()) { return errors.Errorf("writers (%d) > nodes (%d)", *flagCLTWriters, len(f.Nodes())) } // We may have to retry restarting the load generators, because CockroachDB // might have been started too recently to start accepting connections. started := make(map[int]bool) return util.RetryForDuration(10*time.Second, func() error { for i := 0; i < *flagCLTWriters; i++ { if !started[i] { if err := f.Start(i, cl.Process); err != nil { return err } } } return nil }) }
// assert fails the test if CockroachDB or the load generators are down. func (cl continuousLoadTest) assert(t *testing.T, f *terrafarm.Farmer) { f.Assert(t) for _, host := range f.Nodes()[0:*flagCLTWriters] { f.AssertState(t, host, cl.Process, "RUNNING") } }