in step6/src/loadgen/main.go [113:140]
func run(workers, concurrency int) error {
respErrCh := make(chan error)
concCh := make(chan bool, concurrency)
for n := 0; n < workers; n++ {
go func() {
concCh <- true
defer func() {
<-concCh
}()
respErrCh <- func() error {
q := testCases[rand.Intn(len(testCases))]
matched, err := runQuery(q.query)
if err != nil {
return err
}
check(q, matched)
return nil
}()
}()
}
for i := 0; i < workers; i++ {
if err := <-respErrCh; err != nil {
return err
}
}
return nil
}