Fix race in Query Log Test (#6727)

A data race can happen if we run t.Log after the test t is done -- which
in this case is highly possible because of the use of subtests and the
fact that we call t.Log in a goroutine.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
This commit is contained in:
Julien Pivotto 2020-01-30 22:51:19 +01:00 committed by GitHub
parent 83601202d9
commit 3c4c01eae2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,6 +26,7 @@ import (
"path/filepath"
"runtime"
"strconv"
"sync"
"testing"
"time"
@ -244,9 +245,15 @@ func (p *queryLogTest) run(t *testing.T) {
// Log stderr in case of failure.
stderr, err := prom.StderrPipe()
testutil.Ok(t, err)
// We use a WaitGroup to avoid calling t.Log after the test is done.
var wg sync.WaitGroup
wg.Add(1)
defer wg.Wait()
go func() {
slurp, _ := ioutil.ReadAll(stderr)
t.Log(string(slurp))
wg.Done()
}()
testutil.Ok(t, prom.Start())