From cfba381bc1adb664f10c4ad7920838e89de2453e Mon Sep 17 00:00:00 2001 From: sarveshkaushal Date: Mon, 28 Sep 2026 17:23:59 -0700 Subject: [PATCH] fix: removing Thread.sleep() from SharedProcessorTest --- .../informer/cache/SharedProcessorTest.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/util/src/test/java/io/kubernetes/client/informer/cache/SharedProcessorTest.java b/util/src/test/java/io/kubernetes/client/informer/cache/SharedProcessorTest.java index 12a5ccbbbd..df04556aa8 100644 --- a/util/src/test/java/io/kubernetes/client/informer/cache/SharedProcessorTest.java +++ b/util/src/test/java/io/kubernetes/client/informer/cache/SharedProcessorTest.java @@ -21,10 +21,16 @@ import java.time.Duration; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + import org.junit.jupiter.api.Test; class SharedProcessorTest { + private static final long TIMEOUT_SECONDS = 10; + @Test void listenerAddition() throws InterruptedException { @@ -67,23 +73,32 @@ void shutdownGracefully() throws InterruptedException { SharedProcessor sharedProcessor = new SharedProcessor<>(Executors.newCachedThreadPool(), Duration.ofSeconds(5)); TestWorker slowWorker = new TestWorker<>(null, 0); - final boolean[] interrupted = {false}; - CountDownLatch latch = new CountDownLatch(1); + AtomicBoolean interrupted = new AtomicBoolean(); + Semaphore workerStarted = new Semaphore(0); + Semaphore blockWorker = new Semaphore(0); + Semaphore workerFinished = new Semaphore(0); slowWorker.setTask( () -> { + workerStarted.release(); try { - // sleep 10s so that it could be interrupted by shutdownNow() - Thread.sleep(10 * 1000); + blockWorker.acquire(); } catch (InterruptedException e) { - interrupted[0] = true; + interrupted.set(true); + Thread.currentThread().interrupt(); } finally { - latch.countDown(); + workerFinished.release(); } }); sharedProcessor.addAndStartListener(slowWorker); - sharedProcessor.stop(); - latch.await(); - assertThat(interrupted[0]).isTrue(); + boolean started = workerStarted.tryAcquire(TIMEOUT_SECONDS, TimeUnit.SECONDS); + try { + assertThat(started).as("worker started").isTrue(); + } finally { + sharedProcessor.stop(); + } + assertThat(workerFinished.tryAcquire(TIMEOUT_SECONDS, TimeUnit.SECONDS)) + .as("worker finished") + .isTrue(); } private static class ExpectingNoticationHandler