Merge pull request #32016 from TerryHowe/fix/flaky-waitfordelete-timeout

test(kube): fix flaky WaitForDelete timing in status wait tests
main
George Jenkins 9 hours ago committed by GitHub
commit bd061e0cd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1680,8 +1680,6 @@ func TestMethodContextOverridesGeneralContext(t *testing.T) {
t.Run("method-specific context overrides general context for WaitForDelete", func(t *testing.T) {
t.Parallel()
c := newTestClient(t)
timeout := time.Second
timeUntilPodDelete := time.Millisecond * 500
fakeClient := dynamicfake.NewSimpleDynamicClient(scheme.Scheme)
fakeMapper := testutil.NewFakeRESTMapper(
v1.SchemeGroupVersion.WithKind("Pod"),
@ -1698,27 +1696,14 @@ func TestMethodContextOverridesGeneralContext(t *testing.T) {
waitForDeleteCtx: context.Background(), // Not cancelled - should be used
}
// Use a non-existent resource: WaitForDelete should return immediately since
// the pod is already in the desired "deleted" state.
// This also validates context selection: if generalCtx (cancelled) were
// incorrectly used instead of waitForDeleteCtx, the watch context would be
// immediately cancelled and the call would return a context error.
objs := getRuntimeObjFromManifests(t, []string{podCurrentManifest})
for _, obj := range objs {
u := obj.(*unstructured.Unstructured)
gvr := getGVR(t, fakeMapper, u)
err := fakeClient.Tracker().Create(gvr, u, u.GetNamespace())
require.NoError(t, err)
}
// Schedule deletion
for _, obj := range objs {
u := obj.(*unstructured.Unstructured)
gvr := getGVR(t, fakeMapper, u)
go func(gvr schema.GroupVersionResource, u *unstructured.Unstructured) {
time.Sleep(timeUntilPodDelete)
err := fakeClient.Tracker().Delete(gvr, u.GetNamespace(), u.GetName())
assert.NoError(t, err)
}(gvr, u)
}
resourceList := getResourceListFromRuntimeObjs(t, c, objs)
err := sw.WaitForDelete(resourceList, timeout)
err := sw.WaitForDelete(resourceList, time.Second)
// Should succeed because method context is used and it's not cancelled
assert.NoError(t, err)
})

Loading…
Cancel
Save