diff --git a/spring/src/test/java/io/kubernetes/client/spring/extended/controller/KubernetesReconcilerCreatorTest.java b/spring/src/test/java/io/kubernetes/client/spring/extended/controller/KubernetesReconcilerCreatorTest.java index 15f6991da3..3e74fd7880 100644 --- a/spring/src/test/java/io/kubernetes/client/spring/extended/controller/KubernetesReconcilerCreatorTest.java +++ b/spring/src/test/java/io/kubernetes/client/spring/extended/controller/KubernetesReconcilerCreatorTest.java @@ -47,6 +47,8 @@ import io.kubernetes.client.spring.extended.controller.factory.KubernetesControllerFactory; import io.kubernetes.client.util.ClientBuilder; import java.util.LinkedList; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; import java.util.function.Function; import jakarta.annotation.Resource; import org.apache.commons.lang3.tuple.MutablePair; @@ -61,6 +63,9 @@ @SpringBootTest(classes = {KubernetesReconcilerCreatorTest.App.class}) class KubernetesReconcilerCreatorTest { + private static final Semaphore REQUEST_ENQUEUED = new Semaphore(0); + private static final long TIMEOUT_SECONDS = 10; + @RegisterExtension static WireMockExtension apiServer = WireMockExtension.newInstance().options(WireMockConfiguration.options().port(8189)).build(); @@ -172,6 +177,7 @@ public CustomWorkQueueKeyFunc(WorkQueue workQueue) { @Override public Request apply(KubernetesObject item) { workQueue.add(new Request("foo")); + REQUEST_ENQUEUED.release(); return null; } } @@ -182,23 +188,27 @@ void simplePodController() throws InterruptedException { assertThat(testReconciler).isNotNull(); sharedInformerFactory.startAllRegisteredInformers(); - - ((DefaultSharedIndexInformer) testReconciler.podInformer) - .handleDeltas( - new LinkedList>() { - { - add( - new MutablePair<>( - DeltaFIFO.DeltaType.Added, - new V1Pod().metadata(new V1ObjectMeta().namespace("a").name("b")))); - } - }); - - Thread.sleep(500); - - WorkQueue workQueue = ((DefaultController) testController).getWorkQueue(); - assertThat(workQueue.length()).isEqualTo(1); - assertThat(workQueue.get().getName()).isEqualTo("foo"); - sharedInformerFactory.stopAllRegisteredInformers(); + try { + ((DefaultSharedIndexInformer) testReconciler.podInformer) + .handleDeltas( + new LinkedList>() { + { + add( + new MutablePair<>( + DeltaFIFO.DeltaType.Added, + new V1Pod().metadata(new V1ObjectMeta().namespace("a").name("b")))); + } + }); + + assertThat(REQUEST_ENQUEUED.tryAcquire(TIMEOUT_SECONDS, TimeUnit.SECONDS)) + .as("pod event added a request to the controller work queue") + .isTrue(); + + WorkQueue workQueue = ((DefaultController) testController).getWorkQueue(); + assertThat(workQueue.length()).isEqualTo(1); + assertThat(workQueue.get().getName()).isEqualTo("foo"); + } finally { + sharedInformerFactory.stopAllRegisteredInformers(); + } } }