This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit fbd6fc64147d345ff570676be0d9e2bf83b8f20e Author: LanKhuat <[email protected]> AuthorDate: Wed Apr 1 02:18:22 2020 +0700 JAMES-3117 Add PeriodicalHealthChecksConfiguration/Test --- .../james/PeriodicalHealthChecksConfiguration.java | 20 +++++++++++---- .../PeriodicalHealthChecksConfigurationTest.java | 29 ++++++++-------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/PeriodicalHealthChecksConfiguration.java b/server/container/guice/guice-common/src/main/java/org/apache/james/PeriodicalHealthChecksConfiguration.java index 444ef4e..beac23b 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/PeriodicalHealthChecksConfiguration.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/PeriodicalHealthChecksConfiguration.java @@ -23,6 +23,7 @@ import java.time.Duration; import java.util.Objects; import org.apache.commons.configuration2.Configuration; +import org.apache.commons.lang3.StringUtils; import org.apache.james.util.DurationParser; import com.google.common.annotations.VisibleForTesting; @@ -31,9 +32,10 @@ import com.google.common.base.Preconditions; public class PeriodicalHealthChecksConfiguration { private static final String HEALTH_CHECK_PERIOD = "healthcheck.period"; - private static final String DEFAULT_HEALTH_CHECK_PERIOD = "60s"; + private static final Duration DEFAULT_HEALTH_CHECK_PERIOD = Duration.ofSeconds(60); + private static final Duration MINIMAL_HEALTH_CHECK_PERIOD = Duration.ofSeconds(10); public static final PeriodicalHealthChecksConfiguration DEFAULT_CONFIGURATION = builder() - .period(DurationParser.parse(DEFAULT_HEALTH_CHECK_PERIOD)) + .period(DEFAULT_HEALTH_CHECK_PERIOD) .build(); public interface Builder { @@ -51,8 +53,8 @@ public class PeriodicalHealthChecksConfiguration { } PeriodicalHealthChecksConfiguration build() { - Preconditions.checkArgument(!period.isNegative(), "'period' must be positive"); - Preconditions.checkArgument(!period.isZero(), "'period' must be greater than zero"); + Preconditions.checkArgument(period.compareTo(MINIMAL_HEALTH_CHECK_PERIOD) >= 0, + "'period' must be equal or greater than " + MINIMAL_HEALTH_CHECK_PERIOD.toMillis() + "ms"); return new PeriodicalHealthChecksConfiguration(period); } @@ -65,7 +67,7 @@ public class PeriodicalHealthChecksConfiguration { public static PeriodicalHealthChecksConfiguration from(Configuration configuration) { return builder() - .period(DurationParser.parse(configuration.getString(HEALTH_CHECK_PERIOD, DEFAULT_HEALTH_CHECK_PERIOD))) + .period(getDurationFromConfiguration(configuration)) .build(); } @@ -94,4 +96,12 @@ public class PeriodicalHealthChecksConfiguration { public final int hashCode() { return Objects.hash(period); } + + private static Duration getDurationFromConfiguration(Configuration configuration) { + if (StringUtils.isEmpty(configuration.getString(HEALTH_CHECK_PERIOD))) { + return DEFAULT_HEALTH_CHECK_PERIOD; + } + + return DurationParser.parse(configuration.getString(HEALTH_CHECK_PERIOD)); + } } \ No newline at end of file diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/PeriodicalHealthChecksConfigurationTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/PeriodicalHealthChecksConfigurationTest.java index 10fdcf5..6fc8cb7 100644 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/PeriodicalHealthChecksConfigurationTest.java +++ b/server/container/guice/guice-common/src/test/java/org/apache/james/PeriodicalHealthChecksConfigurationTest.java @@ -34,7 +34,7 @@ import nl.jqno.equalsverifier.EqualsVerifier; public class PeriodicalHealthChecksConfigurationTest { private static final String HEALTH_CHECK_PERIOD = "healthcheck.period"; - private static final String PERIOD = "5s"; + private static final String PERIOD = "10s"; private static final String EMPTY_STRING = ""; private static final String RANDOM_STRING = "abcdsfsfs"; @@ -61,17 +61,9 @@ public class PeriodicalHealthChecksConfigurationTest { } @Test - void builderShouldThrowWhenPeriodIsNegative() { + void builderShouldThrowWhenPeriodIsLessThanMinimalValue() { assertThatThrownBy(() -> PeriodicalHealthChecksConfiguration.builder() - .period(DurationParser.parse("-" + PERIOD)) - .build()) - .isInstanceOf(IllegalArgumentException.class); - } - - @Test - void builderShouldThrowWhenPeriodIsZero() { - assertThatThrownBy(() -> PeriodicalHealthChecksConfiguration.builder() - .period(Duration.ZERO) + .period(Duration.ofSeconds(1)) .build()) .isInstanceOf(IllegalArgumentException.class); } @@ -86,17 +78,18 @@ public class PeriodicalHealthChecksConfigurationTest { } @Test - void fromShouldThrowWhenPeriodIsEmpty() { + void fromShouldReturnDefaultConfigurationWhenPeriodIsMissing() { PropertiesConfiguration configuration = new PropertiesConfiguration(); - configuration.addProperty(HEALTH_CHECK_PERIOD, EMPTY_STRING); - assertThatThrownBy(() -> PeriodicalHealthChecksConfiguration.from(configuration)) - .isInstanceOf(NumberFormatException.class); + assertThat(PeriodicalHealthChecksConfiguration.from(configuration)).isEqualTo(PeriodicalHealthChecksConfiguration.builder() + .period(DEFAULT_CONFIGURATION.getPeriod()) + .build()); } @Test - void fromShouldReturnConfigurationWithDefaultValueWhenPeriodIsMissing() { + void fromShouldReturnDefaultConfigurationWhenPeriodIsNull() { PropertiesConfiguration configuration = new PropertiesConfiguration(); + configuration.addProperty(HEALTH_CHECK_PERIOD, null); assertThat(PeriodicalHealthChecksConfiguration.from(configuration)).isEqualTo(PeriodicalHealthChecksConfiguration.builder() .period(DEFAULT_CONFIGURATION.getPeriod()) @@ -104,9 +97,9 @@ public class PeriodicalHealthChecksConfigurationTest { } @Test - void fromShouldReturnConfigurationWithDefaultValueWhenPeriodIsNull() { + void fromShouldReturnDefaultConfigurationWhenPeriodIsEmpty() { PropertiesConfiguration configuration = new PropertiesConfiguration(); - configuration.addProperty(HEALTH_CHECK_PERIOD, null); + configuration.addProperty(HEALTH_CHECK_PERIOD, EMPTY_STRING); assertThat(PeriodicalHealthChecksConfiguration.from(configuration)).isEqualTo(PeriodicalHealthChecksConfiguration.builder() .period(DEFAULT_CONFIGURATION.getPeriod()) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
