From 32794b18f06acb1a5adbbc616433209eef32f856 Mon Sep 17 00:00:00 2001 From: "Tim St. Clair" Date: Wed, 9 Dec 2015 10:20:57 -0800 Subject: [PATCH] Fix data race in prober test --- pkg/kubelet/prober/manager.go | 20 +++++++++++++++++--- pkg/kubelet/prober/manager_test.go | 1 + pkg/kubelet/prober/testing.go | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/prober/manager.go b/pkg/kubelet/prober/manager.go index e6fa47dd2e1..bac1838b9cc 100644 --- a/pkg/kubelet/prober/manager.go +++ b/pkg/kubelet/prober/manager.go @@ -79,20 +79,34 @@ func NewManager( runner kubecontainer.ContainerCommandRunner, refManager *kubecontainer.RefManager, recorder record.EventRecorder) Manager { + m := newManager(statusManager, livenessManager, runner, refManager, recorder) + m.start() + return m +} + +// newManager is the internal version of NewManager for testing. +func newManager( + statusManager status.Manager, + livenessManager results.Manager, + runner kubecontainer.ContainerCommandRunner, + refManager *kubecontainer.RefManager, + recorder record.EventRecorder) *manager { + prober := newProber(runner, refManager, recorder) readinessManager := results.NewManager() - m := &manager{ + return &manager{ statusManager: statusManager, prober: prober, readinessManager: readinessManager, livenessManager: livenessManager, workers: make(map[probeKey]*worker), } +} +// start syncing probe status. +func (m *manager) start() { // Start syncing readiness. go util.Forever(m.updateReadiness, 0) - - return m } // Key uniquely identifying container probes diff --git a/pkg/kubelet/prober/manager_test.go b/pkg/kubelet/prober/manager_test.go index de9ccd1cc78..f97899a0793 100644 --- a/pkg/kubelet/prober/manager_test.go +++ b/pkg/kubelet/prober/manager_test.go @@ -251,6 +251,7 @@ func TestUpdatePodStatus(t *testing.T) { func TestUpdateReadiness(t *testing.T) { testPod := getTestPod(readiness, api.Probe{}) m := newTestManager() + m.start() m.statusManager.SetPodStatus(&testPod, getTestRunningStatus()) m.AddPod(&testPod) diff --git a/pkg/kubelet/prober/testing.go b/pkg/kubelet/prober/testing.go index fbdc77ffbda..7f1ed587694 100644 --- a/pkg/kubelet/prober/testing.go +++ b/pkg/kubelet/prober/testing.go @@ -95,13 +95,13 @@ func getTestPod(probeType probeType, probeSpec api.Probe) api.Pod { func newTestManager() *manager { refManager := kubecontainer.NewRefManager() refManager.SetRef(testContainerID, &api.ObjectReference{}) // Suppress prober warnings. - m := NewManager( + m := newManager( status.NewManager(&testclient.Fake{}, kubepod.NewBasicPodManager(nil)), results.NewManager(), nil, // runner refManager, &record.FakeRecorder{}, - ).(*manager) + ) // Don't actually execute probes. m.prober.exec = fakeExecProber{probe.Success, nil} return m