From: Sébastien Lesaint Date: Thu, 6 Jul 2017 09:49:59 +0000 (+0200) Subject: SONAR-9525 do not allow value > 10 from WorkerCountProvider X-Git-Tag: 6.6-RC1~888 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=15a91cd610798c913821f9a2bfbed33a32d058fa;p=sonarqube.git SONAR-9525 do not allow value > 10 from WorkerCountProvider --- 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 3f3433e3c08..75cd049f9a5 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 @@ -55,7 +55,7 @@ public class CeConfigurationImpl implements CeConfiguration, Startable { public CeConfigurationImpl(WorkerCountProvider workerCountProvider) { int value = workerCountProvider.get(); - if (value < 1) { + if (value < DEFAULT_WORKER_COUNT || value > MAX_WORKER_THREAD_COUNT) { throw parsingError(value); } this.workerThreadCount = MAX_WORKER_THREAD_COUNT; @@ -64,7 +64,7 @@ public class CeConfigurationImpl implements CeConfiguration, Startable { private static MessageException parsingError(int value) { return MessageException.of(format( - "Worker count '%s' is invalid. It must an integer strictly greater than 0.", + "Worker count '%s' is invalid. It must an integer strictly greater than 0 and less or equal to 10", value)); } 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 36c84903eab..2a8ac541d5c 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 @@ -46,7 +46,7 @@ public class CeConfigurationImplTest { @Test public void getWorkerCount_returns_value_returned_by_WorkerCountProvider_when_available() { - int value = 1 + Math.abs(new Random().nextInt()); + int value = 1 + Math.abs(new Random().nextInt(10)); workerCountProvider.set(value); assertThat(new CeConfigurationImpl(workerCountProvider).getWorkerCount()).isEqualTo(value); @@ -56,7 +56,7 @@ public class CeConfigurationImplTest { 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); } @@ -79,10 +79,20 @@ public class CeConfigurationImplTest { new CeConfigurationImpl(workerCountProvider); } + @Test + public void constructor_throws_MessageException_when_WorkerCountProvider_returns_more_then_10() { + int value = 10 + abs(new Random().nextInt()); + workerCountProvider.set(value); + + expectMessageException(value); + + new CeConfigurationImpl(workerCountProvider); + } + private void expectMessageException(int value) { expectedException.expect(MessageException.class); expectedException.expectMessage("Worker count '" + value + "' is invalid. " + - "It must an integer strictly greater than 0"); + "It must an integer strictly greater than 0 and less or equal to 10"); } @Test