diff --git a/federation/pkg/federation-controller/util/test/test_helper.go b/federation/pkg/federation-controller/util/test/test_helper.go index 9fa3416173c..c3ac77c6b0e 100644 --- a/federation/pkg/federation-controller/util/test/test_helper.go +++ b/federation/pkg/federation-controller/util/test/test_helper.go @@ -37,11 +37,11 @@ import ( // A structure that distributes eventes to multiple watchers. type WatcherDispatcher struct { sync.Mutex - watchers []*watch.FakeWatcher + watchers []*watch.RaceFreeFakeWatcher eventsSoFar []*watch.Event } -func (wd *WatcherDispatcher) register(watcher *watch.FakeWatcher) { +func (wd *WatcherDispatcher) register(watcher *watch.RaceFreeFakeWatcher) { wd.Lock() defer wd.Unlock() wd.watchers = append(wd.watchers, watcher) @@ -50,6 +50,14 @@ func (wd *WatcherDispatcher) register(watcher *watch.FakeWatcher) { } } +func (wd *WatcherDispatcher) Stop() { + wd.Lock() + defer wd.Unlock() + for _, watcher := range wd.watchers { + watcher.Stop() + } +} + func copy(obj runtime.Object) runtime.Object { objCopy, err := api.Scheme.DeepCopy(obj) if err != nil { @@ -126,12 +134,12 @@ func (wd *WatcherDispatcher) Action(action watch.EventType, obj runtime.Object) // All subsequent requests for a watch on the client will result in returning this fake watcher. func RegisterFakeWatch(resource string, client *core.Fake) *WatcherDispatcher { dispatcher := &WatcherDispatcher{ - watchers: make([]*watch.FakeWatcher, 0), + watchers: make([]*watch.RaceFreeFakeWatcher, 0), eventsSoFar: make([]*watch.Event, 0), } client.AddWatchReactor(resource, func(action core.Action) (bool, watch.Interface, error) { - watcher := watch.NewFakeWithChanSize(100) + watcher := watch.NewRaceFreeFake() dispatcher.register(watcher) return true, watcher, nil })