fix AbstractThreadPoolTest from merge from 9.4.x
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
This commit is contained in:
parent
65dbcc7c86
commit
423777ed02
|
@ -18,11 +18,7 @@
|
||||||
|
|
||||||
package org.eclipse.jetty.util.thread;
|
package org.eclipse.jetty.util.thread;
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
|
|
||||||
import org.eclipse.jetty.util.ProcessorUtils;
|
import org.eclipse.jetty.util.ProcessorUtils;
|
||||||
import org.eclipse.jetty.util.component.ContainerLifeCycle;
|
|
||||||
import org.eclipse.jetty.util.component.LifeCycle;
|
|
||||||
import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool;
|
import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool;
|
||||||
import org.hamcrest.Matchers;
|
import org.hamcrest.Matchers;
|
||||||
import org.junit.jupiter.api.AfterAll;
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
@ -30,8 +26,6 @@ import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
|
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
public abstract class AbstractThreadPoolTest
|
public abstract class AbstractThreadPoolTest
|
||||||
|
@ -93,26 +87,4 @@ public abstract class AbstractThreadPoolTest
|
||||||
|
|
||||||
assertThat(pool.getMaxThreads(), Matchers.is(3));
|
assertThat(pool.getMaxThreads(), Matchers.is(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testJoinWithStopTimeout()
|
|
||||||
{
|
|
||||||
// ThreadPool must be an implement ContainerLifeCycle for this test to be valid.
|
|
||||||
SizedThreadPool threadPool = newPool(3);
|
|
||||||
if (!(threadPool instanceof ContainerLifeCycle))
|
|
||||||
return;
|
|
||||||
|
|
||||||
final long stopTimeout = 100;
|
|
||||||
((ContainerLifeCycle)threadPool).setStopTimeout(100);
|
|
||||||
LifeCycle.start(threadPool);
|
|
||||||
|
|
||||||
// Verify that join does not timeout after waiting twice the stopTimeout.
|
|
||||||
assertThrows(Throwable.class, () ->
|
|
||||||
assertTimeoutPreemptively(Duration.ofMillis(stopTimeout * 2), threadPool::join)
|
|
||||||
);
|
|
||||||
|
|
||||||
// After stopping the ThreadPool join should unblock.
|
|
||||||
LifeCycle.stop(threadPool);
|
|
||||||
assertTimeoutPreemptively(Duration.ofMillis(stopTimeout), threadPool::join);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,13 @@
|
||||||
package org.eclipse.jetty.util.thread;
|
package org.eclipse.jetty.util.thread;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
|
import java.time.Duration;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import org.eclipse.jetty.logging.StacklessLogging;
|
import org.eclipse.jetty.logging.StacklessLogging;
|
||||||
|
import org.eclipse.jetty.util.component.LifeCycle;
|
||||||
import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool;
|
import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -36,6 +38,7 @@ import static org.hamcrest.Matchers.lessThan;
|
||||||
import static org.hamcrest.core.StringContains.containsString;
|
import static org.hamcrest.core.StringContains.containsString;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
public class QueuedThreadPoolTest extends AbstractThreadPoolTest
|
public class QueuedThreadPoolTest extends AbstractThreadPoolTest
|
||||||
|
@ -753,6 +756,24 @@ public class QueuedThreadPoolTest extends AbstractThreadPoolTest
|
||||||
assertThrows(IllegalArgumentException.class, () -> new QueuedThreadPool(4, 8));
|
assertThrows(IllegalArgumentException.class, () -> new QueuedThreadPool(4, 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJoinWithStopTimeout() throws Exception
|
||||||
|
{
|
||||||
|
final long stopTimeout = 100;
|
||||||
|
QueuedThreadPool threadPool = new QueuedThreadPool();
|
||||||
|
threadPool.setStopTimeout(100);
|
||||||
|
threadPool.start();
|
||||||
|
|
||||||
|
// Verify that join does not timeout after waiting twice the stopTimeout.
|
||||||
|
assertThrows(Throwable.class, () ->
|
||||||
|
assertTimeoutPreemptively(Duration.ofMillis(stopTimeout * 2), threadPool::join)
|
||||||
|
);
|
||||||
|
|
||||||
|
// After stopping the ThreadPool join should unblock.
|
||||||
|
LifeCycle.stop(threadPool);
|
||||||
|
assertTimeoutPreemptively(Duration.ofMillis(stopTimeout), threadPool::join);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDump() throws Exception
|
public void testDump() throws Exception
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue