summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-07-06 11:42:00 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2017-07-17 10:52:47 +0200
commit06455792b2a4fa601dee1f4c085e0949cc7dd98e (patch)
treeb8786ffd096704d17eecc5fd90638d0e6f4af424
parent373c5888e080843bf252bb4f776e8c17c4b667e2 (diff)
downloadsonarqube-06455792b2a4fa601dee1f4c085e0949cc7dd98e.tar.gz
sonarqube-06455792b2a4fa601dee1f4c085e0949cc7dd98e.zip
SONAR-9525 add CeConfiguration#getWorkerMaxCount
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfiguration.java7
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/configuration/CeConfigurationImpl.java10
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationImplTest.java13
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/configuration/CeConfigurationRule.java11
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;
}