]> git.feebdaed.xyz Git - 0xmirror/kubernetes.git/commitdiff
Make TestReplaceEvents deterministic for delete event comparison
authorJordan Liggitt <liggitt@google.com>
Thu, 18 Dec 2025 14:54:56 +0000 (09:54 -0500)
committerJordan Liggitt <liggitt@google.com>
Thu, 18 Dec 2025 14:54:56 +0000 (09:54 -0500)
staging/src/k8s.io/client-go/tools/cache/controller_test.go

index 9bddef67d1eb682def9b46a97543ab99911dba59..eb96021ff3612c70c6eb63f788e0c27bc9207607 100644 (file)
@@ -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
+}