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 c777788400117bf88bb873af600c32688c229148 Author: Rémi Kowalski <[email protected]> AuthorDate: Tue May 28 14:58:25 2019 +0200 JAMES-2774 define short rabbitmq timeout for tests --- .../backend/rabbitmq/RabbitMQConfiguration.java | 74 +++++++++++++- .../rabbitmq/RabbitMQConnectionFactory.java | 4 + .../james/backend/rabbitmq/DockerRabbitMQ.java | 8 ++ .../rabbitmq/RabbitMQConfigurationTest.java | 108 +++++++++++++++++++++ .../james/mailbox/events/RabbitMQEventBusTest.java | 1 - 5 files changed, 191 insertions(+), 4 deletions(-) diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java index 41b4dfc..6f95b51 100644 --- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java +++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java @@ -98,12 +98,20 @@ public class RabbitMQConfiguration { public static class Builder { static final int DEFAULT_MAX_RETRIES = 7; static final int DEFAULT_MIN_DELAY = 3000; + static final int DEFAULT_CONNECTION_TIMEOUT = 60_000; + static final int DEFAULT_CHANNEL_RPC_TIMEOUT = 60_000; + static final int DEFAULT_HANDSHAKE_TIMEOUT = 10_000; + static final int DEFAULT_SHUTDOWN_TIMEOUT = 10_000; private final URI amqpUri; private final URI managementUri; private final ManagementCredentials managementCredentials; private Optional<Integer> maxRetries; private Optional<Integer> minDelayInMs; + private Optional<Integer> connectionTimeoutInMs; + private Optional<Integer> channelRpcTimeoutInMs; + private Optional<Integer> handshakeTimeoutInMs; + private Optional<Integer> shutdownTimeoutInMs; private Builder(URI amqpUri, URI managementUri, ManagementCredentials managementCredentials) { this.amqpUri = amqpUri; @@ -111,6 +119,10 @@ public class RabbitMQConfiguration { this.managementCredentials = managementCredentials; this.maxRetries = Optional.empty(); this.minDelayInMs = Optional.empty(); + this.connectionTimeoutInMs = Optional.empty(); + this.channelRpcTimeoutInMs = Optional.empty(); + this.handshakeTimeoutInMs = Optional.empty(); + this.shutdownTimeoutInMs = Optional.empty(); } public Builder maxRetries(int maxRetries) { @@ -123,6 +135,26 @@ public class RabbitMQConfiguration { return this; } + public Builder connectionTimeoutInMs(int connectionTimeout) { + this.connectionTimeoutInMs = Optional.of(connectionTimeout); + return this; + } + + public Builder channelRpcTimeoutInMs(int channelRpcTimeout) { + this.channelRpcTimeoutInMs = Optional.of(channelRpcTimeout); + return this; + } + + public Builder handshakeTimeoutInMs(int handshakeTimeout) { + this.handshakeTimeoutInMs = Optional.of(handshakeTimeout); + return this; + } + + public Builder shutdownTimeoutInMs(int shutdownTimeout) { + this.shutdownTimeoutInMs = Optional.of(shutdownTimeout); + return this; + } + public RabbitMQConfiguration build() { Preconditions.checkNotNull(amqpUri, "'amqpUri' should not be null"); Preconditions.checkNotNull(managementUri, "'managementUri' should not be null"); @@ -131,7 +163,12 @@ public class RabbitMQConfiguration { managementUri, managementCredentials, maxRetries.orElse(DEFAULT_MAX_RETRIES), - minDelayInMs.orElse(DEFAULT_MIN_DELAY)); + minDelayInMs.orElse(DEFAULT_MIN_DELAY), + connectionTimeoutInMs.orElse(DEFAULT_CONNECTION_TIMEOUT), + channelRpcTimeoutInMs.orElse(DEFAULT_CHANNEL_RPC_TIMEOUT), + handshakeTimeoutInMs.orElse(DEFAULT_HANDSHAKE_TIMEOUT), + shutdownTimeoutInMs.orElse(DEFAULT_SHUTDOWN_TIMEOUT) + ); } } @@ -171,15 +208,25 @@ public class RabbitMQConfiguration { private final URI managementUri; private final int maxRetries; private final int minDelayInMs; + private final int connectionTimeoutInMs; + private final int channelRpcTimeoutInMs; + private final int handshakeTimeoutInMs; + private final int shutdownTimeoutInMs; + private final ManagementCredentials managementCredentials; - private RabbitMQConfiguration(URI uri, URI managementUri, ManagementCredentials managementCredentials, int maxRetries, int minDelayInMs) { + private RabbitMQConfiguration(URI uri, URI managementUri, ManagementCredentials managementCredentials, int maxRetries, int minDelayInMs, + int connectionTimeoutInMs, int channelRpcTimeoutInMs, int handshakeTimeoutInMs, int shutdownTimeoutInMs) { this.uri = uri; this.managementUri = managementUri; this.managementCredentials = managementCredentials; this.maxRetries = maxRetries; this.minDelayInMs = minDelayInMs; + this.connectionTimeoutInMs = connectionTimeoutInMs; + this.channelRpcTimeoutInMs = channelRpcTimeoutInMs; + this.handshakeTimeoutInMs = handshakeTimeoutInMs; + this.shutdownTimeoutInMs = shutdownTimeoutInMs; } public URI getUri() { @@ -198,6 +245,22 @@ public class RabbitMQConfiguration { return minDelayInMs; } + public int getConnectionTimeoutInMs() { + return connectionTimeoutInMs; + } + + public int getChannelRpcTimeoutInMs() { + return channelRpcTimeoutInMs; + } + + public int getHandshakeTimeoutInMs() { + return handshakeTimeoutInMs; + } + + public int getShutdownTimeoutInMs() { + return shutdownTimeoutInMs; + } + public ManagementCredentials getManagementCredentials() { return managementCredentials; } @@ -211,6 +274,10 @@ public class RabbitMQConfiguration { && Objects.equals(this.managementUri, that.managementUri) && Objects.equals(this.maxRetries, that.maxRetries) && Objects.equals(this.minDelayInMs, that.minDelayInMs) + && Objects.equals(this.connectionTimeoutInMs, that.connectionTimeoutInMs) + && Objects.equals(this.channelRpcTimeoutInMs, that.channelRpcTimeoutInMs) + && Objects.equals(this.handshakeTimeoutInMs, that.handshakeTimeoutInMs) + && Objects.equals(this.shutdownTimeoutInMs, that.shutdownTimeoutInMs) && Objects.equals(this.managementCredentials, that.managementCredentials); } return false; @@ -218,6 +285,7 @@ public class RabbitMQConfiguration { @Override public final int hashCode() { - return Objects.hash(uri, managementUri, maxRetries, minDelayInMs, managementCredentials); + return Objects.hash(uri, managementUri, maxRetries, minDelayInMs, connectionTimeoutInMs, + channelRpcTimeoutInMs, handshakeTimeoutInMs, shutdownTimeoutInMs, managementCredentials); } } diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java index 1f0e329..4c67175 100644 --- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java +++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java @@ -43,6 +43,10 @@ public class RabbitMQConnectionFactory { try { ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setUri(rabbitMQConfiguration.getUri()); + connectionFactory.setHandshakeTimeout(rabbitMQConfiguration.getHandshakeTimeoutInMs()); + connectionFactory.setShutdownTimeout(rabbitMQConfiguration.getShutdownTimeoutInMs()); + connectionFactory.setChannelRpcTimeout(rabbitMQConfiguration.getChannelRpcTimeoutInMs()); + connectionFactory.setConnectionTimeout(rabbitMQConfiguration.getConnectionTimeoutInMs()); return connectionFactory; } catch (Exception e) { throw new RuntimeException(e); diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java index d5f420e..6cec712 100644 --- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java +++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java @@ -48,6 +48,10 @@ public class DockerRabbitMQ { private static final int MAX_THREE_RETRIES = 3; private static final int MIN_DELAY_OF_ONE_HUNDRED_MILLISECONDS = 100; + private static final int CONNECTION_TIMEOUT_OF_ONE_SECOND = 1000; + private static final int CHANNEL_RPC_TIMEOUT_OF_ONE_SECOND = 1000; + private static final int HANDSHAKE_TIMEOUT_OF_ONE_SECOND = 1000; + private static final int SHUTDOWN_TIMEOUT_OF_ONE_SECOND = 1000; private static final String DEFAULT_RABBIT_HOST_NAME_PREFIX = "my-rabbit"; private static final String DEFAULT_RABBIT_NODE_NAME_PREFIX = "rabbit"; private static final int DEFAULT_RABBITMQ_PORT = 5672; @@ -247,6 +251,10 @@ public class DockerRabbitMQ { .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) .maxRetries(MAX_THREE_RETRIES) .minDelayInMs(MIN_DELAY_OF_ONE_HUNDRED_MILLISECONDS) + .connectionTimeoutInMs(CONNECTION_TIMEOUT_OF_ONE_SECOND) + .channelRpcTimeoutInMs(CHANNEL_RPC_TIMEOUT_OF_ONE_SECOND) + .handshakeTimeoutInMs(HANDSHAKE_TIMEOUT_OF_ONE_SECOND) + .shutdownTimeoutInMs(SHUTDOWN_TIMEOUT_OF_ONE_SECOND) .build(); return new RabbitMQConnectionFactory(rabbitMQConfiguration); diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java index dbefc59..3ddc1fb 100644 --- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java +++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java @@ -226,6 +226,114 @@ class RabbitMQConfigurationTest { .isEqualTo(minDelay); } + @Test + void connectionTimeoutShouldEqualsDefaultValueWhenNotGiven() throws URISyntaxException { + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .build(); + + assertThat(rabbitMQConfiguration.getConnectionTimeoutInMs()) + .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_CONNECTION_TIMEOUT); + } + + @Test + void connectionTimeoutShouldEqualsCustomValueWhenGiven() throws URISyntaxException { + int connectionTimeout = 1; + + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .connectionTimeoutInMs(connectionTimeout) + .build(); + + assertThat(rabbitMQConfiguration.getConnectionTimeoutInMs()) + .isEqualTo(connectionTimeout); + } + + @Test + void channelRpcTimeoutShouldEqualsDefaultValueWhenNotGiven() throws URISyntaxException { + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .build(); + + assertThat(rabbitMQConfiguration.getChannelRpcTimeoutInMs()) + .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_CHANNEL_RPC_TIMEOUT); + } + + @Test + void channelRpcTimeoutShouldEqualsCustomValueWhenGiven() throws URISyntaxException { + int channelRpcTimeout = 1; + + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .channelRpcTimeoutInMs(channelRpcTimeout) + .build(); + + assertThat(rabbitMQConfiguration.getChannelRpcTimeoutInMs()) + .isEqualTo(channelRpcTimeout); + } + + @Test + void handshakeTimeoutShouldEqualsDefaultValueWhenNotGiven() throws URISyntaxException { + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .build(); + + assertThat(rabbitMQConfiguration.getHandshakeTimeoutInMs()) + .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_HANDSHAKE_TIMEOUT); + } + + @Test + void handshakeTimeoutShouldEqualsCustomValueWhenGiven() throws URISyntaxException { + int handshakeTimeout = 1; + + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .handshakeTimeoutInMs(handshakeTimeout) + .build(); + + assertThat(rabbitMQConfiguration.getHandshakeTimeoutInMs()) + .isEqualTo(handshakeTimeout); + } + + @Test + void shutdownTimeoutShouldEqualsDefaultValueWhenNotGiven() throws URISyntaxException { + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .build(); + + assertThat(rabbitMQConfiguration.getShutdownTimeoutInMs()) + .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_SHUTDOWN_TIMEOUT); + } + + @Test + void shutdownTimeoutShouldEqualsCustomValueWhenGiven() throws URISyntaxException { + int shutdownTimeout = 1; + + RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder() + .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672")) + .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/")) + .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL) + .shutdownTimeoutInMs(shutdownTimeout) + .build(); + + assertThat(rabbitMQConfiguration.getShutdownTimeoutInMs()) + .isEqualTo(shutdownTimeout); + } + @Nested class ManagementCredentialsTest { @Test diff --git a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java index bf35dd6..45213fe 100644 --- a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java +++ b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java @@ -65,7 +65,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.stubbing.Answer; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
