fix audit union loop variables in closures
Kubernetes-commit: 85b027e6fa90dafac5d68d3ba41fd0dc4c53cbf1
This commit is contained in:
parent
8bf4bca24f
commit
8becd60e02
|
@ -48,6 +48,7 @@ func (u union) ProcessEvents(events ...*auditinternal.Event) bool {
|
|||
func (u union) Run(stopCh <-chan struct{}) error {
|
||||
var funcs []func() error
|
||||
for _, backend := range u.backends {
|
||||
backend := backend
|
||||
funcs = append(funcs, func() error {
|
||||
return backend.Run(stopCh)
|
||||
})
|
||||
|
|
|
@ -80,3 +80,36 @@ func TestUnion(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
type cannotMultipleRunBackend struct {
|
||||
started chan struct{}
|
||||
}
|
||||
|
||||
func (b *cannotMultipleRunBackend) ProcessEvents(events ...*auditinternal.Event) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (b *cannotMultipleRunBackend) Run(stopCh <-chan struct{}) error {
|
||||
close(b.started)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *cannotMultipleRunBackend) Shutdown() {}
|
||||
|
||||
func (b *cannotMultipleRunBackend) String() string {
|
||||
return "cannotMultipleRunBackend"
|
||||
}
|
||||
|
||||
func TestUnionRun(t *testing.T) {
|
||||
backends := []Backend{
|
||||
&cannotMultipleRunBackend{started: make(chan struct{})},
|
||||
&cannotMultipleRunBackend{started: make(chan struct{})},
|
||||
&cannotMultipleRunBackend{started: make(chan struct{})},
|
||||
}
|
||||
|
||||
b := Union(backends...)
|
||||
|
||||
if err := b.Run(make(chan struct{})); err != nil {
|
||||
t.Errorf("union backend run: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue