summaryrefslogtreecommitdiffstats
path: root/container-core/src/test/java/com/yahoo/container/handler
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-04-25 18:57:12 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-04-25 18:57:12 +0000
commitc7b890535a3009e52e7227b883f2c9a16e59a740 (patch)
treebb68bdc548c6715a495e5aa910ea8e45ff1469ad /container-core/src/test/java/com/yahoo/container/handler
parent35decca41db6b9a44b24b6f7501c84d159ebd6a7 (diff)
Let size of thread pool and Q follow number of cores on the machine where it is running.
If auto detected num worker threads will use number of #cores * 4, quesize will use #numWorkers * 4. No changes of the default value in this commit.
Diffstat (limited to 'container-core/src/test/java/com/yahoo/container/handler')
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/ThreadPoolProviderTestCase.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/container-core/src/test/java/com/yahoo/container/handler/ThreadPoolProviderTestCase.java b/container-core/src/test/java/com/yahoo/container/handler/ThreadPoolProviderTestCase.java
index 918863f6dda..761ed40763c 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/ThreadPoolProviderTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/ThreadPoolProviderTestCase.java
@@ -5,6 +5,7 @@ import static org.junit.Assert.fail;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ThreadPoolExecutor;
import com.yahoo.container.protect.ProcessTerminator;
import org.junit.Ignore;
@@ -58,6 +59,39 @@ public class ThreadPoolProviderTestCase {
fail("Pool did not reject tasks after shutdown.");
}
+ private ThreadPoolExecutor createPool(int maxThreads, int queueSize) {
+ ThreadpoolConfig config = new ThreadpoolConfig(new ThreadpoolConfig.Builder().maxthreads(maxThreads).queueSize(queueSize));
+ ThreadPoolProvider provider = new ThreadPoolProvider(config, Mockito.mock(Metric.class));
+ ThreadPoolProvider.ExecutorServiceWrapper wrapper = (ThreadPoolProvider.ExecutorServiceWrapper) provider.get();
+ ThreadPoolProvider.WorkerCompletionTimingThreadPoolExecutor executor = (ThreadPoolProvider.WorkerCompletionTimingThreadPoolExecutor)wrapper.delegate();
+ return executor;
+ }
+
+ @Test
+ public void testThatThreadPoolSizeFollowsConfig() {
+ ThreadPoolExecutor executor = createPool(3, 9);
+ assertEquals(3, executor.getMaximumPoolSize());
+ assertEquals(9, executor.getQueue().remainingCapacity());
+ }
+ @Test
+ public void testThatThreadPoolSizeAutoDetected() {
+ ThreadPoolExecutor executor = createPool(0, 0);
+ assertEquals(Runtime.getRuntime().availableProcessors()*4, executor.getMaximumPoolSize());
+ assertEquals(0, executor.getQueue().remainingCapacity());
+ }
+ @Test
+ public void testThatQueueSizeAutoDetected() {
+ ThreadPoolExecutor executor = createPool(3, -1);
+ assertEquals(3, executor.getMaximumPoolSize());
+ assertEquals(executor.getMaximumPoolSize()*4, executor.getQueue().remainingCapacity());
+ }
+ @Test
+ public void testThatThreadPoolSizeAndQueueSizeAutoDetected() {
+ ThreadPoolExecutor executor = createPool(0, -1);
+ assertEquals(Runtime.getRuntime().availableProcessors()*4, executor.getMaximumPoolSize());
+ assertEquals(executor.getMaximumPoolSize()*4, executor.getQueue().remainingCapacity());
+ }
+
private class FlipIt implements Runnable {
public final Receiver<Boolean> didItRun = new Receiver<>();