diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2017-07-06 11:42:00 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2017-07-17 10:52:47 +0200 |
commit | 06455792b2a4fa601dee1f4c085e0949cc7dd98e (patch) | |
tree | b8786ffd096704d17eecc5fd90638d0e6f4af424 | |
parent | 373c5888e080843bf252bb4f776e8c17c4b667e2 (diff) | |
download | sonarqube-06455792b2a4fa601dee1f4c085e0949cc7dd98e.tar.gz sonarqube-06455792b2a4fa601dee1f4c085e0949cc7dd98e.zip |
SONAR-9525 add CeConfiguration#getWorkerMaxCount
4 files changed, 40 insertions, 1 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfiguration.java b/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfiguration.java index 393ec1d6f52..b719e969a93 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfiguration.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfiguration.java @@ -22,7 +22,12 @@ package org.sonar.ce.configuration; public interface CeConfiguration { /** - * The number of workers to process CeTasks concurrently. + * The maximum number of workers to process CeTasks concurrently, integer strictly greater than 0. + */ + int getWorkerMaxCount(); + + /** + * The number of workers to process CeTasks concurrently, integer strictly greater than 0. */ int getWorkerCount(); diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfigurationImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfigurationImpl.java index 94d0abf9c55..3f3433e3c08 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfigurationImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfigurationImpl.java @@ -35,6 +35,8 @@ import static java.lang.String.format; public class CeConfigurationImpl implements CeConfiguration, Startable { private static final Logger LOG = Loggers.get(CeConfigurationImpl.class); + private static final int DEFAULT_WORKER_THREAD_COUNT = 1; + private static final int MAX_WORKER_THREAD_COUNT = 10; private static final int DEFAULT_WORKER_COUNT = 1; // 2 seconds private static final long DEFAULT_QUEUE_POLLING_DELAY = 2 * 1000L; @@ -43,9 +45,11 @@ public class CeConfigurationImpl implements CeConfiguration, Startable { // 10 minutes private static final long CANCEL_WORN_OUTS_DELAY = 10; + private final int workerThreadCount; private final int workerCount; public CeConfigurationImpl() { + this.workerThreadCount = DEFAULT_WORKER_THREAD_COUNT; this.workerCount = DEFAULT_WORKER_COUNT; } @@ -54,6 +58,7 @@ public class CeConfigurationImpl implements CeConfiguration, Startable { if (value < 1) { throw parsingError(value); } + this.workerThreadCount = MAX_WORKER_THREAD_COUNT; this.workerCount = value; } @@ -76,6 +81,11 @@ public class CeConfigurationImpl implements CeConfiguration, Startable { } @Override + public int getWorkerMaxCount() { + return workerThreadCount; + } + + @Override public int getWorkerCount() { return workerCount; } diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationImplTest.java index 654c09f68aa..36c84903eab 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationImplTest.java @@ -40,6 +40,11 @@ public class CeConfigurationImplTest { } @Test + public void getWorkerThreadCount_returns_1_when_there_is_no_WorkerCountProvider() { + assertThat(new CeConfigurationImpl().getWorkerMaxCount()).isEqualTo(1); + } + + @Test public void getWorkerCount_returns_value_returned_by_WorkerCountProvider_when_available() { int value = 1 + Math.abs(new Random().nextInt()); workerCountProvider.set(value); @@ -48,6 +53,14 @@ public class CeConfigurationImplTest { } @Test + public void getWorkerThreadCount_returns_10_whichever_the_value_returned_by_WorkerCountProvider() { + int value = 1 + Math.abs(new Random().nextInt(10)); + workerCountProvider.set(value); + + assertThat(new CeConfigurationImpl(workerCountProvider).getWorkerMaxCount()).isEqualTo(10); + } + + @Test public void constructor_throws_MessageException_when_WorkerCountProvider_returns_0() { workerCountProvider.set(0); diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationRule.java b/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationRule.java index 61e22fbbdc8..b936ea73137 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationRule.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationRule.java @@ -27,12 +27,23 @@ import static com.google.common.base.Preconditions.checkArgument; * Mutable implementation of {@link CeConfiguration} as {@link org.junit.Rule}. */ public class CeConfigurationRule extends ExternalResource implements CeConfiguration { + private int workerThreadCount = 1; private int workerCount = 1; private long queuePollingDelay = 2 * 1000L; private long cancelWornOutsInitialDelay = 1L; private long cancelWornOutsDelay = 10L; @Override + public int getWorkerMaxCount() { + return workerThreadCount; + } + + public void setWorkerThreadCount(int workerThreadCount) { + checkArgument(workerThreadCount >= 1, "worker thread count must be >= 1"); + this.workerThreadCount = workerThreadCount; + } + + @Override public int getWorkerCount() { return workerCount; } |