diff --git a/util/src/test/java/io/kubernetes/client/informer/cache/DeltaFIFOTest.java b/util/src/test/java/io/kubernetes/client/informer/cache/DeltaFIFOTest.java index 39b7d0fba5..f08083b34c 100644 --- a/util/src/test/java/io/kubernetes/client/informer/cache/DeltaFIFOTest.java +++ b/util/src/test/java/io/kubernetes/client/informer/cache/DeltaFIFOTest.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Deque; import java.util.LinkedList; +import java.util.List; import org.apache.commons.lang3.tuple.MutablePair; import org.junit.Rule; import org.junit.Test; @@ -165,4 +166,39 @@ public void testDeltaFIFOReplaceWithDeleteDeltaIn() throws InterruptedException assertEquals(newPod, deltas.getFirst().getRight()); }); } + + @Test + public void testSyncObjectWithIdenticalListThenPopShouldWork() throws InterruptedException { + Cache cache = new Cache(); + DeltaFIFO deltaFIFO = new DeltaFIFO(Caches::deletionHandlingMetaNamespaceKeyFunc, cache); + String rv = "1234"; + List pods1 = + Arrays.asList( + new V1Pod() + .metadata(new V1ObjectMeta().namespace("default").name("foo1").resourceVersion(rv)), + new V1Pod() + .metadata( + new V1ObjectMeta().namespace("default").name("foo2").resourceVersion(rv))); + deltaFIFO.replace(pods1, ""); + + List pods2 = + Arrays.asList( + new V1Pod() + .metadata(new V1ObjectMeta().namespace("default").name("foo1").resourceVersion(rv)), + new V1Pod() + .metadata( + new V1ObjectMeta().namespace("default").name("foo2").resourceVersion(rv))); + deltaFIFO.replace(pods2, ""); + + deltaFIFO.pop( + deltas -> { + assertEquals(2, deltas.size()); + }); + deltaFIFO.pop( + deltas -> { + assertEquals(2, deltas.size()); + }); + + assertEquals(0, deltaFIFO.listKeys().size()); + } }