Add a mutex to helm test message streams

This is to protect against data races when running tests in parallel.

Signed-off-by: Frank Hamand <frankhamand@gmail.com>
pull/4144/head
Frank Hamand 7 years ago
parent 0b63ce8c71
commit 0845837527
No known key found for this signature in database
GPG Key ID: 3A94326B72FE75DF

@ -20,6 +20,7 @@ import (
"bytes" "bytes"
"fmt" "fmt"
"log" "log"
"sync"
"time" "time"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
@ -36,6 +37,7 @@ type Environment struct {
Stream services.ReleaseService_RunReleaseTestServer Stream services.ReleaseService_RunReleaseTestServer
Timeout int64 Timeout int64
Parallel bool Parallel bool
streamLock sync.Mutex
} }
func (env *Environment) createTestPod(test *test) error { func (env *Environment) createTestPod(test *test) error {
@ -109,6 +111,8 @@ func (env *Environment) streamUnknown(name, info string) error {
func (env *Environment) streamMessage(msg string, status release.TestRun_Status) error { func (env *Environment) streamMessage(msg string, status release.TestRun_Status) error {
resp := &services.TestReleaseResponse{Msg: msg, Status: status} resp := &services.TestReleaseResponse{Msg: msg, Status: status}
env.streamLock.Lock()
defer env.streamLock.Unlock()
return env.Stream.Send(resp) return env.Stream.Send(resp)
} }

Loading…
Cancel
Save