Skip to content

Commit 2eeaa59

Browse files
committed
test(controller): seed the DataVolume informer for controller-runtime 0.25
controller-runtime 0.25 made FakeInformer's sync state a private channel, so the DataVolume watch tests no longer compile: they toggled the exported Synced field and its lock. FakeInformers also builds every informer it creates already synced, so an unsynced informer has to be seeded into InformersByGVK and marked synced with Synced() later. Assisted-by: LLM Signed-off-by: Aleksei Sviridkin <[email protected]>
1 parent bf03c84 commit 2eeaa59

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

‎internal/controller/workloadmonitor_controller_test.go‎

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"k8s.io/apimachinery/pkg/runtime/schema"
2222
"k8s.io/apimachinery/pkg/types"
2323
"k8s.io/apimachinery/pkg/util/wait"
24+
toolscache "k8s.io/client-go/tools/cache"
2425
"k8s.io/client-go/tools/record"
2526
"k8s.io/client-go/util/workqueue"
2627
"k8s.io/utils/ptr"
@@ -1965,6 +1966,18 @@ func fakeDataVolumeInformer(t *testing.T, informers *informertest.FakeInformers)
19651966
return fi
19661967
}
19671968

1969+
// dataVolumeInformers seeds the DataVolume informer, because FakeInformers
1970+
// creates every informer it builds itself already synced.
1971+
func dataVolumeInformers(synced bool) (*informertest.FakeInformers, *controllertest.FakeInformer) {
1972+
fi := controllertest.NewFakeInformer()
1973+
if synced {
1974+
fi.Synced()
1975+
}
1976+
return &informertest.FakeInformers{
1977+
InformersByGVK: map[schema.GroupVersionKind]toolscache.SharedIndexInformer{dataVolumeGVK: fi},
1978+
}, fi
1979+
}
1980+
19681981
func TestTryStartDataVolumeWatch_WaitsUntilTheKindIsServed(t *testing.T) {
19691982
r := watchReconciler()
19701983
w := &startingWatcher{}
@@ -2025,9 +2038,7 @@ func TestWatchDataVolumes_StartsOnTheFirstReconcile(t *testing.T) {
20252038
func TestTryStartDataVolumeWatch_UnsyncedSourceLeavesNoReaderAndRetries(t *testing.T) {
20262039
r := watchReconciler()
20272040
w := &startingWatcher{}
2028-
informers := &informertest.FakeInformers{}
2029-
fi := fakeDataVolumeInformer(t, informers)
2030-
fi.Synced = false
2041+
informers, fi := dataVolumeInformers(false)
20312042

20322043
for attempt := 0; attempt < 3; attempt++ {
20332044
done, err := r.tryStartDataVolumeWatch(context.Background(), servedMapper(), w, informers, 50*time.Millisecond)
@@ -2036,9 +2047,7 @@ func TestTryStartDataVolumeWatch_UnsyncedSourceLeavesNoReaderAndRetries(t *testi
20362047
}
20372048
}
20382049

2039-
fi.SyncedLock.Lock()
2040-
fi.Synced = true
2041-
fi.SyncedLock.Unlock()
2050+
fi.Synced()
20422051

20432052
done, err := r.tryStartDataVolumeWatch(context.Background(), servedMapper(), w, informers, time.Second)
20442053
if err != nil || !done || readerOf(r) == nil {
@@ -2054,8 +2063,7 @@ func TestTryStartDataVolumeWatch_UnsyncedSourceLeavesNoReaderAndRetries(t *testi
20542063
// A stopping manager ends the sync wait, which says nothing about the informer.
20552064
func TestTryStartDataVolumeWatch_StoppingManagerLeavesNoReader(t *testing.T) {
20562065
r := watchReconciler()
2057-
informers := &informertest.FakeInformers{}
2058-
fakeDataVolumeInformer(t, informers).Synced = false
2066+
informers, _ := dataVolumeInformers(false)
20592067
ctx, cancel := context.WithCancel(context.Background())
20602068
cancel()
20612069
done, err := r.tryStartDataVolumeWatch(ctx, servedMapper(), &startingWatcher{}, informers, time.Second)
@@ -2074,8 +2082,7 @@ func TestTryStartDataVolumeWatch_ReconcileBeforeTheReaderIsRetried(t *testing.T)
20742082
for _, synced := range []bool{true, false} {
20752083
t.Run(fmt.Sprintf("synced=%v", synced), func(t *testing.T) {
20762084
r := watchReconciler()
2077-
informers := &informertest.FakeInformers{}
2078-
fakeDataVolumeInformer(t, informers).Synced = synced
2085+
informers, _ := dataVolumeInformers(synced)
20792086
monitor := &cozyv1alpha1.WorkloadMonitor{ObjectMeta: metav1.ObjectMeta{Name: "m", Namespace: "default"}}
20802087
var errDuringWatch error
20812088
w := &startingWatcher{}

0 commit comments

Comments
 (0)