From ad2174f519e6869c741654f6f49cf39531a97242 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 9 Feb 2021 22:32:42 -0500 Subject: [PATCH] prevent race condition with bytes.Buffer in vsphere unit tests Signed-off-by: Davanum Srinivas --- .../vsphere/vsphere_test.go | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere_test.go b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere_test.go index c5ea17ba963..5fb91a96199 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere_test.go +++ b/staging/src/k8s.io/legacy-cloud-providers/vsphere/vsphere_test.go @@ -32,6 +32,7 @@ import ( "sort" "strconv" "strings" + "sync" "testing" "github.com/vmware/govmomi/find" @@ -1166,6 +1167,23 @@ func fakeSecret(name, namespace, datacenter, user, password string) *v1.Secret { } } +type buffer struct { + b bytes.Buffer + rw sync.RWMutex +} + +func (b *buffer) String() string { + b.rw.RLock() + defer b.rw.RUnlock() + return b.b.String() +} + +func (b *buffer) Write(p []byte) (n int, err error) { + b.rw.Lock() + defer b.rw.Unlock() + return b.b.Write(p) +} + func TestSecretUpdated(t *testing.T) { datacenter := "0.0.0.0" secretName := "vccreds" @@ -1231,8 +1249,8 @@ func TestSecretUpdated(t *testing.T) { for _, testcase := range testcases { t.Run(testcase.name, func(t *testing.T) { - buf := new(bytes.Buffer) - errBuf := new(bytes.Buffer) + buf := new(buffer) + errBuf := new(buffer) klog.SetOutputBySeverity("INFO", buf) klog.SetOutputBySeverity("WARNING", errBuf)