DRA resource slice controller: fix unit test flake

The TestControllerSyncPool/remove-pool flaked because it intentionally runs
with no sync delay, in which case the delete event may add the pool again to
the ready queue directly. This raced with checking the queue state where "no
pools in ready queue" was expected.

The solution is to relax checking in this particular case and exclude the ready
queue.
This commit is contained in:
Patrick Ohly 2024-11-05 17:16:48 +01:00
parent c69f150008
commit 3086b58460

View File

@ -145,7 +145,7 @@ func TestControllerSyncPool(t *testing.T) {
},
"remove-pool": {
nodeUID: nodeUID,
syncDelay: ptr.To(time.Duration(0)),
syncDelay: ptr.To(time.Duration(0)), // Ensure that the initial object causes an immediate sync of the pool.
initialObjects: []runtime.Object{
MakeResourceSlice().Name(resourceSlice1).UID(resourceSlice1).
NodeOwnerReferences(ownerName, string(nodeUID)).NodeName(ownerName).
@ -683,6 +683,11 @@ func TestControllerSyncPool(t *testing.T) {
// from informer event handler).
actualState := queue.State()
actualState.Later = nil
// If we let the event handler schedule syncs immediately, then that also races
// and then Ready cannot be compared either.
if test.syncDelay != nil && *test.syncDelay == 0 {
actualState.Ready = nil
}
var expectState workqueue.MockState[string]
assert.Equal(t, expectState, actualState)
})