mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-22 18:16:52 +00:00
Fix data race in prober test
This commit is contained in:
parent
8d46df0162
commit
32794b18f0
@ -79,20 +79,34 @@ func NewManager(
|
|||||||
runner kubecontainer.ContainerCommandRunner,
|
runner kubecontainer.ContainerCommandRunner,
|
||||||
refManager *kubecontainer.RefManager,
|
refManager *kubecontainer.RefManager,
|
||||||
recorder record.EventRecorder) Manager {
|
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)
|
prober := newProber(runner, refManager, recorder)
|
||||||
readinessManager := results.NewManager()
|
readinessManager := results.NewManager()
|
||||||
m := &manager{
|
return &manager{
|
||||||
statusManager: statusManager,
|
statusManager: statusManager,
|
||||||
prober: prober,
|
prober: prober,
|
||||||
readinessManager: readinessManager,
|
readinessManager: readinessManager,
|
||||||
livenessManager: livenessManager,
|
livenessManager: livenessManager,
|
||||||
workers: make(map[probeKey]*worker),
|
workers: make(map[probeKey]*worker),
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// start syncing probe status.
|
||||||
|
func (m *manager) start() {
|
||||||
// Start syncing readiness.
|
// Start syncing readiness.
|
||||||
go util.Forever(m.updateReadiness, 0)
|
go util.Forever(m.updateReadiness, 0)
|
||||||
|
|
||||||
return m
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key uniquely identifying container probes
|
// Key uniquely identifying container probes
|
||||||
|
@ -251,6 +251,7 @@ func TestUpdatePodStatus(t *testing.T) {
|
|||||||
func TestUpdateReadiness(t *testing.T) {
|
func TestUpdateReadiness(t *testing.T) {
|
||||||
testPod := getTestPod(readiness, api.Probe{})
|
testPod := getTestPod(readiness, api.Probe{})
|
||||||
m := newTestManager()
|
m := newTestManager()
|
||||||
|
m.start()
|
||||||
m.statusManager.SetPodStatus(&testPod, getTestRunningStatus())
|
m.statusManager.SetPodStatus(&testPod, getTestRunningStatus())
|
||||||
|
|
||||||
m.AddPod(&testPod)
|
m.AddPod(&testPod)
|
||||||
|
@ -95,13 +95,13 @@ func getTestPod(probeType probeType, probeSpec api.Probe) api.Pod {
|
|||||||
func newTestManager() *manager {
|
func newTestManager() *manager {
|
||||||
refManager := kubecontainer.NewRefManager()
|
refManager := kubecontainer.NewRefManager()
|
||||||
refManager.SetRef(testContainerID, &api.ObjectReference{}) // Suppress prober warnings.
|
refManager.SetRef(testContainerID, &api.ObjectReference{}) // Suppress prober warnings.
|
||||||
m := NewManager(
|
m := newManager(
|
||||||
status.NewManager(&testclient.Fake{}, kubepod.NewBasicPodManager(nil)),
|
status.NewManager(&testclient.Fake{}, kubepod.NewBasicPodManager(nil)),
|
||||||
results.NewManager(),
|
results.NewManager(),
|
||||||
nil, // runner
|
nil, // runner
|
||||||
refManager,
|
refManager,
|
||||||
&record.FakeRecorder{},
|
&record.FakeRecorder{},
|
||||||
).(*manager)
|
)
|
||||||
// Don't actually execute probes.
|
// Don't actually execute probes.
|
||||||
m.prober.exec = fakeExecProber{probe.Success, nil}
|
m.prober.exec = fakeExecProber{probe.Success, nil}
|
||||||
return m
|
return m
|
||||||
|
Loading…
Reference in New Issue
Block a user