From fb288e3ce164e86f590768d8dce92152e9ea0bbe Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 18 Dec 2025 09:54:56 -0500 Subject: [PATCH] Make TestReplaceEvents deterministic for delete event comparison --- .../client-go/tools/cache/controller_test.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/client-go/tools/cache/controller_test.go b/staging/src/k8s.io/client-go/tools/cache/controller_test.go index 9bddef67d1e..eb96021ff36 100644 --- a/staging/src/k8s.io/client-go/tools/cache/controller_test.go +++ b/staging/src/k8s.io/client-go/tools/cache/controller_test.go @@ -1013,7 +1013,9 @@ func testReplaceEvents(t *testing.T, ctx context.Context, fifo Queue, m *eventRe items := sortItemsByKey(store.List(), DeletionHandlingMetaNamespaceKeyFunc) assert.Equal(t, tc.replacedItems, items) - assert.Equal(t, tc.expectedHistory, m.getHistory()) + // synthetic delete events from a replace are not ordered, sort by key to make the test deterministic + history := sortDeleteEventsByKey(m.getHistory()) + assert.Equal(t, tc.expectedHistory, history) }) } } @@ -1128,3 +1130,17 @@ func sortItemsByKey(items []interface{}, keyFunc KeyFunc) []interface{} { }) return items } + +func sortDeleteEventsByKey(events []eventRecord) []eventRecord { + sort.Slice(events, func(i, j int) bool { + eventI := events[i] + eventJ := events[j] + // sort delete events for different objects by key + if eventI.Action == "delete" && eventJ.Action == "delete" && eventI.Key != eventJ.Key { + return eventI.Key < eventJ.Key + } + // keep existing order otherwise + return i < j + }) + return events +}