You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/05/31 05:09:01 UTC
[james-project] 03/03: JAMES-2774 define short rabbitmq timeout for
tests
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 <rk...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org