in pkg/client/apifactory_mock.go [232:292]
func (m *MockedAPIProvider) RunEventHandler() {
m.Lock()
defer m.Unlock()
if m.running {
return
}
m.running = true
log.Log(log.Test).Info("mock shared informers: starting background event handler")
go func() {
eventHandlers := make(map[Type][]cache.ResourceEventHandler)
for {
select {
case <-m.stop:
return
case handlers := <-m.eventHandler:
var h cache.ResourceEventHandler
fns := cache.ResourceEventHandlerFuncs{
AddFunc: handlers.AddFn,
UpdateFunc: handlers.UpdateFn,
DeleteFunc: handlers.DeleteFn,
}
if handlers.FilterFn != nil {
h = cache.FilteringResourceEventHandler{
FilterFunc: handlers.FilterFn,
Handler: fns,
}
} else {
h = fns
}
handlerType := handlers.Type
forType := eventHandlers[handlerType]
forType = append(forType, h)
eventHandlers[handlerType] = forType
case event := <-m.events:
handlerType := event.handlerType
obj := event.obj
old := event.oldObj
switch event.op {
case Add:
for _, e := range eventHandlers[handlerType] {
e.OnAdd(obj, false)
}
case Delete:
for _, e := range eventHandlers[handlerType] {
e.OnDelete(obj)
}
case Update:
for _, e := range eventHandlers[handlerType] {
e.OnUpdate(old, obj)
}
default:
log.Log(log.Test).Fatal("Unknown operation", zap.Int("type", int(event.op)))
}
}
}
}()
}