diff --git a/Makefile b/Makefile index f52adf2803..c58c71eaeb 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ lint: golangci-lint ## Run golangci-lint against code. test: generate fmt vet manifests envtest ## Run tests echo $(ENVTEST) go build -o pkg/daemon/criruntime/imageruntime/fake_plugin/fake-credential-plugin pkg/daemon/criruntime/imageruntime/fake_plugin/main.go && chmod +x pkg/daemon/criruntime/imageruntime/fake_plugin/fake-credential-plugin - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./pkg/... -coverprofile cover.out + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test -race ./pkg/... -coverprofile cover.out rm pkg/daemon/criruntime/imageruntime/fake_plugin/fake-credential-plugin coverage-report: ## Generate cover.html from cover.out diff --git a/pkg/controller/statefulset/stateful_set_control_test.go b/pkg/controller/statefulset/stateful_set_control_test.go index 01a2a4beba..af41397199 100644 --- a/pkg/controller/statefulset/stateful_set_control_test.go +++ b/pkg/controller/statefulset/stateful_set_control_test.go @@ -27,6 +27,7 @@ import ( "sort" "strconv" "strings" + "sync" "testing" "time" @@ -2887,6 +2888,7 @@ func TestStatefulSetControlRollback(t *testing.T) { } type requestTracker struct { + l sync.Mutex requests int err error after int @@ -2897,10 +2899,14 @@ func (rt *requestTracker) errorReady() bool { } func (rt *requestTracker) inc() { + rt.l.Lock() + defer rt.l.Unlock() rt.requests++ } func (rt *requestTracker) reset() { + rt.l.Lock() + defer rt.l.Unlock() rt.err = nil rt.after = 0 } @@ -2935,9 +2941,9 @@ func newFakeObjectManager(informerFactory informers.SharedInformerFactory, kruis claimInformer.Informer().GetIndexer(), setInformer.Informer().GetIndexer(), revisionInformer.Informer().GetIndexer(), - requestTracker{0, nil, 0}, - requestTracker{0, nil, 0}, - requestTracker{0, nil, 0}} + requestTracker{sync.Mutex{}, 0, nil, 0}, + requestTracker{sync.Mutex{}, 0, nil, 0}, + requestTracker{sync.Mutex{}, 0, nil, 0}} } func (om *fakeObjectManager) CreatePod(ctx context.Context, pod *v1.Pod) error { @@ -3131,7 +3137,7 @@ func newFakeStatefulSetStatusUpdater(setInformer kruiseappsinformers.StatefulSet return &fakeStatefulSetStatusUpdater{ setInformer.Lister(), setInformer.Informer().GetIndexer(), - requestTracker{0, nil, 0}, + requestTracker{sync.Mutex{}, 0, nil, 0}, } } diff --git a/pkg/daemon/podprobe/pod_probe_controller_test.go b/pkg/daemon/podprobe/pod_probe_controller_test.go index 83ccb709e7..ce3bcea941 100644 --- a/pkg/daemon/podprobe/pod_probe_controller_test.go +++ b/pkg/daemon/podprobe/pod_probe_controller_test.go @@ -600,9 +600,13 @@ func TestSyncNodePodProbe(t *testing.T) { return } time.Sleep(time.Second) + + c.workerLock.RLock() if len(c.workers) != len(cs.expectWorkers(c)) { t.Fatalf("expect(%d), but get(%d)", len(cs.expectWorkers(c)), len(c.workers)) } + c.workerLock.RUnlock() + for _, worker := range cs.expectWorkers(c) { obj, ok := c.workers[worker.key] if !ok {