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 2018/09/14 03:19:25 UTC
[01/13] james-project git commit: JAMES-2540 Update Mail Queue
Grafana board
Repository: james-project
Updated Branches:
refs/heads/master ff3698dbc -> 6e8d222ac
JAMES-2540 Update Mail Queue Grafana board
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/808e04aa
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/808e04aa
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/808e04aa
Branch: refs/heads/master
Commit: 808e04aac9db1321d0834f34ba80886a3a680ca8
Parents: ff3698d
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Sep 11 09:06:06 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:16:46 2018 +0700
----------------------------------------------------------------------
grafana-reporting/MailQueue-1490071879988.json | 244 ++++++++++++++++++--
1 file changed, 227 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/808e04aa/grafana-reporting/MailQueue-1490071879988.json
----------------------------------------------------------------------
diff --git a/grafana-reporting/MailQueue-1490071879988.json b/grafana-reporting/MailQueue-1490071879988.json
index f96fa66..2a12b96 100644
--- a/grafana-reporting/MailQueue-1490071879988.json
+++ b/grafana-reporting/MailQueue-1490071879988.json
@@ -42,7 +42,7 @@
"rows": [
{
"collapse": false,
- "height": 253,
+ "height": 386,
"panels": [
{
"aliasColors": {},
@@ -68,7 +68,7 @@
"points": false,
"renderer": "flot",
"seriesOverrides": [],
- "span": 3,
+ "span": 2,
"stack": false,
"steppedLine": false,
"targets": [
@@ -186,7 +186,7 @@
"yaxis": 2
}
],
- "span": 3,
+ "span": 2,
"stack": false,
"steppedLine": false,
"targets": [
@@ -267,15 +267,120 @@
"bars": false,
"datasource": "${DS_JAMES_ES}",
"fill": 1,
+ "id": 35,
+ "legend": {
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Derivative Max count",
+ "yaxis": 2
+ }
+ ],
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "bucketAggs": [
+ {
+ "field": "@timestamp",
+ "id": "2",
+ "settings": {
+ "interval": "1m",
+ "min_doc_count": 0,
+ "trimEdges": 0
+ },
+ "type": "date_histogram"
+ }
+ ],
+ "dsType": "elasticsearch",
+ "metrics": [
+ {
+ "field": "count",
+ "id": "1",
+ "meta": {},
+ "pipelineAgg": "3",
+ "settings": {},
+ "type": "max"
+ },
+ {
+ "field": "1",
+ "id": "3",
+ "meta": {},
+ "pipelineAgg": "1",
+ "settings": {},
+ "type": "derivative"
+ }
+ ],
+ "query": "name:\"dequeuedMail:spool\"",
+ "refId": "A",
+ "timeField": "@timestamp"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "dequeuedMail:spool",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "opm",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_JAMES_ES}",
+ "fill": 1,
"id": 27,
"legend": {
- "avg": false,
+ "avg": true,
"current": false,
- "max": false,
+ "max": true,
"min": false,
"show": true,
"total": false,
- "values": false
+ "values": true
},
"lines": true,
"linewidth": 1,
@@ -382,13 +487,13 @@
"fill": 1,
"id": 33,
"legend": {
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
"show": true,
"total": false,
- "values": true
+ "values": false
},
"lines": true,
"linewidth": 1,
@@ -424,7 +529,7 @@
"dsType": "elasticsearch",
"metrics": [
{
- "field": "count",
+ "field": "value",
"id": "1",
"meta": {},
"pipelineAgg": "3",
@@ -490,7 +595,7 @@
},
{
"collapse": false,
- "height": 275,
+ "height": 318,
"panels": [
{
"aliasColors": {},
@@ -516,7 +621,7 @@
"points": false,
"renderer": "flot",
"seriesOverrides": [],
- "span": 3,
+ "span": 2,
"stack": false,
"steppedLine": false,
"targets": [
@@ -634,7 +739,7 @@
"yaxis": 2
}
],
- "span": 3,
+ "span": 2,
"stack": false,
"steppedLine": false,
"targets": [
@@ -715,6 +820,111 @@
"bars": false,
"datasource": "${DS_JAMES_ES}",
"fill": 1,
+ "id": 36,
+ "legend": {
+ "avg": true,
+ "current": true,
+ "max": true,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": true
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [
+ {
+ "alias": "Derivative Max count",
+ "yaxis": 2
+ }
+ ],
+ "span": 2,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "bucketAggs": [
+ {
+ "field": "@timestamp",
+ "id": "2",
+ "settings": {
+ "interval": "1m",
+ "min_doc_count": 0,
+ "trimEdges": 0
+ },
+ "type": "date_histogram"
+ }
+ ],
+ "dsType": "elasticsearch",
+ "metrics": [
+ {
+ "field": "count",
+ "id": "1",
+ "meta": {},
+ "pipelineAgg": "3",
+ "settings": {},
+ "type": "max"
+ },
+ {
+ "field": "1",
+ "id": "3",
+ "meta": {},
+ "pipelineAgg": "1",
+ "settings": {},
+ "type": "derivative"
+ }
+ ],
+ "query": "name:\"dequeuedMail:outgoing\"",
+ "refId": "A",
+ "timeField": "@timestamp"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "dequeuedMails:outgoing",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "none",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "opm",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "datasource": "${DS_JAMES_ES}",
+ "fill": 1,
"id": 34,
"legend": {
"avg": false,
@@ -872,7 +1082,7 @@
"dsType": "elasticsearch",
"metrics": [
{
- "field": "count",
+ "field": "value",
"id": "1",
"meta": {},
"pipelineAgg": "3",
@@ -1099,5 +1309,5 @@
},
"timezone": "browser",
"title": "MailQueue",
- "version": 23
+ "version": 26
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[12/13] james-project git commit: JAMES-2544 Use registered
extensions for Cassandra event sourcing systems
Posted by bt...@apache.org.
JAMES-2544 Use registered extensions for Cassandra event sourcing systems
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6e8d222a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6e8d222a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6e8d222a
Branch: refs/heads/master
Commit: 6e8d222aca6366f1b90b4374e693f6752e66c5da
Parents: df6fe4f
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Sep 13 15:22:51 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:18:33 2018 +0700
----------------------------------------------------------------------
.../CassandraEventSourcingSystemTest.java | 7 +-
.../cassandra/CassandraEventStoreExtension.java | 60 ++++++++++++++-
.../cassandra/CassandraEventStoreTest.java | 7 +-
.../CassandraGenericEventStoreExtension.java | 80 --------------------
.../listeners/CassandraEventStoreExtension.java | 31 --------
...draQuotaMailingListenersIntegrationTest.java | 10 ++-
...draEventSourcingFilteringManagementTest.java | 9 ++-
.../filtering/CassandraFilteringExtension.java | 30 --------
8 files changed, 75 insertions(+), 159 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java
index e538b93..92c5401 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java
@@ -20,9 +20,10 @@
package org.apache.james.eventsourcing.eventstore.cassandra;
import org.apache.james.eventsourcing.EventSourcingSystemTest;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(CassandraEventStoreExtension.class)
public class CassandraEventSourcingSystemTest implements EventSourcingSystemTest {
-
+ @RegisterExtension
+ static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
index b913ef8..52ce427 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
@@ -19,12 +19,64 @@
package org.apache.james.eventsourcing.eventstore.cassandra;
-import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules;
+import java.util.Arrays;
+import java.util.Set;
+
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
+import org.apache.james.eventsourcing.eventstore.EventStore;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.jupiter.api.extension.ParameterResolver;
import com.google.common.collect.ImmutableSet;
-public class CassandraEventStoreExtension extends CassandraGenericEventStoreExtension {
- public CassandraEventStoreExtension() {
- super(ImmutableSet.of(TestEventDTOModules.TEST_TYPE));
+public class CassandraEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
+ private final Set<EventDTOModule> modules;
+ private CassandraClusterExtension cassandra;
+ private EventStoreDao eventStoreDao;
+
+ public CassandraEventStoreExtension(EventDTOModule... modules) {
+ this.modules = Arrays.stream(modules).collect(ImmutableSet.toImmutableSet());
+ this.cassandra = new CassandraClusterExtension(CassandraEventStoreModule.MODULE);
+ }
+
+ @Override
+ public void beforeAll(ExtensionContext context) {
+ cassandra.beforeAll(context);
+ }
+
+ @Override
+ public void afterAll(ExtensionContext context) {
+ cassandra.afterAll(context);
+ }
+
+ @Override
+ public void beforeEach(ExtensionContext context) {
+ JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules);
+
+ eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ jsonEventSerializer);
+ }
+
+ @Override
+ public void afterEach(ExtensionContext context) {
+ cassandra.afterEach(context);
+ }
+
+ @Override
+ public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ return (parameterContext.getParameter().getType() == EventStore.class);
+ }
+
+ @Override
+ public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ return new CassandraEventStore(eventStoreDao);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java
index 6d240c3..f40eac1 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java
@@ -20,9 +20,10 @@
package org.apache.james.eventsourcing.eventstore.cassandra;
import org.apache.james.eventsourcing.eventstore.EventStoreTest;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(CassandraEventStoreExtension.class)
class CassandraEventStoreTest implements EventStoreTest {
-
+ @RegisterExtension
+ static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
deleted file mode 100644
index 56eee29..0000000
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.eventsourcing.eventstore.cassandra;
-
-import java.util.Set;
-
-import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
-import org.apache.james.eventsourcing.eventstore.EventStore;
-import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
-import org.junit.jupiter.api.extension.AfterAllCallback;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeAllCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.ParameterContext;
-import org.junit.jupiter.api.extension.ParameterResolutionException;
-import org.junit.jupiter.api.extension.ParameterResolver;
-
-public class CassandraGenericEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
- @SuppressWarnings("rawtypes")
- private final Set<EventDTOModule> modules;
- private CassandraClusterExtension cassandra;
- private EventStoreDao eventStoreDao;
-
- public CassandraGenericEventStoreExtension(@SuppressWarnings("rawtypes") Set<EventDTOModule> modules) {
- this.modules = modules;
- cassandra = new CassandraClusterExtension(CassandraEventStoreModule.MODULE);
- }
-
- @Override
- public void beforeAll(ExtensionContext context) {
- cassandra.beforeAll(context);
- }
-
- @Override
- public void afterAll(ExtensionContext context) {
- cassandra.afterAll(context);
- }
-
- @Override
- public void beforeEach(ExtensionContext context) {
- JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules);
-
- eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
- jsonEventSerializer);
- }
-
- @Override
- public void afterEach(ExtensionContext context) {
- cassandra.afterEach(context);
- }
-
- @Override
- public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
- return (parameterContext.getParameter().getType() == EventStore.class);
- }
-
- @Override
- public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
- return new CassandraEventStore(eventStoreDao);
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java
deleted file mode 100644
index 0218c78..0000000
--- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraEventStoreExtension.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.quota.cassandra.listeners;
-
-import org.apache.james.eventsourcing.eventstore.cassandra.CassandraGenericEventStoreExtension;
-import org.apache.james.mailbox.quota.cassandra.dto.QuotaEventDTOModules;
-
-import com.google.common.collect.ImmutableSet;
-
-public class CassandraEventStoreExtension extends CassandraGenericEventStoreExtension {
- public CassandraEventStoreExtension() {
- super(ImmutableSet.of(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE));
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java
index 7835898..8864507 100644
--- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java
+++ b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java
@@ -19,10 +19,12 @@
package org.apache.james.mailbox.quota.cassandra.listeners;
+import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension;
+import org.apache.james.mailbox.quota.cassandra.dto.QuotaEventDTOModules;
import org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdMailingIntegrationTest;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(CassandraEventStoreExtension.class)
-public class CassandraQuotaMailingListenersIntegrationTest implements QuotaThresholdMailingIntegrationTest {
+import org.junit.jupiter.api.extension.RegisterExtension;
+class CassandraQuotaMailingListenersIntegrationTest implements QuotaThresholdMailingIntegrationTest {
+ @RegisterExtension
+ static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java
index 61cf8e8..68be998 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java
@@ -19,10 +19,11 @@
package org.apache.james.jmap.cassandra.filtering;
+import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension;
import org.apache.james.jmap.api.filtering.FilteringManagementContract;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(CassandraFilteringExtension.class)
-public class CassandraEventSourcingFilteringManagementTest implements FilteringManagementContract {
+import org.junit.jupiter.api.extension.RegisterExtension;
+class CassandraEventSourcingFilteringManagementTest implements FilteringManagementContract {
+ @RegisterExtension
+ static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/6e8d222a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java
deleted file mode 100644
index 300bd5d..0000000
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraFilteringExtension.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.jmap.cassandra.filtering;
-
-import org.apache.james.eventsourcing.eventstore.cassandra.CassandraGenericEventStoreExtension;
-
-import com.google.common.collect.ImmutableSet;
-
-public class CassandraFilteringExtension extends CassandraGenericEventStoreExtension {
- public CassandraFilteringExtension() {
- super(ImmutableSet.of(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED));
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[11/13] james-project git commit: JAMES-2544 Use CassandraCluster
extension where applicable
Posted by bt...@apache.org.
JAMES-2544 Use CassandraCluster extension where applicable
This also include simple migrations to JUNIT 5 for cassandra tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/df6fe4fb
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/df6fe4fb
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/df6fe4fb
Branch: refs/heads/master
Commit: df6fe4fb2e3c5c194aabc444d0da7de71d67574d
Parents: 7023a29
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Sep 13 15:15:24 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:18:33 2018 +0700
----------------------------------------------------------------------
.../init/CassandraTypeProviderTest.java | 45 ++++----
.../backends/cassandra/utils/PaggingTest.java | 51 +++------
.../versions/CassandraSchemaVersionDAOTest.java | 44 ++-----
.../CassandraGenericEventStoreExtension.java | 26 ++---
...istributedMailboxDelegatingListenerTest.java | 41 ++-----
...CassandraMailboxPathRegistrerMapperTest.java | 54 +++------
.../cassandra/mail/CassandraACLMapperTest.java | 69 +++++------
.../mail/CassandraApplicableFlagDAOTest.java | 57 ++++------
.../mail/CassandraAttachmentDAOTest.java | 52 +++------
.../mail/CassandraAttachmentDAOV2Test.java | 44 ++-----
.../mail/CassandraAttachmentFallbackTest.java | 61 ++++------
.../mail/CassandraAttachmentOwnerDAOTest.java | 52 +++------
.../mail/CassandraDeletedMessageDAOTest.java | 77 +++++--------
.../mail/CassandraFirstUnseenDAOTest.java | 66 ++++-------
.../mail/CassandraIndexTableHandlerTest.java | 114 ++++++++-----------
.../mail/CassandraMailboxCounterDAOTest.java | 77 +++++--------
.../cassandra/mail/CassandraMailboxDAOTest.java | 70 +++++-------
.../CassandraMailboxMapperConcurrencyTest.java | 45 +++-----
.../mail/CassandraMailboxPathDAOImplTest.java | 15 +--
.../mail/CassandraMailboxPathDAOTest.java | 55 +++------
.../mail/CassandraMailboxPathV2DAOTest.java | 3 +-
.../mail/CassandraMailboxRecentDAOTest.java | 59 ++++------
.../cassandra/mail/CassandraMessageDAOTest.java | 68 +++++------
.../mail/CassandraMessageIdDAOTest.java | 74 +++++-------
.../CassandraMessageIdToImapUidDAOTest.java | 74 +++++-------
.../mail/CassandraModSeqProviderTest.java | 49 +++-----
.../mail/CassandraUidProviderTest.java | 50 +++-----
.../mail/CassandraUserMailboxRightsDAOTest.java | 46 +++-----
.../AttachmentMessageIdCreationTest.java | 57 ++++------
.../migration/AttachmentV2MigrationTest.java | 67 ++++-------
.../migration/MailboxPathV2MigrationTest.java | 54 ++++-----
.../blob/cassandra/CassandraBlobsDAOTest.java | 34 ++----
...assandraMailRepositoryUrlStoreExtension.java | 20 ++--
.../sieve/cassandra/CassandraSieveDAOTest.java | 83 +++++---------
.../cassandra/CassandraSieveQuotaDAOTest.java | 65 ++++-------
.../CassandraMailRepositoryCountDAOTest.java | 43 +++----
.../CassandraMailRepositoryKeysDAOTest.java | 30 +----
.../CassandraMailRepositoryMailDAOTest.java | 40 ++-----
.../cassandra/CassandraMailRepositoryTest.java | 36 ++----
39 files changed, 707 insertions(+), 1360 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
index 8de8baa..1bf149c 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
@@ -23,58 +23,51 @@ import static com.datastax.driver.core.DataType.text;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-public class CassandraTypeProviderTest {
-
+class CassandraTypeProviderTest {
private static final String TYPE_NAME = "typename";
private static final String PROPERTY = "property";
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+ public static final CassandraModule.Impl MODULE = CassandraModule.type(TYPE_NAME)
+ .statement(statement -> statement.addColumn(PROPERTY, text()))
+ .build();
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(MODULE);
private CassandraCluster cassandra;
- private CassandraModule module;
- @Before
- public void setUp() {
- module = CassandraModule.type(TYPE_NAME)
- .statement(statement -> statement.addColumn(PROPERTY, text()))
- .build();
- cassandra = CassandraCluster.create(module, cassandraServer.getHost());
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
+ this.cassandra = cassandra;
cassandra.getTypesProvider();
}
- @After
- public void tearDown() {
- cassandra.close();
- }
-
@Test
- public void getDefinedUserTypeShouldNotReturnNullNorFailWhenTypeIsDefined() {
+ void getDefinedUserTypeShouldNotReturnNullNorFailWhenTypeIsDefined() {
assertThat(cassandra.getTypesProvider().getDefinedUserType(TYPE_NAME))
.isNotNull();
}
@Test
- public void initializeTypesShouldCreateTheTypes() {
+ void initializeTypesShouldCreateTheTypes() {
cassandra.getConf().execute(SchemaBuilder.dropType(TYPE_NAME));
- new CassandraTypesCreator(module, cassandra.getConf()).initializeTypes();
- CassandraTypesProvider cassandraTypesProviderTest = new CassandraTypesProvider(module, cassandra.getConf());
+ new CassandraTypesCreator(MODULE, cassandra.getConf()).initializeTypes();
+ CassandraTypesProvider cassandraTypesProviderTest = new CassandraTypesProvider(MODULE, cassandra.getConf());
assertThat(cassandraTypesProviderTest.getDefinedUserType(TYPE_NAME))
.isNotNull();
}
@Test
- public void initializeTypesShouldNotFailIfCalledTwice() {
- new CassandraTypesProvider(module, cassandra.getConf());
+ void initializeTypesShouldNotFailIfCalledTwice() {
+ new CassandraTypesProvider(MODULE, cassandra.getConf());
assertThat(cassandra.getTypesProvider().getDefinedUserType(TYPE_NAME))
.isNotNull();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
index f9049f9..3395e20 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
@@ -28,59 +28,40 @@ import java.util.UUID;
import java.util.stream.IntStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.util.CompletableFutureUtil;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.datastax.driver.core.DataType;
import com.datastax.driver.core.utils.UUIDs;
-public class PaggingTest {
+class PaggingTest {
private static final String TABLE_NAME = "test";
private static final String ID = "id";
private static final String CLUSTERING = "clustering";
private static final UUID UUID = UUIDs.timeBased();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
- private CassandraAsyncExecutor executor;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraModule.table(TABLE_NAME)
+ .comment("Testing table")
+ .statement(statement -> statement
+ .addPartitionKey(ID, DataType.timeuuid())
+ .addClusteringColumn(CLUSTERING, DataType.bigint()))
+ .build());
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.table(TABLE_NAME)
- .comment("Testing table")
- .statement(statement -> statement
- .addPartitionKey(ID, DataType.timeuuid())
- .addClusteringColumn(CLUSTERING, DataType.bigint()))
- .build();
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
+ private CassandraAsyncExecutor executor;
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
executor = new CassandraAsyncExecutor(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void pagingShouldWork() {
+ void pagingShouldWork() {
int fetchSize = 200;
int size = 2 * fetchSize + 50;
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
index 7db01dd..e5a0b8b 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
@@ -24,51 +24,31 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraSchemaVersionDAOTest {
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+class CassandraSchemaVersionDAOTest {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraSchemaVersionModule.MODULE);
private CassandraSchemaVersionDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraSchemaVersionModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraSchemaVersionDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getCurrentSchemaVersionShouldReturnEmptyWhenTableIsEmpty() {
+ void getCurrentSchemaVersionShouldReturnEmptyWhenTableIsEmpty() {
assertThat(testee.getCurrentSchemaVersion().join())
.isEqualTo(Optional.empty());
}
@Test
- public void getCurrentSchemaVersionShouldReturnVersionPresentInTheTable() {
+ void getCurrentSchemaVersionShouldReturnVersionPresentInTheTable() {
SchemaVersion version = new SchemaVersion(42);
testee.updateVersion(version).join();
@@ -77,7 +57,7 @@ public class CassandraSchemaVersionDAOTest {
}
@Test
- public void getCurrentSchemaVersionShouldBeIdempotent() {
+ void getCurrentSchemaVersionShouldBeIdempotent() {
SchemaVersion version = new SchemaVersion(42);
testee.updateVersion(version.next()).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
index 2f2650b..56eee29 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
@@ -21,9 +21,7 @@ package org.apache.james.eventsourcing.eventstore.cassandra;
import java.util.Set;
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
-import org.apache.james.backends.cassandra.DockerCassandraExtension.DockerCassandra;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.eventsourcing.eventstore.EventStore;
import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
@@ -37,43 +35,37 @@ import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;
public class CassandraGenericEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
- private final DockerCassandraExtension dockerCassandraExtension;
@SuppressWarnings("rawtypes")
private final Set<EventDTOModule> modules;
- private CassandraCluster cassandra;
- private DockerCassandra dockerCassandra;
+ private CassandraClusterExtension cassandra;
private EventStoreDao eventStoreDao;
public CassandraGenericEventStoreExtension(@SuppressWarnings("rawtypes") Set<EventDTOModule> modules) {
this.modules = modules;
- dockerCassandraExtension = new DockerCassandraExtension();
+ cassandra = new CassandraClusterExtension(CassandraEventStoreModule.MODULE);
}
@Override
- public void beforeAll(ExtensionContext context) throws Exception {
- dockerCassandraExtension.beforeAll(context);
- dockerCassandra = dockerCassandraExtension.getDockerCassandra();
- cassandra = CassandraCluster.create(
- CassandraEventStoreModule.MODULE, dockerCassandra.getHost());
+ public void beforeAll(ExtensionContext context) {
+ cassandra.beforeAll(context);
}
@Override
- public void afterAll(ExtensionContext context) throws Exception {
- cassandra.closeCluster();
- dockerCassandraExtension.afterAll(context);
+ public void afterAll(ExtensionContext context) {
+ cassandra.afterAll(context);
}
@Override
public void beforeEach(ExtensionContext context) {
JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules);
- eventStoreDao = new EventStoreDao(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
jsonEventSerializer);
}
@Override
public void afterEach(ExtensionContext context) {
- cassandra.clearTables();
+ cassandra.afterEach(context);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index b1563d1..e5150b7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -24,7 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.TreeMap;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
@@ -46,12 +46,9 @@ import org.apache.james.mailbox.store.json.event.MailboxConverter;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.util.EventCollector;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableMap;
@@ -60,7 +57,7 @@ import com.google.common.collect.ImmutableMap;
We simulate communications using message queues in memory and check the Listener works as intended.
*/
-public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
+class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
public static final MailboxPath MAILBOX_PATH_1 = MailboxPath.forUser("user", "mbx");
public static final MailboxPath MAILBOX_PATH_2 = MailboxPath.forUser("user", "mbx.other");
@@ -68,9 +65,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
public static final int SCHEDULER_PERIOD_IN_S = 20;
public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.of();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraRegistrationModule.MODULE);
private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener1;
private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener2;
@@ -83,13 +79,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
private EventCollector eventCollectorOnce3;
private MailboxSession mailboxSession;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraRegistrationModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) throws Exception {
PublisherReceiver publisherReceiver = new PublisherReceiver();
DistantMailboxPathRegister mailboxPathRegister1 = new DistantMailboxPathRegister(
new CassandraMailboxPathRegisterMapper(
@@ -145,18 +136,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
registeredDelegatingMailboxListener3.addListener(MAILBOX_PATH_2, eventCollectorMailbox3, mailboxSession);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void mailboxEventListenersShouldBeTriggeredIfRegistered() throws Exception {
+ void mailboxEventListenersShouldBeTriggeredIfRegistered() {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
TreeMap<MessageUid, MessageMetaData> uids = new TreeMap<>();
@@ -170,7 +151,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
}
@Test
- public void onceEventListenersShouldBeTriggeredOnceAcrossTheCluster() {
+ void onceEventListenersShouldBeTriggeredOnceAcrossTheCluster() {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
TreeMap<MessageUid, MessageMetaData> uids = new TreeMap<>();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
index 9a412ea..213006a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
@@ -24,23 +24,18 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.concurrent.TimeUnit;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraRegistrationModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.publisher.Topic;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraMailboxPathRegistrerMapperTest {
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+class CassandraMailboxPathRegistrerMapperTest {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraRegistrationModule.MODULE);
private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", "user", "name");
private static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("namespace2", "user2", "name2");
@@ -50,76 +45,61 @@ public class CassandraMailboxPathRegistrerMapperTest {
private CassandraMailboxPathRegisterMapper mapper;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraRegistrationModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
cassandra.getTypesProvider(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getTopicsShouldReturnEmptyResultByDefault() {
+ void getTopicsShouldReturnEmptyResultByDefault() {
assertThat(mapper.getTopics(MAILBOX_PATH)).isEmpty();
}
@Test
- public void doRegisterShouldWork() {
+ void doRegisterShouldWork() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
assertThat(mapper.getTopics(MAILBOX_PATH)).containsOnly(TOPIC);
}
@Test
- public void doRegisterShouldBeMailboxPathSpecific() {
+ void doRegisterShouldBeMailboxPathSpecific() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
assertThat(mapper.getTopics(MAILBOX_PATH_2)).isEmpty();
}
@Test
- public void doRegisterShouldAllowMultipleTopics() {
+ void doRegisterShouldAllowMultipleTopics() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
mapper.doRegister(MAILBOX_PATH, TOPIC_2);
assertThat(mapper.getTopics(MAILBOX_PATH)).containsOnly(TOPIC, TOPIC_2);
}
@Test
- public void doUnRegisterShouldWork() {
+ void doUnRegisterShouldWork() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
mapper.doUnRegister(MAILBOX_PATH, TOPIC);
assertThat(mapper.getTopics(MAILBOX_PATH)).isEmpty();
}
@Test
- public void doUnregisterShouldBeMailboxSpecific() {
+ void doUnregisterShouldBeMailboxSpecific() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
mapper.doUnRegister(MAILBOX_PATH_2, TOPIC);
assertThat(mapper.getTopics(MAILBOX_PATH)).containsOnly(TOPIC);
}
@Test
- public void doUnregisterShouldBeTopicSpecific() {
+ void doUnregisterShouldBeTopicSpecific() {
mapper.doRegister(MAILBOX_PATH, TOPIC);
mapper.doUnRegister(MAILBOX_PATH, TOPIC_2);
assertThat(mapper.getTopics(MAILBOX_PATH)).containsOnly(TOPIC);
}
@Test
- public void entriesShouldExpire() throws Exception {
+ void entriesShouldExpire(CassandraCluster cassandra) throws Exception {
int verySmallTimeoutInSecond = 1;
mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
cassandra.getTypesProvider(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index b38c212..cdea6fa 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -40,48 +40,35 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxACL;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraACLMapperTest {
+class CassandraACLMapperTest {
- public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("464765a0-e4e7-11e4-aba4-710c1de3782b"));
+ static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("464765a0-e4e7-11e4-aba4-710c1de3782b"));
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAclModule.MODULE);
private CassandraACLMapper cassandraACLMapper;
private ExecutorService executor;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraAclModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
cassandraACLMapper = GuiceUtils.testInjector(cassandra)
.getInstance(CassandraACLMapper.class);
executor = Executors.newFixedThreadPool(2);
}
- @After
- public void tearDown() {
+ @AfterEach
+ void tearDown() {
executor.shutdownNow();
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
}
@Test
- public void retrieveACLWhenInvalidInBaseShouldReturnEmptyACL() throws Exception {
+ void retrieveACLWhenInvalidInBaseShouldReturnEmptyACL(CassandraCluster cassandra) {
cassandra.getConf().execute(
insertInto(CassandraACLTable.TABLE_NAME)
.value(CassandraACLTable.ID, MAILBOX_ID.asUuid())
@@ -92,12 +79,12 @@ public class CassandraACLMapperTest {
}
@Test
- public void retrieveACLWhenNoACLStoredShouldReturnEmptyACL() {
+ void retrieveACLWhenNoACLStoredShouldReturnEmptyACL() {
assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(MailboxACL.EMPTY);
}
@Test
- public void addACLWhenNoneStoredShouldReturnUpdatedACL() throws Exception {
+ void addACLWhenNoneStoredShouldReturnUpdatedACL() throws Exception {
MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -109,7 +96,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void modifyACLWhenStoredShouldReturnUpdatedACL() throws MailboxException {
+ void modifyACLWhenStoredShouldReturnUpdatedACL() throws MailboxException {
MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -122,7 +109,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void removeWhenStoredShouldReturnUpdatedACL() throws MailboxException {
+ void removeWhenStoredShouldReturnUpdatedACL() throws MailboxException {
MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -133,7 +120,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void replaceForSingleKeyWithNullRightsWhenSingleKeyStoredShouldReturnEmptyACL() throws MailboxException {
+ void replaceForSingleKeyWithNullRightsWhenSingleKeyStoredShouldReturnEmptyACL() throws MailboxException {
MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -144,7 +131,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void replaceWhenNotStoredShouldUpdateACLEntry() throws MailboxException {
+ void replaceWhenNotStoredShouldUpdateACLEntry() throws MailboxException {
MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -154,7 +141,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void updateInvalidACLShouldBeBasedOnEmptyACL() throws Exception {
+ void updateInvalidACLShouldBeBasedOnEmptyACL(CassandraCluster cassandra) throws Exception {
cassandra.getConf().execute(
insertInto(CassandraACLTable.TABLE_NAME)
.value(CassandraACLTable.ID, MAILBOX_ID.asUuid())
@@ -169,13 +156,13 @@ public class CassandraACLMapperTest {
}
@Test
- public void twoConcurrentUpdatesWhenNoACEStoredShouldReturnACEWithTwoEntries() throws Exception {
+ void twoConcurrentUpdatesWhenNoACEStoredShouldReturnACEWithTwoEntries(CassandraCluster cassandra) throws Exception {
CountDownLatch countDownLatch = new CountDownLatch(2);
MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
MailboxACL.EntryKey keyAlice = new MailboxACL.EntryKey("alice", MailboxACL.NameType.user, false);
- Future<Boolean> future1 = performACLUpdateInExecutor(executor, keyBob, rights, countDownLatch::countDown);
- Future<Boolean> future2 = performACLUpdateInExecutor(executor, keyAlice, rights, countDownLatch::countDown);
+ Future<Boolean> future1 = performACLUpdateInExecutor(cassandra, executor, keyBob, rights, countDownLatch::countDown);
+ Future<Boolean> future2 = performACLUpdateInExecutor(cassandra, executor, keyAlice, rights, countDownLatch::countDown);
awaitAll(future1, future2);
assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join())
@@ -183,7 +170,7 @@ public class CassandraACLMapperTest {
}
@Test
- public void twoConcurrentUpdatesWhenStoredShouldReturnACEWithTwoEntries() throws Exception {
+ void twoConcurrentUpdatesWhenStoredShouldReturnACEWithTwoEntries(CassandraCluster cassandra) throws Exception {
CountDownLatch countDownLatch = new CountDownLatch(2);
MailboxACL.EntryKey keyBenwa = new MailboxACL.EntryKey("benwa", MailboxACL.NameType.user, false);
MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -191,8 +178,8 @@ public class CassandraACLMapperTest {
MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
MailboxACL.EntryKey keyAlice = new MailboxACL.EntryKey("alice", MailboxACL.NameType.user, false);
- Future<Boolean> future1 = performACLUpdateInExecutor(executor, keyBob, rights, countDownLatch::countDown);
- Future<Boolean> future2 = performACLUpdateInExecutor(executor, keyAlice, rights, countDownLatch::countDown);
+ Future<Boolean> future1 = performACLUpdateInExecutor(cassandra, executor, keyBob, rights, countDownLatch::countDown);
+ Future<Boolean> future2 = performACLUpdateInExecutor(cassandra, executor, keyAlice, rights, countDownLatch::countDown);
awaitAll(future1, future2);
assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join())
@@ -206,7 +193,7 @@ public class CassandraACLMapperTest {
}
}
- private Future<Boolean> performACLUpdateInExecutor(ExecutorService executor, MailboxACL.EntryKey key, MailboxACL.Rfc4314Rights rights, CassandraACLMapper.CodeInjector runnable) {
+ private Future<Boolean> performACLUpdateInExecutor(CassandraCluster cassandra, ExecutorService executor, MailboxACL.EntryKey key, MailboxACL.Rfc4314Rights rights, CassandraACLMapper.CodeInjector runnable) {
return executor.submit(() -> {
CassandraACLMapper aclMapper = new CassandraACLMapper(
cassandra.getConf(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
index 911d0d0..e2e4f62 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
@@ -24,59 +24,40 @@ import static org.assertj.core.api.Assertions.assertThat;
import javax.mail.Flags;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableSet;
-public class CassandraApplicableFlagDAOTest {
+class CassandraApplicableFlagDAOTest {
- public static final String USER_FLAG = "User Flag";
- public static final String USER_FLAG2 = "User Flag 2";
- public static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
+ private static final String USER_FLAG = "User Flag";
+ private static final String USER_FLAG2 = "User Flag 2";
+ private static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraApplicableFlagsModule.MODULE);
private CassandraApplicableFlagDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraApplicableFlagsModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraApplicableFlagDAO(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void updateApplicableFlagsShouldReturnEmptyByDefault() throws Exception {
+ void updateApplicableFlagsShouldReturnEmptyByDefault() {
assertThat(testee.retrieveApplicableFlag(CASSANDRA_ID).join())
.isEmpty();
}
@Test
- public void updateApplicableFlagsShouldSupportEmptyUserFlags() throws Exception {
+ void updateApplicableFlagsShouldSupportEmptyUserFlags() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of()).join();
assertThat(testee.retrieveApplicableFlag(CASSANDRA_ID).join())
@@ -84,7 +65,7 @@ public class CassandraApplicableFlagDAOTest {
}
@Test
- public void updateApplicableFlagsShouldUpdateUserFlag() throws Exception {
+ void updateApplicableFlagsShouldUpdateUserFlag() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG)).join();
assertThat(testee.retrieveApplicableFlag(CASSANDRA_ID).join())
@@ -92,7 +73,7 @@ public class CassandraApplicableFlagDAOTest {
}
@Test
- public void updateApplicableFlagsShouldUnionUserFlags() throws Exception {
+ void updateApplicableFlagsShouldUnionUserFlags() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG)).join();
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG2)).join();
@@ -101,7 +82,7 @@ public class CassandraApplicableFlagDAOTest {
}
@Test
- public void updateApplicableFlagsShouldBeIdempotent() throws Exception {
+ void updateApplicableFlagsShouldBeIdempotent() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG)).join();
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG)).join();
@@ -110,7 +91,7 @@ public class CassandraApplicableFlagDAOTest {
}
@Test
- public void updateApplicableFlagsShouldSkipAlreadyStoredFlagsWhenAddingFlag() throws Exception {
+ void updateApplicableFlagsShouldSkipAlreadyStoredFlagsWhenAddingFlag() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG)).join();
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG, USER_FLAG2)).join();
@@ -119,7 +100,7 @@ public class CassandraApplicableFlagDAOTest {
}
@Test
- public void updateApplicableFlagsShouldUpdateMultiFlags() throws Exception {
+ void updateApplicableFlagsShouldUpdateMultiFlags() {
testee.updateApplicableFlags(CASSANDRA_ID, ImmutableSet.of(USER_FLAG, USER_FLAG2)).join();
assertThat(testee.retrieveApplicableFlag(CASSANDRA_ID).join())
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index f88406e..f82375e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -25,63 +25,43 @@ import java.nio.charset.StandardCharsets;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
-public class CassandraAttachmentDAOTest {
- public static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
- public static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
+class CassandraAttachmentDAOTest {
+ private static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
+ private static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAttachmentModule.MODULE);
private CassandraAttachmentDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraAttachmentDAO(cassandra.getConf(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CassandraConfiguration.DEFAULT_CONFIGURATION);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getAttachmentShouldReturnEmptyWhenAbsent() {
+ void getAttachmentShouldReturnEmptyWhenAbsent() {
Optional<Attachment> attachment = testee.getAttachment(ATTACHMENT_ID).join();
assertThat(attachment).isEmpty();
}
@Test
- public void retrieveAllShouldReturnEmptyByDefault() {
+ void retrieveAllShouldReturnEmptyByDefault() {
assertThat(
testee.retrieveAll()
.collect(Guavate.toImmutableList()))
@@ -89,7 +69,7 @@ public class CassandraAttachmentDAOTest {
}
@Test
- public void retrieveAllShouldReturnStoredAttachments() throws Exception {
+ void retrieveAllShouldReturnStoredAttachments() throws Exception {
Attachment attachment1 = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
.type("application/json")
@@ -110,7 +90,7 @@ public class CassandraAttachmentDAOTest {
}
@Test
- public void getAttachmentShouldReturnAttachmentWhenStored() throws Exception {
+ void getAttachmentShouldReturnAttachmentWhenStored() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
.type("application/json")
@@ -124,7 +104,7 @@ public class CassandraAttachmentDAOTest {
}
@Test
- public void deleteAttachmentShouldRemoveAttachment() throws Exception {
+ void deleteAttachmentShouldRemoveAttachment() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
.type("application/json")
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
index 7471609..6e3b705 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
@@ -25,60 +25,40 @@ import java.nio.charset.StandardCharsets;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2.DAOAttachment;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraAttachmentDAOV2Test {
- public static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
+class CassandraAttachmentDAOV2Test {
+ private static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAttachmentModule.MODULE);
private CassandraAttachmentDAOV2 testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getAttachmentShouldReturnEmptyWhenAbsent() {
+ void getAttachmentShouldReturnEmptyWhenAbsent() {
Optional<DAOAttachment> attachment = testee.getAttachment(ATTACHMENT_ID).join();
assertThat(attachment).isEmpty();
}
@Test
- public void getAttachmentShouldReturnAttachmentWhenStored() throws Exception {
+ void getAttachmentShouldReturnAttachmentWhenStored() {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID)
.type("application/json")
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
index 0f8a85a..862ea95 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
@@ -25,7 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.nio.charset.StandardCharsets;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
@@ -38,24 +38,22 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
-public class CassandraAttachmentFallbackTest {
- public static final AttachmentId ATTACHMENT_ID_1 = AttachmentId.from("id1");
- public static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
+class CassandraAttachmentFallbackTest {
+ private static final AttachmentId ATTACHMENT_ID_1 = AttachmentId.from("id1");
+ private static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraAttachmentModule.MODULE,
+ CassandraBlobModule.MODULE));
private CassandraAttachmentDAOV2 attachmentDAOV2;
private CassandraAttachmentDAO attachmentDAO;
@@ -63,16 +61,9 @@ public class CassandraAttachmentFallbackTest {
private CassandraBlobsDAO blobsDAO;
private CassandraAttachmentMessageIdDAO attachmentMessageIdDAO;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraAttachmentModule.MODULE,
- CassandraBlobModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
attachmentDAOV2 = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION,
@@ -83,30 +74,20 @@ public class CassandraAttachmentFallbackTest {
attachmentMapper = new CassandraAttachmentMapper(attachmentDAO, attachmentDAOV2, blobsDAO, attachmentMessageIdDAO, ownerDAO);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getAttachmentShouldThrowWhenAbsentFromV1AndV2() throws Exception {
+ void getAttachmentShouldThrowWhenAbsentFromV1AndV2() {
assertThatThrownBy(() -> attachmentMapper.getAttachment(ATTACHMENT_ID_1))
.isInstanceOf(AttachmentNotFoundException.class);
}
@Test
- public void getAttachmentsShouldReturnEmptyWhenAbsentFromV1AndV2() throws Exception {
+ void getAttachmentsShouldReturnEmptyWhenAbsentFromV1AndV2() {
assertThat(attachmentMapper.getAttachments(ImmutableList.of(ATTACHMENT_ID_1)))
.isEmpty();
}
@Test
- public void getAttachmentShouldReturnV2WhenPresentInV1AndV2() throws Exception {
+ void getAttachmentShouldReturnV2WhenPresentInV1AndV2() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID_1)
.type("application/json")
@@ -127,7 +108,7 @@ public class CassandraAttachmentFallbackTest {
}
@Test
- public void getAttachmentShouldReturnV1WhenV2Absent() throws Exception {
+ void getAttachmentShouldReturnV1WhenV2Absent() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID_1)
.type("application/json")
@@ -141,7 +122,7 @@ public class CassandraAttachmentFallbackTest {
}
@Test
- public void getAttachmentsShouldReturnV2WhenV2AndV1() throws Exception {
+ void getAttachmentsShouldReturnV2WhenV2AndV1() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID_1)
.type("application/json")
@@ -162,7 +143,7 @@ public class CassandraAttachmentFallbackTest {
}
@Test
- public void getAttachmentsShouldReturnV1WhenV2Absent() throws Exception {
+ void getAttachmentsShouldReturnV1WhenV2Absent() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID_1)
.type("application/json")
@@ -176,7 +157,7 @@ public class CassandraAttachmentFallbackTest {
}
@Test
- public void getAttachmentsShouldCombineElementsFromV1AndV2() throws Exception {
+ void getAttachmentsShouldCombineElementsFromV1AndV2() throws Exception {
Attachment attachment = Attachment.builder()
.attachmentId(ATTACHMENT_ID_1)
.type("application/json")
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
index 0164508..f7d7b5d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
@@ -24,61 +24,41 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.stream.IntStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.store.mail.model.Username;
import org.apache.james.util.FluentFutureStream;
import org.apache.james.util.streams.JamesCollectors;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraAttachmentOwnerDAOTest {
- public static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
- public static final Username OWNER_1 = Username.fromRawValue("owner1");
- public static final Username OWNER_2 = Username.fromRawValue("owner2");
+class CassandraAttachmentOwnerDAOTest {
+ private static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
+ private static final Username OWNER_1 = Username.fromRawValue("owner1");
+ private static final Username OWNER_2 = Username.fromRawValue("owner2");
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAttachmentModule.MODULE);
private CassandraAttachmentOwnerDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraAttachmentOwnerDAO(cassandra.getConf(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void retrieveOwnersShouldReturnEmptyByDefault() {
+ void retrieveOwnersShouldReturnEmptyByDefault() {
assertThat(testee.retrieveOwners(ATTACHMENT_ID).join())
.isEmpty();
}
@Test
- public void retrieveOwnersShouldReturnAddedOwner() {
+ void retrieveOwnersShouldReturnAddedOwner() {
testee.addOwner(ATTACHMENT_ID, OWNER_1).join();
assertThat(testee.retrieveOwners(ATTACHMENT_ID).join())
@@ -86,7 +66,7 @@ public class CassandraAttachmentOwnerDAOTest {
}
@Test
- public void retrieveOwnersShouldReturnAddedOwners() {
+ void retrieveOwnersShouldReturnAddedOwners() {
testee.addOwner(ATTACHMENT_ID, OWNER_1).join();
testee.addOwner(ATTACHMENT_ID, OWNER_2).join();
@@ -95,7 +75,7 @@ public class CassandraAttachmentOwnerDAOTest {
}
@Test
- public void retrieveOwnersShouldNotThrowWhenMoreReferencesThanPaging() {
+ void retrieveOwnersShouldNotThrowWhenMoreReferencesThanPaging() {
int referenceCountExceedingPaging = 5050;
IntStream.range(0, referenceCountExceedingPaging)
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
index 913aef7..906f9c7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
@@ -25,57 +25,38 @@ import java.util.List;
import java.util.UUID;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
import org.apache.james.mailbox.model.MessageRange;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
-public class CassandraDeletedMessageDAOTest {
-
- public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("110e8400-e29b-11d4-a716-446655440000"));
- public static final MessageUid UID_1 = MessageUid.of(1);
- public static final MessageUid UID_2 = MessageUid.of(2);
- public static final MessageUid UID_3 = MessageUid.of(3);
- public static final MessageUid UID_4 = MessageUid.of(4);
- public static final MessageUid UID_7 = MessageUid.of(7);
- public static final MessageUid UID_8 = MessageUid.of(8);
+class CassandraDeletedMessageDAOTest {
+ private static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("110e8400-e29b-11d4-a716-446655440000"));
+ private static final MessageUid UID_1 = MessageUid.of(1);
+ private static final MessageUid UID_2 = MessageUid.of(2);
+ private static final MessageUid UID_3 = MessageUid.of(3);
+ private static final MessageUid UID_4 = MessageUid.of(4);
+ private static final MessageUid UID_7 = MessageUid.of(7);
+ private static final MessageUid UID_8 = MessageUid.of(8);
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraDeletedMessageModule.MODULE);
private CassandraDeletedMessageDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraDeletedMessageModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraDeletedMessageDAO(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void retrieveDeletedMessageShouldReturnEmptyByDefault() {
+ void retrieveDeletedMessageShouldReturnEmptyByDefault() {
List<MessageUid> result = testee
.retrieveDeletedMessage(MAILBOX_ID, MessageRange.all())
.join()
@@ -85,7 +66,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void addDeletedMessageShouldThenBeReportedAsDeletedMessage() {
+ void addDeletedMessageShouldThenBeReportedAsDeletedMessage() {
testee.addDeleted(MAILBOX_ID, UID_1).join();
testee.addDeleted(MAILBOX_ID, UID_2).join();
@@ -97,7 +78,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void addDeletedMessageShouldBeIdempotent() {
+ void addDeletedMessageShouldBeIdempotent() {
testee.addDeleted(MAILBOX_ID, UID_1).join();
testee.addDeleted(MAILBOX_ID, UID_1).join();
@@ -110,7 +91,7 @@ public class CassandraDeletedMessageDAOTest {
@Test
- public void removeUnreadShouldReturnEmptyWhenNoData() {
+ void removeUnreadShouldReturnEmptyWhenNoData() {
testee.removeDeleted(MAILBOX_ID, UID_1).join();
List<MessageUid> result = testee
@@ -122,7 +103,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void removeDeletedMessageShouldNotAffectOtherMessage() {
+ void removeDeletedMessageShouldNotAffectOtherMessage() {
testee.addDeleted(MAILBOX_ID, UID_2).join();
testee.addDeleted(MAILBOX_ID, UID_1).join();
@@ -137,7 +118,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void removeDeletedShouldRemoveSpecifiedUID() {
+ void removeDeletedShouldRemoveSpecifiedUID() {
testee.addDeleted(MAILBOX_ID, UID_2).join();
testee.removeDeleted(MAILBOX_ID, UID_2).join();
@@ -160,7 +141,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnAllMessageForMessageRangeAll() {
+ void retrieveDeletedMessageShouldReturnAllMessageForMessageRangeAll() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -172,7 +153,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnOneMessageForMessageRangeOneIfThisMessageIsPresent() {
+ void retrieveDeletedMessageShouldReturnOneMessageForMessageRangeOneIfThisMessageIsPresent() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -184,7 +165,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeOneIfThisMessageIsNotPresent() {
+ void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeOneIfThisMessageIsNotPresent() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -196,7 +177,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnMessageInRangeForMessageRangeRange() {
+ void retrieveDeletedMessageShouldReturnMessageInRangeForMessageRangeRange() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -208,7 +189,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeRangeIfNoDeletedMessageInThatRange() {
+ void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeRangeIfNoDeletedMessageInThatRange() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -220,7 +201,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeFromIfNoDeletedMessageWithIdBiggerOrSameThanFrom() {
+ void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeFromIfNoDeletedMessageWithIdBiggerOrSameThanFrom() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
@@ -232,7 +213,7 @@ public class CassandraDeletedMessageDAOTest {
}
@Test
- public void retrieveDeletedMessageShouldReturnDeletedMessageWithIdBiggerOrSameThanFrom() {
+ void retrieveDeletedMessageShouldReturnDeletedMessageWithIdBiggerOrSameThanFrom() {
addMessageForRetrieveTest();
List<MessageUid> result = testee
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
index 6aef33f..4fae89a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
@@ -22,56 +22,37 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-public class CassandraFirstUnseenDAOTest {
-
- public static final CassandraId MAILBOX_ID = CassandraId.timeBased();
- public static final MessageUid UID_1 = MessageUid.of(1);
- public static final MessageUid UID_2 = MessageUid.of(2);
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
- private CassandraFirstUnseenDAO testee;
-
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraFirstUnseenModule.MODULE, cassandraServer.getHost());
- }
+class CassandraFirstUnseenDAOTest {
+ private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
+ private static final MessageUid UID_1 = MessageUid.of(1);
+ private static final MessageUid UID_2 = MessageUid.of(2);
- @Before
- public void setUp() {
- testee = new CassandraFirstUnseenDAO(cassandra.getConf());
- }
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraFirstUnseenModule.MODULE);
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
+ private CassandraFirstUnseenDAO testee;
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
+ testee = new CassandraFirstUnseenDAO(cassandra.getConf());
}
@Test
- public void retrieveFirstUnreadShouldReturnEmptyByDefault() {
+ void retrieveFirstUnreadShouldReturnEmptyByDefault() {
assertThat(testee.retrieveFirstUnread(MAILBOX_ID).join().isPresent())
.isFalse();
}
@Test
- public void addUnreadShouldThenBeReportedAsFirstUnseen() {
+ void addUnreadShouldThenBeReportedAsFirstUnseen() {
testee.addUnread(MAILBOX_ID, UID_1).join();
assertThat(testee.retrieveFirstUnread(MAILBOX_ID).join())
@@ -79,7 +60,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void retrieveFirstUnreadShouldReturnLowestUnreadUid() {
+ void retrieveFirstUnreadShouldReturnLowestUnreadUid() {
testee.addUnread(MAILBOX_ID, UID_1).join();
testee.addUnread(MAILBOX_ID, UID_2).join();
@@ -89,7 +70,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void retrieveFirstUnreadShouldBeOrderIndependent() {
+ void retrieveFirstUnreadShouldBeOrderIndependent() {
testee.addUnread(MAILBOX_ID, UID_2).join();
testee.addUnread(MAILBOX_ID, UID_1).join();
@@ -99,7 +80,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void addUnreadShouldBeIdempotent() {
+ void addUnreadShouldBeIdempotent() {
testee.addUnread(MAILBOX_ID, UID_1).join();
testee.addUnread(MAILBOX_ID, UID_1).join();
@@ -108,9 +89,8 @@ public class CassandraFirstUnseenDAOTest {
.contains(UID_1);
}
-
@Test
- public void removeUnreadShouldReturnWhenNoData() {
+ void removeUnreadShouldReturnWhenNoData() {
testee.removeUnread(MAILBOX_ID, UID_1).join();
assertThat(testee.retrieveFirstUnread(MAILBOX_ID).join())
@@ -118,7 +98,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void removeUnreadShouldRemoveOnlyUnread() {
+ void removeUnreadShouldRemoveOnlyUnread() {
testee.addUnread(MAILBOX_ID, UID_1).join();
testee.removeUnread(MAILBOX_ID, UID_1).join();
@@ -128,7 +108,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void removeUnreadShouldRemoveLastUnread() {
+ void removeUnreadShouldRemoveLastUnread() {
testee.addUnread(MAILBOX_ID, UID_1).join();
testee.addUnread(MAILBOX_ID, UID_2).join();
@@ -139,7 +119,7 @@ public class CassandraFirstUnseenDAOTest {
}
@Test
- public void removeUnreadShouldHaveNoEffectWhenNotLast() {
+ void removeUnreadShouldHaveNoEffectWhenNotLast() {
testee.addUnread(MAILBOX_ID, UID_1).join();
testee.addUnread(MAILBOX_ID, UID_2).join();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[08/13] james-project git commit: JAMES-2544 Propose an extension for
Cassandra cluster
Posted by bt...@apache.org.
JAMES-2544 Propose an extension for Cassandra cluster
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7023a291
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7023a291
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7023a291
Branch: refs/heads/master
Commit: 7023a2919f8ab287e09bc701d8d5e539d6d68ecb
Parents: d031739
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Sep 13 15:14:25 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:18:33 2018 +0700
----------------------------------------------------------------------
.../cassandra/CassandraClusterExtension.java | 71 ++++++++++++++++++++
.../cassandra/CassandraActiveScriptDAOTest.java | 55 +++++----------
2 files changed, 88 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7023a291/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
new file mode 100644
index 0000000..c5b144f
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
@@ -0,0 +1,71 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.backends.cassandra;
+
+import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.jupiter.api.extension.ParameterResolver;
+
+public class CassandraClusterExtension implements BeforeAllCallback, AfterAllCallback, AfterEachCallback, ParameterResolver {
+ private final DockerCassandraExtension cassandraExtension;
+ private final CassandraModule cassandraModule;
+ private CassandraCluster cassandraCluster;
+
+ public CassandraClusterExtension(CassandraModule cassandraModule) {
+ this.cassandraModule = cassandraModule;
+ this.cassandraExtension = new DockerCassandraExtension();
+ }
+
+ @Override
+ public void beforeAll(ExtensionContext extensionContext) {
+ cassandraExtension.beforeAll(extensionContext);
+ cassandraCluster = CassandraCluster.create(cassandraModule, cassandraExtension.getDockerCassandra().getHost());
+ }
+
+ @Override
+ public void afterEach(ExtensionContext extensionContext) {
+ cassandraCluster.clearTables();
+ }
+
+ @Override
+ public void afterAll(ExtensionContext extensionContext) {
+ cassandraCluster.close();
+ cassandraExtension.afterAll(extensionContext);
+ }
+
+ @Override
+ public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ return (parameterContext.getParameter().getType() == CassandraCluster.class);
+ }
+
+ @Override
+ public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ return cassandraCluster;
+ }
+
+ public CassandraCluster getCassandraCluster() {
+ return cassandraCluster;
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7023a291/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
index 4b973b9..2fd0426 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
@@ -24,56 +24,37 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.core.User;
import org.apache.james.sieve.cassandra.model.ActiveScriptInfo;
import org.apache.james.sieverepository.api.ScriptName;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraActiveScriptDAOTest {
+class CassandraActiveScriptDAOTest {
+ private static final User USER = User.fromUsername("user");
+ private static final ScriptName SCRIPT_NAME = new ScriptName("sciptName");
+ private static final ScriptName NEW_SCRIPT_NAME = new ScriptName("newScriptName");
- public static final User USER = User.fromUsername("user");
- public static final ScriptName SCRIPT_NAME = new ScriptName("sciptName");
- public static final ScriptName NEW_SCRIPT_NAME = new ScriptName("newScriptName");
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraSieveRepositoryModule.MODULE);
private CassandraActiveScriptDAO activeScriptDAO;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
activeScriptDAO = new CassandraActiveScriptDAO(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getActiveSctiptInfoShouldReturnEmptyByDefault() {
+ void getActiveSctiptInfoShouldReturnEmptyByDefault() {
assertThat(activeScriptDAO.getActiveSctiptInfo(USER).join().isPresent())
.isFalse();
}
@Test
- public void getActiveSctiptInfoShouldReturnStoredName() {
+ void getActiveSctiptInfoShouldReturnStoredName() {
activeScriptDAO.activate(USER, SCRIPT_NAME).join();
Optional<ActiveScriptInfo> actual = activeScriptDAO.getActiveSctiptInfo(USER).join();
@@ -83,7 +64,7 @@ public class CassandraActiveScriptDAOTest {
}
@Test
- public void activateShouldAllowRename() {
+ void activateShouldAllowRename() {
activeScriptDAO.activate(USER, SCRIPT_NAME).join();
activeScriptDAO.activate(USER, NEW_SCRIPT_NAME).join();
@@ -94,7 +75,7 @@ public class CassandraActiveScriptDAOTest {
}
@Test
- public void unactivateShouldAllowRemovingActiveScript() {
+ void unactivateShouldAllowRemovingActiveScript() {
activeScriptDAO.activate(USER, SCRIPT_NAME).join();
activeScriptDAO.unactivate(USER).join();
@@ -103,13 +84,11 @@ public class CassandraActiveScriptDAOTest {
assertThat(actual.isPresent()).isFalse();
}
-
@Test
- public void unactivateShouldWorkWhenNoneStore() {
+ void unactivateShouldWorkWhenNoneStore() {
activeScriptDAO.unactivate(USER).join();
Optional<ActiveScriptInfo> actual = activeScriptDAO.getActiveSctiptInfo(USER).join();
assertThat(actual.isPresent()).isFalse();
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[05/13] james-project git commit: JAMES-2545 implement the
healthcheck on top of channelpool
Posted by bt...@apache.org.
JAMES-2545 implement the healthcheck on top of channelpool
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b847583c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b847583c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b847583c
Branch: refs/heads/master
Commit: b847583c455ff7586e588f1f8a529b7fd548b536
Parents: 3313b53
Author: Matthieu Baechler <ma...@apache.org>
Authored: Mon Sep 10 18:22:26 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:42 2018 +0700
----------------------------------------------------------------------
.../backend/rabbitmq/RabbitChannelPool.java | 16 +++++++++----
.../backend/rabbitmq/RabbitMQHealthCheck.java | 24 +++++++++-----------
.../rabbitmq/RabbitMQHealthCheckTest.java | 13 ++++++-----
3 files changed, 29 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b847583c/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
index c4a9fe6..f6f4154 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
@@ -30,6 +30,12 @@ import com.rabbitmq.client.Connection;
public class RabbitChannelPool {
+ public static class ConnectionFailedException extends RuntimeException {
+ public ConnectionFailedException(Throwable cause) {
+ super(cause);
+ }
+ }
+
private static class ChannelBasePooledObjectFactory extends BasePooledObjectFactory<Channel> {
private final Connection connection;
@@ -65,7 +71,7 @@ public class RabbitChannelPool {
new ChannelBasePooledObjectFactory(connection));
}
- public <T, E extends Throwable> T execute(RabbitFunction<T, E> f) throws E {
+ public <T, E extends Throwable> T execute(RabbitFunction<T, E> f) throws E, ConnectionFailedException {
Channel channel = borrowChannel();
try {
return f.execute(channel);
@@ -75,7 +81,7 @@ public class RabbitChannelPool {
}
- public <E extends Throwable> void execute(RabbitConsumer<E> f) throws E {
+ public <E extends Throwable> void execute(RabbitConsumer<E> f) throws E, ConnectionFailedException {
Channel channel = borrowChannel();
try {
f.execute(channel);
@@ -88,15 +94,15 @@ public class RabbitChannelPool {
try {
return pool.borrowObject();
} catch (Exception e) {
- throw new RuntimeException(e);
+ throw new ConnectionFailedException(e);
}
}
private void returnChannel(Channel channel) {
try {
pool.returnObject(channel);
- } catch (Exception e) {
- throw new RuntimeException(e);
+ } catch (Exception ignore) {
+ //ignore when return is failing
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b847583c/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
index b850e26..fd9f757 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
@@ -31,19 +31,15 @@ import org.apache.james.core.healthcheck.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-
public class RabbitMQHealthCheck implements HealthCheck {
private static final Logger LOGGER = LoggerFactory.getLogger(RabbitMQHealthCheck.class);
private static final ComponentName COMPONENT_NAME = new ComponentName("RabbitMQ backend");
- private final ConnectionFactory connectionFactory;
+ private final RabbitChannelPool rabbitChannelPool;
@Inject
- public RabbitMQHealthCheck(RabbitMQConfiguration configuration) throws NoSuchAlgorithmException, KeyManagementException, URISyntaxException {
- this.connectionFactory = new ConnectionFactory();
- this.connectionFactory.setUri(configuration.getUri());
+ public RabbitMQHealthCheck(RabbitChannelPool rabbitChannelPool) throws NoSuchAlgorithmException, KeyManagementException, URISyntaxException {
+ this.rabbitChannelPool = rabbitChannelPool;
}
@Override
@@ -53,12 +49,14 @@ public class RabbitMQHealthCheck implements HealthCheck {
@Override
public Result check() {
- try (Connection connection = connectionFactory.newConnection()) {
- if (connection.isOpen()) {
- return Result.healthy(COMPONENT_NAME);
- }
- LOGGER.error("The created connection was not opened");
- return Result.unhealthy(COMPONENT_NAME);
+ try {
+ return rabbitChannelPool.execute(channel -> {
+ if (channel.isOpen()) {
+ return Result.healthy(COMPONENT_NAME);
+ }
+ LOGGER.error("The created connection was not opened");
+ return Result.unhealthy(COMPONENT_NAME);
+ });
} catch (Exception e) {
LOGGER.error("Unhealthy RabbitMQ instances: could not establish a connection", e);
return Result.unhealthy(COMPONENT_NAME);
http://git-wip-us.apache.org/repos/asf/james-project/blob/b847583c/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
index 4ba13fe..0938688 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
@@ -25,9 +25,12 @@ import java.net.URI;
import org.apache.james.core.healthcheck.Result;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import com.rabbitmq.client.ConnectionFactory;
+
@ExtendWith(DockerRabbitMQExtension.class)
class RabbitMQHealthCheckTest {
private RabbitMQHealthCheck healthCheck;
@@ -35,13 +38,10 @@ class RabbitMQHealthCheckTest {
@BeforeEach
void setUp(DockerRabbitMQ rabbitMQ) throws Exception {
URI amqpUri = URI.create("amqp://" + rabbitMQ.getHostIp() + ":" + rabbitMQ.getPort());
- URI managementUri = URI.create("http://" + rabbitMQ.getHostIp() + ":" + rabbitMQ.getAdminPort());
-
+ ConnectionFactory connectionFactory = new ConnectionFactory();
+ connectionFactory.setUri(amqpUri);
healthCheck = new RabbitMQHealthCheck(
- RabbitMQConfiguration.builder()
- .amqpUri(amqpUri)
- .managementUri(managementUri)
- .build());
+ new RabbitChannelPool(connectionFactory.newConnection()));
}
@Test
@@ -61,6 +61,7 @@ class RabbitMQHealthCheckTest {
}
@Test
+ @Disabled("connection don't recover instantly, we should try several time (depending on heartbeat rabbit conf")
void checkShouldDetectWhenRabbitMQRecovered(DockerRabbitMQ rabbitMQ) throws Exception {
rabbitMQ.stopApp();
healthCheck.check();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[07/13] james-project git commit: JAMES-2545 Add retry connection
parameters in RabbitMQ configuration
Posted by bt...@apache.org.
JAMES-2545 Add retry connection parameters in RabbitMQ configuration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f2da55f0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f2da55f0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f2da55f0
Branch: refs/heads/master
Commit: f2da55f0b56020b2fbe7dee5cc3f6261ae20d331
Parents: f02def1
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 12 15:05:14 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:43 2018 +0700
----------------------------------------------------------------------
.../backend/rabbitmq/RabbitMQConfiguration.java | 43 +++++++++++++++--
.../rabbitmq/RabbitMQConfigurationTest.java | 51 ++++++++++++++++++++
2 files changed, 90 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f2da55f0/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java
----------------------------------------------------------------------
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 4093431..650d6fc 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
@@ -20,6 +20,7 @@ package org.apache.james.backend.rabbitmq;
import java.net.URI;
import java.util.Objects;
+import java.util.Optional;
import org.apache.commons.configuration.PropertiesConfiguration;
@@ -38,18 +39,38 @@ public class RabbitMQConfiguration {
}
public static class Builder {
+ public static final int DEFAULT_MAX_RETRIES = 7;
+ public static final int DEFAULT_MIN_DELAY = 3000;
+
private final URI amqpUri;
private final URI managementUri;
+ private Optional<Integer> maxRetries;
+ private Optional<Integer> minDelay;
private Builder(URI amqpUri, URI managementUri) {
this.amqpUri = amqpUri;
this.managementUri = managementUri;
+ this.maxRetries = Optional.empty();
+ this.minDelay = Optional.empty();
+ }
+
+ public Builder maxRetries(int maxRetries) {
+ this.maxRetries = Optional.of(maxRetries);
+ return this;
+ }
+
+ public Builder minDelay(int minDelay) {
+ this.minDelay = Optional.of(minDelay);
+ return this;
}
public RabbitMQConfiguration build() {
Preconditions.checkNotNull(amqpUri, "'amqpUri' should not be null");
Preconditions.checkNotNull(managementUri, "'managementUri' should not be null");
- return new RabbitMQConfiguration(amqpUri, managementUri);
+ return new RabbitMQConfiguration(amqpUri,
+ managementUri,
+ maxRetries.orElse(DEFAULT_MAX_RETRIES),
+ minDelay.orElse(DEFAULT_MIN_DELAY));
}
}
@@ -85,10 +106,14 @@ public class RabbitMQConfiguration {
private final URI uri;
private final URI managementUri;
+ private final int maxRetries;
+ private final int minDelay;
- private RabbitMQConfiguration(URI uri, URI managementUri) {
+ private RabbitMQConfiguration(URI uri, URI managementUri, int maxRetries, int minDelay) {
this.uri = uri;
this.managementUri = managementUri;
+ this.maxRetries = maxRetries;
+ this.minDelay = minDelay;
}
public URI getUri() {
@@ -99,19 +124,29 @@ public class RabbitMQConfiguration {
return managementUri;
}
+ public int getMaxRetries() {
+ return maxRetries;
+ }
+
+ public int getMinDelay() {
+ return minDelay;
+ }
+
@Override
public final boolean equals(Object o) {
if (o instanceof RabbitMQConfiguration) {
RabbitMQConfiguration that = (RabbitMQConfiguration) o;
return Objects.equals(this.uri, that.uri)
- && Objects.equals(this.managementUri, that.managementUri);
+ && Objects.equals(this.managementUri, that.managementUri)
+ && Objects.equals(this.maxRetries, that.maxRetries)
+ && Objects.equals(this.minDelay, that.minDelay);
}
return false;
}
@Override
public final int hashCode() {
- return Objects.hash(uri, managementUri);
+ return Objects.hash(uri, managementUri, maxRetries, minDelay);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f2da55f0/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java
----------------------------------------------------------------------
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 3066e48..7a1a747 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
@@ -22,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.net.URI;
+import java.net.URISyntaxException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.junit.jupiter.api.Test;
@@ -131,4 +132,54 @@ class RabbitMQConfigurationTest {
.managementUri(URI.create(managementUri))
.build());
}
+
+ @Test
+ void maxRetriesShouldEqualsDefaultValueWhenNotGiven() 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/"))
+ .build();
+
+ assertThat(rabbitMQConfiguration.getMaxRetries())
+ .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_MAX_RETRIES);
+ }
+
+ @Test
+ void maxRetriesShouldEqualsCustomValueWhenGiven() throws URISyntaxException {
+ int maxRetries = 1;
+
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672"))
+ .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/"))
+ .maxRetries(maxRetries)
+ .build();
+
+ assertThat(rabbitMQConfiguration.getMaxRetries())
+ .isEqualTo(maxRetries);
+ }
+
+ @Test
+ void minDelayShouldEqualsDefaultValueWhenNotGiven() 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/"))
+ .build();
+
+ assertThat(rabbitMQConfiguration.getMinDelay())
+ .isEqualTo(RabbitMQConfiguration.Builder.DEFAULT_MIN_DELAY);
+ }
+
+ @Test
+ void minDelayShouldEqualsCustomValueWhenGiven() throws URISyntaxException {
+ int minDelay = 1;
+
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(new URI("amqp://james:james@rabbitmq_host:5672"))
+ .managementUri(new URI("http://james:james@rabbitmq_host:15672/api/"))
+ .minDelay(minDelay)
+ .build();
+
+ assertThat(rabbitMQConfiguration.getMinDelay())
+ .isEqualTo(minDelay);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[04/13] james-project git commit: JAMES-2545 Move RetryExecutorUtil
in the utility project
Posted by bt...@apache.org.
JAMES-2545 Move RetryExecutorUtil in the utility project
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f02def1d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f02def1d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f02def1d
Branch: refs/heads/master
Commit: f02def1d12aa44001ee70bb6281cf585bcdfa974
Parents: 3b570bc
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 12 14:39:45 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:42 2018 +0700
----------------------------------------------------------------------
server/container/guice/cassandra-guice/pom.xml | 4 +
.../mailbox/ElasticSearchMailboxModule.java | 2 +-
.../mailbox/ResilientClusterProvider.java | 2 +-
server/container/guice/guice-common/pom.xml | 4 -
.../apache/james/utils/RetryExecutorUtil.java | 44 -------
.../org/apache/james/utils/FaultyService.java | 24 ----
.../james/utils/RetryExecutorUtilTest.java | 127 -------------------
server/container/util/pom.xml | 9 ++
.../apache/james/util/retry/FaultyService.java | 24 ++++
.../james/util/retry/RetryExecutorUtil.java | 44 +++++++
.../james/util/retry/RetryExecutorUtilTest.java | 127 +++++++++++++++++++
11 files changed, 210 insertions(+), 201 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/cassandra-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index 896c2f0..d13b33f 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -215,6 +215,10 @@
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-util</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-util</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index 5bfd220..ee6529d 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -44,8 +44,8 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil;
+import org.apache.james.util.retry.RetryExecutorUtil;
import org.apache.james.utils.PropertiesProvider;
-import org.apache.james.utils.RetryExecutorUtil;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.NoNodeAvailableException;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
index fa9a81e..ef2e4a8 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
@@ -30,7 +30,7 @@ import javax.inject.Singleton;
import org.apache.james.backends.cassandra.init.ClusterBuilder;
import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
-import org.apache.james.utils.RetryExecutorUtil;
+import org.apache.james.util.retry.RetryExecutorUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/guice-common/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/pom.xml b/server/container/guice/guice-common/pom.xml
index d2333e7..8e64644 100644
--- a/server/container/guice/guice-common/pom.xml
+++ b/server/container/guice/guice-common/pom.xml
@@ -171,10 +171,6 @@
<artifactId>guice-multibindings</artifactId>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- </dependency>
- <dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
deleted file mode 100644
index b4b218f..0000000
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.utils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-
-public class RetryExecutorUtil {
- private static final Logger LOG = LoggerFactory.getLogger(RetryExecutorUtil.class);
-
- private static final int INITIAL_DELAY_MILLIS = 500;
- private static final int MULTIPLIER = 2;
-
- @SafeVarargs
- public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class<? extends Throwable>... clazz) {
- LOG.info("The action should retry when {} and retry to {} times if needed", clazz, maxRetries);
- return executor
- .withExponentialBackoff(INITIAL_DELAY_MILLIS, MULTIPLIER)
- .withProportionalJitter()
- .retryOn(clazz)
- .withMaxRetries(maxRetries)
- .withMinDelay(minDelay);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FaultyService.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FaultyService.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FaultyService.java
deleted file mode 100644
index 12d8f92..0000000
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FaultyService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.utils;
-
-public interface FaultyService {
- String faultyService();
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
deleted file mode 100644
index dac929e..0000000
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.utils;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.BDDMockito.given;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.RetryExecutor;
-
-public class RetryExecutorUtilTest {
- private static final int MAX_RETRIES = 3;
- private static final int MIN_DELAY = 100;
- @Mock
- protected FaultyService serviceMock;
-
- private RetryExecutor retryExecutor;
- private ScheduledExecutorService scheduledExecutor;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
- }
-
- @After
- public void tearDown() throws Exception {
- scheduledExecutor.shutdownNow();
- }
-
- @Test
- public void retryOnExceptionsAndExecuteShouldRethrowWhenScheduledServiceAlwaysThrowException() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class);
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- public void retryOnExceptionsAndExecuteShouldRetryWhenMatchExceptionAndSuccess() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalArgumentException.class)
- .willReturn("Foo");
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- final CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
-
- assertThat(future.get()).isEqualTo("Foo");
- }
-
- @Test
- public void retryOnExceptionsAndExecuteShouldNotRetryWhenDoesNotMatchException() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalStateException.class);
- }
-
- @Test
- @SuppressWarnings("unchecked")
- public void retryOnExceptionsAndExecuteShouldRetryWithMaxTimesAndReturnValue() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
-
- CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
-
- assertThat(future.get()).isEqualTo("Foo");
- }
-
- @Test
- @SuppressWarnings("unchecked")
- public void retryOnExceptionsAndExecuteShouldFailIfFailMoreThanMaxRetry() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalStateException.class);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/util/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/util/pom.xml b/server/container/util/pom.xml
index 8e367d1..939a670 100644
--- a/server/container/util/pom.xml
+++ b/server/container/util/pom.xml
@@ -59,6 +59,10 @@
<artifactId>icu4j</artifactId>
</dependency>
<dependency>
+ <groupId>com.nurkiewicz.asyncretry</groupId>
+ <artifactId>asyncretry</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>
@@ -100,6 +104,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/util/src/main/java/org/apache/james/util/retry/FaultyService.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/retry/FaultyService.java b/server/container/util/src/main/java/org/apache/james/util/retry/FaultyService.java
new file mode 100644
index 0000000..f8c85e6
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/retry/FaultyService.java
@@ -0,0 +1,24 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.util.retry;
+
+public interface FaultyService {
+ String faultyService();
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java b/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
new file mode 100644
index 0000000..34bdcf9
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.util.retry;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+
+public class RetryExecutorUtil {
+ private static final Logger LOG = LoggerFactory.getLogger(RetryExecutorUtil.class);
+
+ private static final int INITIAL_DELAY_MILLIS = 500;
+ private static final int MULTIPLIER = 2;
+
+ @SafeVarargs
+ public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class<? extends Throwable>... clazz) {
+ LOG.info("The action should retry when {} and retry to {} times if needed", clazz, maxRetries);
+ return executor
+ .withExponentialBackoff(INITIAL_DELAY_MILLIS, MULTIPLIER)
+ .withProportionalJitter()
+ .retryOn(clazz)
+ .withMaxRetries(maxRetries)
+ .withMinDelay(minDelay);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f02def1d/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java b/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
new file mode 100644
index 0000000..81c2f11
--- /dev/null
+++ b/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
@@ -0,0 +1,127 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.util.retry;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.BDDMockito.given;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+import com.nurkiewicz.asyncretry.RetryExecutor;
+
+public class RetryExecutorUtilTest {
+ private static final int MAX_RETRIES = 3;
+ private static final int MIN_DELAY = 100;
+ @Mock
+ protected FaultyService serviceMock;
+
+ private RetryExecutor retryExecutor;
+ private ScheduledExecutorService scheduledExecutor;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ scheduledExecutor.shutdownNow();
+ }
+
+ @Test
+ public void retryOnExceptionsAndExecuteShouldRethrowWhenScheduledServiceAlwaysThrowException() throws Exception {
+ given(serviceMock.faultyService())
+ .willThrow(IllegalArgumentException.class)
+ .willThrow(IllegalArgumentException.class)
+ .willThrow(IllegalArgumentException.class)
+ .willThrow(IllegalArgumentException.class);
+
+ retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
+
+ assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
+ .isInstanceOf(ExecutionException.class)
+ .hasCauseInstanceOf(IllegalArgumentException.class);
+ }
+
+ @Test
+ public void retryOnExceptionsAndExecuteShouldRetryWhenMatchExceptionAndSuccess() throws Exception {
+ given(serviceMock.faultyService())
+ .willThrow(IllegalArgumentException.class)
+ .willReturn("Foo");
+ retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
+
+ final CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
+
+ assertThat(future.get()).isEqualTo("Foo");
+ }
+
+ @Test
+ public void retryOnExceptionsAndExecuteShouldNotRetryWhenDoesNotMatchException() throws Exception {
+ given(serviceMock.faultyService())
+ .willThrow(IllegalStateException.class)
+ .willReturn("Foo");
+
+ retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
+
+ assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
+ .isInstanceOf(ExecutionException.class)
+ .hasCauseInstanceOf(IllegalStateException.class);
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void retryOnExceptionsAndExecuteShouldRetryWithMaxTimesAndReturnValue() throws Exception {
+ given(serviceMock.faultyService())
+ .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
+ .willReturn("Foo");
+
+ retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
+
+ CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
+
+ assertThat(future.get()).isEqualTo("Foo");
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void retryOnExceptionsAndExecuteShouldFailIfFailMoreThanMaxRetry() throws Exception {
+ given(serviceMock.faultyService())
+ .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
+ .willReturn("Foo");
+
+ retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
+
+ assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
+ .isInstanceOf(ExecutionException.class)
+ .hasCauseInstanceOf(IllegalStateException.class);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[13/13] james-project git commit: JAMES-2545 Retry connection to
RabbitMQ
Posted by bt...@apache.org.
JAMES-2545 Retry connection to RabbitMQ
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d031739f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d031739f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d031739f
Branch: refs/heads/master
Commit: d031739fde64b7234c9c806e00fdcadd0c431524
Parents: f2da55f
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 12 15:33:12 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:18:33 2018 +0700
----------------------------------------------------------------------
backends-common/rabbitmq/pom.xml | 1 -
.../backend/rabbitmq/RabbitChannelPool.java | 21 +++++++++++-----
.../rabbitmq/RabbitMQConnectionFactory.java | 25 +++++++++++++-------
.../rabbitmq/RabbitMQConnectionFactoryTest.java | 20 +++++++++++++---
.../rabbitmq/RabbitMQHealthCheckTest.java | 19 ++++++++++-----
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 21 +++++++++++++++-
.../rabbitmq/RabbitMqMailQueueFactoryTest.java | 21 +++++++++++++++-
7 files changed, 101 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/backends-common/rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/pom.xml b/backends-common/rabbitmq/pom.xml
index 9583901..d260153 100644
--- a/backends-common/rabbitmq/pom.xml
+++ b/backends-common/rabbitmq/pom.xml
@@ -43,7 +43,6 @@
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>james-server-util</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
index f6f4154..9db1a19 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
@@ -19,12 +19,18 @@
package org.apache.james.backend.rabbitmq;
+import java.util.function.Supplier;
+
+import javax.inject.Inject;
+
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.ObjectPool;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.james.util.MemoizedSupplier;
+import com.github.fge.lambdas.Throwing;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
@@ -37,15 +43,17 @@ public class RabbitChannelPool {
}
private static class ChannelBasePooledObjectFactory extends BasePooledObjectFactory<Channel> {
- private final Connection connection;
+ private final Supplier<Connection> connection;
- public ChannelBasePooledObjectFactory(Connection connection) {
- this.connection = connection;
+ public ChannelBasePooledObjectFactory(RabbitMQConnectionFactory factory) {
+ this.connection = MemoizedSupplier.of(
+ Throwing.supplier(() -> factory.create()).sneakyThrow());
}
@Override
public Channel create() throws Exception {
- return connection.createChannel();
+ return connection.get()
+ .createChannel();
}
@Override
@@ -66,9 +74,10 @@ public class RabbitChannelPool {
private final ObjectPool<Channel> pool;
- public RabbitChannelPool(Connection connection) {
+ @Inject
+ public RabbitChannelPool(RabbitMQConnectionFactory factory) {
pool = new GenericObjectPool<>(
- new ChannelBasePooledObjectFactory(connection));
+ new ChannelBasePooledObjectFactory(factory));
}
public <T, E extends Throwable> T execute(RabbitFunction<T, E> f) throws E, ConnectionFailedException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java
----------------------------------------------------------------------
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 b6a6ba2..2f901f4 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
@@ -18,23 +18,30 @@
****************************************************************/
package org.apache.james.backend.rabbitmq;
+import java.util.concurrent.ExecutionException;
+
import javax.inject.Inject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.james.util.retry.RetryExecutorUtil;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class RabbitMQConnectionFactory {
- private static final Logger LOGGER = LoggerFactory.getLogger(RabbitMQConnectionFactory.class);
-
+ private final AsyncRetryExecutor executor;
private final ConnectionFactory connectionFactory;
+ private final int maxRetries;
+ private final int minDelay;
+
@Inject
- public RabbitMQConnectionFactory(RabbitMQConfiguration rabbitMQConfiguration) {
+ public RabbitMQConnectionFactory(RabbitMQConfiguration rabbitMQConfiguration, AsyncRetryExecutor executor) {
+ this.executor = executor;
this.connectionFactory = from(rabbitMQConfiguration);
+ this.maxRetries = rabbitMQConfiguration.getMaxRetries();
+ this.minDelay = rabbitMQConfiguration.getMinDelay();
}
private ConnectionFactory from(RabbitMQConfiguration rabbitMQConfiguration) {
@@ -43,16 +50,16 @@ public class RabbitMQConnectionFactory {
connectionFactory.setUri(rabbitMQConfiguration.getUri());
return connectionFactory;
} catch (Exception e) {
- LOGGER.error("Fail to create the RabbitMQ connection factory.");
throw new RuntimeException(e);
}
}
public Connection create() {
try {
- return connectionFactory.newConnection();
- } catch (Exception e) {
- LOGGER.error("Fail to create a RabbitMQ connection.");
+ return RetryExecutorUtil.retryOnExceptions(executor, maxRetries, minDelay, Exception.class)
+ .getWithRetry(context -> connectionFactory.newConnection())
+ .get();
+ } catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
index 99cca33..3d0c13f 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
@@ -21,11 +21,23 @@ package org.apache.james.backend.rabbitmq;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.net.URI;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+
class RabbitMQConnectionFactoryTest {
+ private ScheduledExecutorService scheduledExecutor;
+
+ @BeforeEach
+ void setUp() throws Exception {
+ scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
+ }
+
@Test
void creatingAFactoryShouldWorkWhenConfigurationIsValid() {
RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
@@ -33,7 +45,7 @@ class RabbitMQConnectionFactoryTest {
.managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
.build();
- new RabbitMQConnectionFactory(rabbitMQConfiguration);
+ new RabbitMQConnectionFactory(rabbitMQConfiguration, new AsyncRetryExecutor(scheduledExecutor));
}
@Test
@@ -43,7 +55,7 @@ class RabbitMQConnectionFactoryTest {
.managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
.build();
- assertThatThrownBy(() -> new RabbitMQConnectionFactory(rabbitMQConfiguration))
+ assertThatThrownBy(() -> new RabbitMQConnectionFactory(rabbitMQConfiguration, new AsyncRetryExecutor(scheduledExecutor)))
.isInstanceOf(RuntimeException.class);
}
@@ -52,9 +64,11 @@ class RabbitMQConnectionFactoryTest {
RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
.amqpUri(URI.create("amqp://james:james@rabbitmq_host:5672"))
.managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
+ .maxRetries(1)
+ .minDelay(1)
.build();
- RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration);
+ RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration, new AsyncRetryExecutor(scheduledExecutor));
assertThatThrownBy(() -> rabbitMQConnectionFactory.create())
.isInstanceOf(RuntimeException.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
index 0938688..ec50384 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
@@ -22,14 +22,14 @@ package org.apache.james.backend.rabbitmq;
import static org.assertj.core.api.Assertions.assertThat;
import java.net.URI;
+import java.util.concurrent.Executors;
import org.apache.james.core.healthcheck.Result;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import com.rabbitmq.client.ConnectionFactory;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
@ExtendWith(DockerRabbitMQExtension.class)
class RabbitMQHealthCheckTest {
@@ -38,10 +38,18 @@ class RabbitMQHealthCheckTest {
@BeforeEach
void setUp(DockerRabbitMQ rabbitMQ) throws Exception {
URI amqpUri = URI.create("amqp://" + rabbitMQ.getHostIp() + ":" + rabbitMQ.getPort());
- ConnectionFactory connectionFactory = new ConnectionFactory();
- connectionFactory.setUri(amqpUri);
+ URI managementUri = URI.create("http://" + rabbitMQ.getHostIp() + ":15672/api/");
+
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(amqpUri)
+ .managementUri(managementUri)
+ .build();
+
+ RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration,
+ new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor()));
+
healthCheck = new RabbitMQHealthCheck(
- new RabbitChannelPool(connectionFactory.newConnection()));
+ new RabbitChannelPool(rabbitMQConnectionFactory));
}
@Test
@@ -61,7 +69,6 @@ class RabbitMQHealthCheckTest {
}
@Test
- @Disabled("connection don't recover instantly, we should try several time (depending on heartbeat rabbit conf")
void checkShouldDetectWhenRabbitMQRecovered(DockerRabbitMQ rabbitMQ) throws Exception {
rabbitMQ.stopApp();
healthCheck.check();
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index c2d5c07..811c361 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -22,6 +22,7 @@ package org.apache.james.queue.rabbitmq;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
import javax.mail.internet.MimeMessage;
@@ -29,6 +30,8 @@ import javax.mail.internet.MimeMessage;
import org.apache.http.client.utils.URIBuilder;
import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
import org.apache.james.backend.rabbitmq.RabbitChannelPool;
+import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backend.rabbitmq.RabbitMQConnectionFactory;
import org.apache.james.backend.rabbitmq.ReusableDockerRabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraExtension;
@@ -47,6 +50,8 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+
@ExtendWith({ReusableDockerRabbitMQExtension.class, DockerCassandraExtension.class})
public class RabbitMQMailQueueTest implements MailQueueContract {
private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
@@ -65,13 +70,27 @@ public class RabbitMQMailQueueTest implements MailQueueContract {
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION, BLOB_ID_FACTORY);
Store<MimeMessage, MimeMessagePartsId> mimeMessageStore = MimeMessageStore.factory(blobsDAO).mimeMessageStore();
+ URI amqpUri = new URIBuilder()
+ .setScheme("amqp")
+ .setHost(rabbitMQ.getHostIp())
+ .setPort(rabbitMQ.getPort())
+ .build();
URI rabbitManagementUri = new URIBuilder()
.setScheme("http")
.setHost(rabbitMQ.getHostIp())
.setPort(rabbitMQ.getAdminPort())
.build();
- RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQ.connectionFactory().newConnection()));
+
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(amqpUri)
+ .managementUri(rabbitManagementUri)
+ .build();
+
+ RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration,
+ new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor()));
+
+ RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQConnectionFactory));
RabbitMQMailQueue.Factory factory = new RabbitMQMailQueue.Factory(rabbitClient, mimeMessageStore, BLOB_ID_FACTORY);
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitManagementUri, new RabbitMQManagementCredentials("guest", "guest".toCharArray()));
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/d031739f/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
index bbb4734..1df4d92 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
@@ -22,6 +22,7 @@ package org.apache.james.queue.rabbitmq;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
import javax.mail.internet.MimeMessage;
@@ -29,6 +30,8 @@ import javax.mail.internet.MimeMessage;
import org.apache.http.client.utils.URIBuilder;
import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
import org.apache.james.backend.rabbitmq.RabbitChannelPool;
+import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backend.rabbitmq.RabbitMQConnectionFactory;
import org.apache.james.backend.rabbitmq.ReusableDockerRabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraExtension;
@@ -47,6 +50,8 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+
@ExtendWith({ReusableDockerRabbitMQExtension.class, DockerCassandraExtension.class})
class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQMailQueue> {
private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
@@ -65,13 +70,27 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION, BLOB_ID_FACTORY);
Store<MimeMessage, MimeMessagePartsId> mimeMessageStore = MimeMessageStore.factory(blobsDAO).mimeMessageStore();
+ URI amqpUri = new URIBuilder()
+ .setScheme("amqp")
+ .setHost(rabbitMQ.getHostIp())
+ .setPort(rabbitMQ.getPort())
+ .build();
URI rabbitManagementUri = new URIBuilder()
.setScheme("http")
.setHost(rabbitMQ.getHostIp())
.setPort(rabbitMQ.getAdminPort())
.build();
- RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQ.connectionFactory().newConnection()));
+
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(amqpUri)
+ .managementUri(rabbitManagementUri)
+ .build();
+
+ RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration,
+ new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor()));
+
+ RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQConnectionFactory));
RabbitMQMailQueue.Factory factory = new RabbitMQMailQueue.Factory(rabbitClient, mimeMessageStore, BLOB_ID_FACTORY);
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitManagementUri, new RabbitMQManagementCredentials("guest", "guest".toCharArray()));
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[09/13] james-project git commit: JAMES-2544 Use CassandraCluster
extension where applicable
Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
index d8a4c2d..9730bda 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -31,49 +31,29 @@ import org.apache.james.mailbox.model.MailboxACL.Entry;
import org.apache.james.mailbox.model.MailboxACL.EntryKey;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
import org.apache.james.mailbox.model.MailboxACL.Right;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-public class CassandraUserMailboxRightsDAOTest {
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+class CassandraUserMailboxRightsDAOTest {
private static final String USER_NAME = "userName";
private static final EntryKey ENTRY_KEY = EntryKey.createUserEntryKey(USER_NAME);
private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
private static final Rfc4314Rights RIGHTS = MailboxACL.FULL_RIGHTS;
private static final Rfc4314Rights OTHER_RIGHTS = new Rfc4314Rights(Right.Administer, Right.Read);
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAclModule.MODULE);
private CassandraUserMailboxRightsDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraAclModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
- @After
- public void tearDown() throws Exception {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void saveShouldInsertNewEntry() {
+ void saveShouldInsertNewEntry() {
testee.update(MAILBOX_ID, ACLDiff.computeDiff(
MailboxACL.EMPTY,
new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))
@@ -84,7 +64,7 @@ public class CassandraUserMailboxRightsDAOTest {
}
@Test
- public void saveOnSecondShouldOverwrite() {
+ void saveOnSecondShouldOverwrite() {
testee.update(MAILBOX_ID, ACLDiff.computeDiff(
MailboxACL.EMPTY,
new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))
@@ -100,13 +80,13 @@ public class CassandraUserMailboxRightsDAOTest {
}
@Test
- public void listRightsForUserShouldReturnEmptyWhenEmptyData() {
+ void listRightsForUserShouldReturnEmptyWhenEmptyData() {
assertThat(testee.listRightsForUser(USER_NAME).join())
.isEmpty();
}
@Test
- public void deleteShouldDeleteWhenExisting() {
+ void deleteShouldDeleteWhenExisting() {
testee.update(MAILBOX_ID, ACLDiff.computeDiff(
MailboxACL.EMPTY,
new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
index e1651f2..84f33e8 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
@@ -35,7 +35,7 @@ import javax.mail.Flags;
import javax.mail.util.SharedByteArrayInputStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.migration.Migration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
@@ -55,20 +55,20 @@ import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-public class AttachmentMessageIdCreationTest {
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+class AttachmentMessageIdCreationTest {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMessageModule.MODULE,
+ CassandraAttachmentModule.MODULE,
+ CassandraBlobModule.MODULE));
private CassandraBlobsDAO blobsDAO;
private CassandraMessageDAO cassandraMessageDAO;
@@ -79,17 +79,8 @@ public class AttachmentMessageIdCreationTest {
private SimpleMailboxMessage message;
private CassandraMessageId messageId;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraMessageModule.MODULE,
- CassandraAttachmentModule.MODULE,
- CassandraBlobModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
@@ -104,24 +95,14 @@ public class AttachmentMessageIdCreationTest {
messageId = messageIdFactory.generate();
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void emptyMigrationShouldSucceed() {
+ void emptyMigrationShouldSucceed() {
assertThat(migration.run())
.isEqualTo(Migration.Result.COMPLETED);
}
@Test
- public void migrationShouldSucceedWhenNoAttachment() throws Exception {
+ void migrationShouldSucceedWhenNoAttachment() throws Exception {
List<MessageAttachment> noAttachment = ImmutableList.of();
message = createMessage(messageId, noAttachment);
@@ -132,7 +113,7 @@ public class AttachmentMessageIdCreationTest {
}
@Test
- public void migrationShouldSucceedWhenAttachment() throws Exception {
+ void migrationShouldSucceedWhenAttachment() throws Exception {
MessageAttachment attachment = createAttachment();
message = createMessage(messageId, ImmutableList.of(attachment));
@@ -143,7 +124,7 @@ public class AttachmentMessageIdCreationTest {
}
@Test
- public void migrationShouldCreateAttachmentIdOnAttachmentMessageIdTableFromMessage() throws Exception {
+ void migrationShouldCreateAttachmentIdOnAttachmentMessageIdTableFromMessage() throws Exception {
MessageAttachment attachment = createAttachment();
message = createMessage(messageId, ImmutableList.of(attachment));
@@ -156,7 +137,7 @@ public class AttachmentMessageIdCreationTest {
}
@Test
- public void migrationShouldReturnPartialWhenRetrieveAllAttachmentIdFromMessageFail() throws Exception {
+ void migrationShouldReturnPartialWhenRetrieveAllAttachmentIdFromMessageFail() throws Exception {
CassandraMessageDAO cassandraMessageDAO = mock(CassandraMessageDAO.class);
CassandraAttachmentMessageIdDAO attachmentMessageIdDAO = mock(CassandraAttachmentMessageIdDAO.class);
migration = new AttachmentMessageIdCreation(cassandraMessageDAO, attachmentMessageIdDAO);
@@ -167,7 +148,7 @@ public class AttachmentMessageIdCreationTest {
}
@Test
- public void migrationShouldReturnPartialWhenSavingAttachmentIdForMessageIdFail() throws Exception {
+ void migrationShouldReturnPartialWhenSavingAttachmentIdForMessageIdFail() throws Exception {
CassandraMessageDAO cassandraMessageDAO = mock(CassandraMessageDAO.class);
CassandraAttachmentMessageIdDAO attachmentMessageIdDAO = mock(CassandraAttachmentMessageIdDAO.class);
CassandraMessageDAO.MessageIdAttachmentIds messageIdAttachmentIds = mock(CassandraMessageDAO.MessageIdAttachmentIds.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
index 131eca0..a298106 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
@@ -29,7 +29,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.migration.Migration;
@@ -42,21 +42,20 @@ import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-public class AttachmentV2MigrationTest {
- public static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
- public static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class AttachmentV2MigrationTest {
+ private static final AttachmentId ATTACHMENT_ID = AttachmentId.from("id1");
+ private static final AttachmentId ATTACHMENT_ID_2 = AttachmentId.from("id2");
private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraAttachmentModule.MODULE,
+ CassandraBlobModule.MODULE));
private CassandraAttachmentDAO attachmentDAO;
private CassandraAttachmentDAOV2 attachmentDAOV2;
@@ -65,16 +64,8 @@ public class AttachmentV2MigrationTest {
private Attachment attachment1;
private Attachment attachment2;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraAttachmentModule.MODULE,
- CassandraBlobModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CassandraConfiguration.DEFAULT_CONFIGURATION);
@@ -94,24 +85,14 @@ public class AttachmentV2MigrationTest {
.build();
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void emptyMigrationShouldSucceed() {
+ void emptyMigrationShouldSucceed() {
assertThat(migration.run())
.isEqualTo(Migration.Result.COMPLETED);
}
@Test
- public void migrationShouldSucceed() throws Exception {
+ void migrationShouldSucceed() throws Exception {
attachmentDAO.storeAttachment(attachment1).join();
attachmentDAO.storeAttachment(attachment2).join();
@@ -120,7 +101,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void migrationShouldMoveAttachmentsToV2() throws Exception {
+ void migrationShouldMoveAttachmentsToV2() throws Exception {
attachmentDAO.storeAttachment(attachment1).join();
attachmentDAO.storeAttachment(attachment2).join();
@@ -137,7 +118,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void migrationShouldRemoveAttachmentsFromV1() throws Exception {
+ void migrationShouldRemoveAttachmentsFromV1() throws Exception {
attachmentDAO.storeAttachment(attachment1).join();
attachmentDAO.storeAttachment(attachment2).join();
@@ -150,7 +131,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void runShouldReturnPartialWhenInitialReadFail() throws Exception {
+ void runShouldReturnPartialWhenInitialReadFail() {
CassandraAttachmentDAO attachmentDAO = mock(CassandraAttachmentDAO.class);
CassandraAttachmentDAOV2 attachmentDAOV2 = mock(CassandraAttachmentDAOV2.class);
CassandraBlobsDAO blobsDAO = mock(CassandraBlobsDAO.class);
@@ -162,7 +143,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void runShouldReturnPartialWhenSavingBlobsFails() throws Exception {
+ void runShouldReturnPartialWhenSavingBlobsFails() {
CassandraAttachmentDAO attachmentDAO = mock(CassandraAttachmentDAO.class);
CassandraAttachmentDAOV2 attachmentDAOV2 = mock(CassandraAttachmentDAOV2.class);
CassandraBlobsDAO blobsDAO = mock(CassandraBlobsDAO.class);
@@ -177,7 +158,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void runShouldReturnPartialWhenSavingAttachmentV2Fail() throws Exception {
+ void runShouldReturnPartialWhenSavingAttachmentV2Fail() {
CassandraAttachmentDAO attachmentDAO = mock(CassandraAttachmentDAO.class);
CassandraAttachmentDAOV2 attachmentDAOV2 = mock(CassandraAttachmentDAOV2.class);
CassandraBlobsDAO blobsDAO = mock(CassandraBlobsDAO.class);
@@ -196,7 +177,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void runShouldReturnPartialWhenDeleteV1AttachmentFail() throws Exception {
+ void runShouldReturnPartialWhenDeleteV1AttachmentFail() {
CassandraAttachmentDAO attachmentDAO = mock(CassandraAttachmentDAO.class);
CassandraAttachmentDAOV2 attachmentDAOV2 = mock(CassandraAttachmentDAOV2.class);
CassandraBlobsDAO blobsDAO = mock(CassandraBlobsDAO.class);
@@ -216,7 +197,7 @@ public class AttachmentV2MigrationTest {
}
@Test
- public void runShouldReturnPartialWhenAtLeastOneAttachmentMigrationFails() throws Exception {
+ void runShouldReturnPartialWhenAtLeastOneAttachmentMigrationFails() {
CassandraAttachmentDAO attachmentDAO = mock(CassandraAttachmentDAO.class);
CassandraAttachmentDAOV2 attachmentDAOV2 = mock(CassandraAttachmentDAOV2.class);
CassandraBlobsDAO blobsDAO = mock(CassandraBlobsDAO.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index 92cdb5e..cf19f73 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -22,7 +22,7 @@ package org.apache.james.mailbox.cassandra.mail.migration;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
@@ -39,42 +39,36 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.assertj.core.api.SoftAssertions;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class MailboxPathV2MigrationTest {
+class MailboxPathV2MigrationTest {
private static final MailboxPath MAILBOX_PATH_1 = MailboxPath.forUser("bob", "Important");
private static final int UID_VALIDITY_1 = 452;
private static final SimpleMailbox MAILBOX_1 = new SimpleMailbox(MAILBOX_PATH_1, UID_VALIDITY_1);
private static final CassandraId MAILBOX_ID_1 = CassandraId.timeBased();
- @ClassRule
- public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMailboxModule.MODULE,
+ CassandraAclModule.MODULE));
private CassandraMailboxPathDAOImpl daoV1;
private CassandraMailboxPathV2DAO daoV2;
private CassandraMailboxMapper mailboxMapper;
private CassandraMailboxDAO mailboxDAO;
- @BeforeClass
- public static void setUpClass() {
+ @BeforeAll
+ static void setUpClass() {
MAILBOX_1.setMailboxId(MAILBOX_ID_1);
-
- cassandra = CassandraCluster.create(
- CassandraModule.aggregateModules(
- CassandraMailboxModule.MODULE,
- CassandraAclModule.MODULE),
- cassandraServer.getHost());
}
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
daoV1 = new CassandraMailboxPathDAOImpl(
cassandra.getConf(),
cassandra.getTypesProvider(),
@@ -93,18 +87,8 @@ public class MailboxPathV2MigrationTest {
new CassandraACLMapper(cassandra.getConf(), userMailboxRightsDAO, CassandraConfiguration.DEFAULT_CONFIGURATION));
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void newValuesShouldBeSavedInMostRecentDAO() throws Exception {
+ void newValuesShouldBeSavedInMostRecentDAO() throws Exception {
mailboxMapper.save(MAILBOX_1);
assertThat(daoV2.retrieveId(MAILBOX_PATH_1).join())
@@ -112,7 +96,7 @@ public class MailboxPathV2MigrationTest {
}
@Test
- public void newValuesShouldNotBeSavedInOldDAO() throws Exception {
+ void newValuesShouldNotBeSavedInOldDAO() throws Exception {
mailboxMapper.save(MAILBOX_1);
assertThat(daoV1.retrieveId(MAILBOX_PATH_1).join())
@@ -120,7 +104,7 @@ public class MailboxPathV2MigrationTest {
}
@Test
- public void readingOldValuesShouldMigrateThem() throws Exception {
+ void readingOldValuesShouldMigrateThem() throws Exception {
daoV1.save(MAILBOX_PATH_1, MAILBOX_ID_1).join();
mailboxDAO.save(MAILBOX_1).join();
@@ -134,7 +118,7 @@ public class MailboxPathV2MigrationTest {
}
@Test
- public void migrationTaskShouldMoveDataToMostRecentDao() {
+ void migrationTaskShouldMoveDataToMostRecentDao() {
daoV1.save(MAILBOX_PATH_1, MAILBOX_ID_1).join();
new MailboxPathV2Migration(daoV1, daoV2).run();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
index 898d825..a37215e 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
@@ -21,42 +21,32 @@ package org.apache.james.blob.cassandra;
import static org.assertj.core.api.Assertions.assertThat;
-import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
-import org.apache.james.backends.cassandra.DockerCassandraExtension.DockerCassandra;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.BlobStore;
import org.apache.james.blob.api.BlobStoreContract;
import org.apache.james.blob.api.HashBlobId;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.base.Strings;
-@ExtendWith(DockerCassandraExtension.class)
public class CassandraBlobsDAOTest implements BlobStoreContract {
-
private static final int CHUNK_SIZE = 10240;
private static final int MULTIPLE_CHUNK_SIZE = 3;
- private static CassandraCluster cassandra;
- private CassandraBlobsDAO testee;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraBlobModule.MODULE);
- @BeforeAll
- static void setUpClass(DockerCassandra dockerCassandra) {
- cassandra = CassandraCluster.create(CassandraBlobModule.MODULE, dockerCassandra.getHost());
- }
+ private CassandraBlobsDAO testee;
@BeforeEach
- void setUp() {
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraBlobsDAO(cassandra.getConf(),
CassandraConfiguration.builder()
.blobPartSize(CHUNK_SIZE)
@@ -64,16 +54,6 @@ public class CassandraBlobsDAOTest implements BlobStoreContract {
new HashBlobId.Factory());
}
- @AfterEach
- void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterAll
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Override
public BlobStore testee() {
return testee;
@@ -85,7 +65,7 @@ public class CassandraBlobsDAOTest implements BlobStoreContract {
}
@Test
- public void readBytesShouldReturnSplitSavedDataByChunk() throws IOException {
+ void readBytesShouldReturnSplitSavedDataByChunk() {
String longString = Strings.repeat("0123456789\n", MULTIPLE_CHUNK_SIZE);
BlobId blobId = testee.save(longString.getBytes(StandardCharsets.UTF_8)).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
index fa9818a..30df692 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
@@ -19,8 +19,7 @@
package org.apache.james.mailrepository.cassandra;
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
import org.junit.jupiter.api.extension.AfterAllCallback;
@@ -32,30 +31,25 @@ import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;
public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolver, BeforeAllCallback, AfterAllCallback, AfterEachCallback {
- private final DockerCassandraRule cassandra;
- private CassandraCluster cassandraCluster;
+ private final CassandraClusterExtension cassandraCluster;
public CassandraMailRepositoryUrlStoreExtension() {
- this.cassandra = new DockerCassandraRule();
+ cassandraCluster = new CassandraClusterExtension(CassandraMailRepositoryUrlModule.MODULE);
}
@Override
public void beforeAll(ExtensionContext context) {
- cassandra.start();
- cassandraCluster = CassandraCluster.create(
- CassandraMailRepositoryUrlModule.MODULE,
- cassandra.getHost());
+ cassandraCluster.beforeAll(context);
}
@Override
public void afterEach(ExtensionContext context) {
- cassandraCluster.clearTables();
+ cassandraCluster.afterEach(context);
}
@Override
public void afterAll(ExtensionContext context) {
- cassandraCluster.closeCluster();
- cassandra.stop();
+ cassandraCluster.afterAll(context);
}
@Override
@@ -67,7 +61,7 @@ public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolv
public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
return new CassandraMailRepositoryUrlStore(
new UrlsDao(
- cassandraCluster.getConf(),
+ cassandraCluster.getCassandraCluster().getConf(),
CassandraUtils.WITH_DEFAULT_CONFIGURATION));
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
index 4ddb6ba..5d38f61 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
@@ -25,132 +25,111 @@ import java.util.List;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.core.User;
import org.apache.james.sieve.cassandra.model.Script;
import org.apache.james.sieverepository.api.ScriptName;
import org.apache.james.sieverepository.api.ScriptSummary;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-public class CassandraSieveDAOTest {
-
- public static final User USER = User.fromUsername("user");
- public static final ScriptName SCRIPT_NAME = new ScriptName("scriptName");
- public static final ScriptName SCRIPT_NAME2 = new ScriptName("scriptName2");
- public static final Script SCRIPT = Script.builder()
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class CassandraSieveDAOTest {
+
+ private static final User USER = User.fromUsername("user");
+ private static final ScriptName SCRIPT_NAME = new ScriptName("scriptName");
+ private static final ScriptName SCRIPT_NAME2 = new ScriptName("scriptName2");
+ private static final Script SCRIPT = Script.builder()
.name(SCRIPT_NAME)
.content("content")
.isActive(false)
.build();
- public static final Script SCRIPT2 = Script.builder()
+ private static final Script SCRIPT2 = Script.builder()
.name(SCRIPT_NAME2)
.content("alternative content")
.isActive(true)
.build();
- public static final Script ACTIVE_SCRIPT = Script.builder()
+ private static final Script ACTIVE_SCRIPT = Script.builder()
.copyOf(SCRIPT)
.isActive(true)
.build();
- public static final Script SCRIPT_NEW_CONTENT = Script.builder()
+ private static final Script SCRIPT_NEW_CONTENT = Script.builder()
.copyOf(SCRIPT)
.content("newContent")
.build();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraSieveRepositoryModule.MODULE);
private CassandraSieveDAO sieveDAO;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
sieveDAO = new CassandraSieveDAO(cassandra.getConf());
}
-
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
@Test
- public void getScriptShouldReturnEmptyByDefault() {
+ void getScriptShouldReturnEmptyByDefault() {
assertThat(sieveDAO.getScript(USER, SCRIPT_NAME).join().isPresent())
.isFalse();
}
@Test
- public void getScriptShouldReturnStoredScript() {
+ void getScriptShouldReturnStoredScript() {
sieveDAO.insertScript(USER, SCRIPT).join();
Optional<Script> actual = sieveDAO.getScript(USER, SCRIPT_NAME).join();
- assertThat(actual.isPresent()).isTrue();
- assertThat(actual.get()).isEqualTo(SCRIPT);
+ assertThat(actual).contains(SCRIPT);
}
@Test
- public void insertScriptShouldUpdateContent() {
+ void insertScriptShouldUpdateContent() {
sieveDAO.insertScript(USER, SCRIPT).join();
sieveDAO.insertScript(USER, SCRIPT_NEW_CONTENT).join();
Optional<Script> actual = sieveDAO.getScript(USER, SCRIPT_NAME).join();
- assertThat(actual.isPresent()).isTrue();
- assertThat(actual.get()).isEqualTo(SCRIPT_NEW_CONTENT);
+ assertThat(actual).contains(SCRIPT_NEW_CONTENT);
}
@Test
- public void insertScriptShouldUpdateActivate() {
+ void insertScriptShouldUpdateActivate() {
sieveDAO.insertScript(USER, SCRIPT).join();
sieveDAO.insertScript(USER, ACTIVE_SCRIPT).join();
Optional<Script> actual = sieveDAO.getScript(USER, SCRIPT_NAME).join();
- assertThat(actual.isPresent()).isTrue();
- assertThat(actual.get()).isEqualTo(ACTIVE_SCRIPT);
+ assertThat(actual).contains(ACTIVE_SCRIPT);
}
@Test
- public void deleteScriptInCassandraShouldWork() {
+ void deleteScriptInCassandraShouldWork() {
sieveDAO.insertScript(USER, SCRIPT).join();
sieveDAO.deleteScriptInCassandra(USER, SCRIPT_NAME).join();
Optional<Script> actual = sieveDAO.getScript(USER, SCRIPT_NAME).join();
- assertThat(actual.isPresent()).isFalse();
+ assertThat(actual).isEmpty();
}
@Test
- public void deleteScriptInCassandraShouldWorkWhenNoneStore() {
+ void deleteScriptInCassandraShouldWorkWhenNoneStore() {
sieveDAO.deleteScriptInCassandra(USER, SCRIPT_NAME).join();
Optional<Script> actual = sieveDAO.getScript(USER, SCRIPT_NAME).join();
- assertThat(actual.isPresent()).isFalse();
+ assertThat(actual).isEmpty();
}
@Test
- public void listScriptsShouldReturnEmpty() {
+ void listScriptsShouldReturnEmpty() {
List<ScriptSummary> scriptSummaryList = sieveDAO.listScripts(USER).join();
assertThat(scriptSummaryList).isEmpty();
}
@Test
- public void listScriptsShouldReturnSingleStoredValue() {
+ void listScriptsShouldReturnSingleStoredValue() {
sieveDAO.insertScript(USER, SCRIPT).join();
sieveDAO.insertScript(USER, SCRIPT2).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
index 56692d2..adca5b0 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
@@ -22,60 +22,41 @@ package org.apache.james.sieve.cassandra;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.core.User;
import org.apache.james.core.quota.QuotaSize;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraSieveQuotaDAOTest {
+class CassandraSieveQuotaDAOTest {
+ private static final User USER = User.fromUsername("user");
+ private static final QuotaSize QUOTA_SIZE = QuotaSize.size(15L);
- public static final User USER = User.fromUsername("user");
- public static final QuotaSize QUOTA_SIZE = QuotaSize.size(15L);
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraSieveRepositoryModule.MODULE);
private CassandraSieveQuotaDAO sieveQuotaDAO;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
sieveQuotaDAO = new CassandraSieveQuotaDAO(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getQuotaShouldReturnEmptyByDefault() {
+ void getQuotaShouldReturnEmptyByDefault() {
assertThat(sieveQuotaDAO.getQuota().join())
.isEmpty();
}
@Test
- public void getQuotaUserShouldReturnEmptyByDefault() {
+ void getQuotaUserShouldReturnEmptyByDefault() {
assertThat(sieveQuotaDAO.getQuota(USER).join())
.isEmpty();
}
@Test
- public void getQuotaShouldReturnStoredValue() {
+ void getQuotaShouldReturnStoredValue() {
sieveQuotaDAO.setQuota(QUOTA_SIZE).join();
assertThat(sieveQuotaDAO.getQuota().join())
@@ -83,7 +64,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void getQuotaUserShouldReturnStoredValue() {
+ void getQuotaUserShouldReturnStoredValue() {
sieveQuotaDAO.setQuota(USER, QUOTA_SIZE).join();
assertThat(sieveQuotaDAO.getQuota(USER).join())
@@ -91,7 +72,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void removeQuotaShouldDeleteQuota() {
+ void removeQuotaShouldDeleteQuota() {
sieveQuotaDAO.setQuota(QUOTA_SIZE).join();
sieveQuotaDAO.removeQuota().join();
@@ -101,7 +82,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void removeQuotaUserShouldDeleteQuotaUser() {
+ void removeQuotaUserShouldDeleteQuotaUser() {
sieveQuotaDAO.setQuota(USER, QUOTA_SIZE).join();
sieveQuotaDAO.removeQuota(USER).join();
@@ -111,7 +92,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void removeQuotaShouldWorkWhenNoneStore() {
+ void removeQuotaShouldWorkWhenNoneStore() {
sieveQuotaDAO.removeQuota().join();
assertThat(sieveQuotaDAO.getQuota().join())
@@ -119,7 +100,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void removeQuotaUserShouldWorkWhenNoneStore() {
+ void removeQuotaUserShouldWorkWhenNoneStore() {
sieveQuotaDAO.removeQuota(USER).join();
assertThat(sieveQuotaDAO.getQuota(USER).join())
@@ -127,12 +108,12 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void spaceUsedByShouldReturnZeroByDefault() {
+ void spaceUsedByShouldReturnZeroByDefault() {
assertThat(sieveQuotaDAO.spaceUsedBy(USER).join()).isEqualTo(0);
}
@Test
- public void spaceUsedByShouldReturnStoredValue() {
+ void spaceUsedByShouldReturnStoredValue() {
long spaceUsed = 18L;
sieveQuotaDAO.updateSpaceUsed(USER, spaceUsed).join();
@@ -141,7 +122,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void updateSpaceUsedShouldBeAdditive() {
+ void updateSpaceUsedShouldBeAdditive() {
long spaceUsed = 18L;
sieveQuotaDAO.updateSpaceUsed(USER, spaceUsed).join();
@@ -151,7 +132,7 @@ public class CassandraSieveQuotaDAOTest {
}
@Test
- public void updateSpaceUsedShouldWorkWithNegativeValues() {
+ void updateSpaceUsedShouldWorkWithNegativeValues() {
long spaceUsed = 18L;
sieveQuotaDAO.updateSpaceUsed(USER, spaceUsed).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
index f5255d0..98b6fa2 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
@@ -22,51 +22,34 @@ package org.apache.james.mailrepository.cassandra;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(DockerCassandraExtension.class)
-public class CassandraMailRepositoryCountDAOTest {
+class CassandraMailRepositoryCountDAOTest {
static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
- static CassandraCluster cassandra;
- CassandraMailRepositoryCountDAO testee;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailRepositoryModule.MODULE);
- @BeforeAll
- static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
- cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
- }
+ CassandraMailRepositoryCountDAO testee;
@BeforeEach
- public void setUp() {
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailRepositoryCountDAO(cassandra.getConf());
}
- @AfterEach
- void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterAll
- static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getCountShouldReturnZeroWhenEmpty() {
+ void getCountShouldReturnZeroWhenEmpty() {
assertThat(testee.getCount(URL).join())
.isEqualTo(0L);
}
@Test
- public void getCountShouldReturnOneWhenIncrementedOneTime() {
+ void getCountShouldReturnOneWhenIncrementedOneTime() {
testee.increment(URL).join();
assertThat(testee.getCount(URL).join())
@@ -74,7 +57,7 @@ public class CassandraMailRepositoryCountDAOTest {
}
@Test
- public void incrementShouldNotAffectOtherUrls() {
+ void incrementShouldNotAffectOtherUrls() {
testee.increment(URL).join();
assertThat(testee.getCount(URL2).join())
@@ -82,7 +65,7 @@ public class CassandraMailRepositoryCountDAOTest {
}
@Test
- public void incrementCanBeAppliedSeveralTime() {
+ void incrementCanBeAppliedSeveralTime() {
testee.increment(URL).join();
testee.increment(URL).join();
@@ -91,7 +74,7 @@ public class CassandraMailRepositoryCountDAOTest {
}
@Test
- public void decrementShouldDecreaseCount() {
+ void decrementShouldDecreaseCount() {
testee.increment(URL).join();
testee.increment(URL).join();
testee.increment(URL).join();
@@ -103,7 +86,7 @@ public class CassandraMailRepositoryCountDAOTest {
}
@Test
- public void decrementCanLeadToNegativeCount() {
+ void decrementCanLeadToNegativeCount() {
testee.decrement(URL).join();
assertThat(testee.getCount(URL).join())
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
index 7763ae4..3c457af 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
@@ -22,49 +22,31 @@ package org.apache.james.mailrepository.cassandra;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailrepository.api.MailKey;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(DockerCassandraExtension.class)
class CassandraMailRepositoryKeysDAOTest {
-
static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
static final MailKey KEY_1 = new MailKey("key1");
static final MailKey KEY_2 = new MailKey("key2");
static final MailKey KEY_3 = new MailKey("key3");
- static CassandraCluster cassandra;
- CassandraMailRepositoryKeysDAO testee;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailRepositoryModule.MODULE);
- @BeforeAll
- static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
- cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
- }
+ CassandraMailRepositoryKeysDAO testee;
@BeforeEach
- void setUp() {
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
- @AfterEach
- void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterAll
- static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
void listShouldBeEmptyByDefault() {
assertThat(testee.list(URL).join())
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
index e0635bf..55aa601 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.TestBlobId;
import org.apache.james.mailrepository.api.MailKey;
@@ -32,53 +32,35 @@ import org.apache.mailet.Mail;
import org.apache.mailet.PerRecipientHeaders;
import org.apache.mailet.base.MailAddressFixture;
import org.apache.mailet.base.test.FakeMail;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
-@ExtendWith(DockerCassandraExtension.class)
-public class CassandraMailRepositoryMailDAOTest {
-
+class CassandraMailRepositoryMailDAOTest {
static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
static final MailKey KEY_1 = new MailKey("key1");
static final TestBlobId.Factory BLOB_ID_FACTORY = new TestBlobId.Factory();
- static CassandraCluster cassandra;
- CassandraMailRepositoryMailDAO testee;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailRepositoryModule.MODULE);
- @BeforeAll
- static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
- cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
- }
+ CassandraMailRepositoryMailDAO testee;
@BeforeEach
- public void setUp() {
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailRepositoryMailDAO(cassandra.getConf(), BLOB_ID_FACTORY, cassandra.getTypesProvider());
}
- @AfterEach
- void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterAll
- static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void readShouldReturnEmptyWhenAbsent() {
+ void readShouldReturnEmptyWhenAbsent() {
assertThat(testee.read(URL, KEY_1).join())
.isEmpty();
}
@Test
- public void readShouldReturnAllMailMetadata() throws Exception {
+ void readShouldReturnAllMailMetadata() throws Exception {
BlobId blobIdBody = BLOB_ID_FACTORY.from("blobHeader");
BlobId blobIdHeader = BLOB_ID_FACTORY.from("blobBody");
String errorMessage = "error message";
@@ -127,7 +109,7 @@ public class CassandraMailRepositoryMailDAOTest {
}
@Test
- public void storeShouldAcceptMailWithOnlyName() throws Exception {
+ void storeShouldAcceptMailWithOnlyName() throws Exception {
BlobId blobIdBody = BLOB_ID_FACTORY.from("blobHeader");
BlobId blobIdHeader = BLOB_ID_FACTORY.from("blobBody");
@@ -149,7 +131,7 @@ public class CassandraMailRepositoryMailDAOTest {
}
@Test
- public void removeShouldDeleteMailMetaData() throws Exception {
+ void removeShouldDeleteMailMetaData() throws Exception {
BlobId blobIdBody = BLOB_ID_FACTORY.from("blobHeader");
BlobId blobIdHeader = BLOB_ID_FACTORY.from("blobBody");
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index 64fdfd5..d83677e 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -20,7 +20,7 @@
package org.apache.james.mailrepository.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.HashBlobId;
@@ -30,32 +30,26 @@ import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.mailrepository.MailRepositoryContract;
import org.apache.james.mailrepository.api.MailRepository;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(DockerCassandraExtension.class)
class CassandraMailRepositoryTest implements MailRepositoryContract {
static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMailRepositoryModule.MODULE,
+ CassandraBlobModule.MODULE));
+
CassandraMailRepository cassandraMailRepository;
- static CassandraCluster cassandra;
- @BeforeAll
- static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraMailRepositoryModule.MODULE,
- CassandraBlobModule.MODULE);
- cassandra = CassandraCluster.create(modules, dockerCassandra.getHost());
- }
@BeforeEach
- void setup() {
+ void setup(CassandraCluster cassandra) {
CassandraMailRepositoryMailDAO mailDAO = new CassandraMailRepositoryMailDAO(cassandra.getConf(), BLOB_ID_FACTORY, cassandra.getTypesProvider());
CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
@@ -65,16 +59,6 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
keysDAO, countDAO, mailDAO, MimeMessageStore.factory(blobsDAO).mimeMessageStore());
}
- @AfterEach
- void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterAll
- static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Override
public MailRepository retrieveRepository() {
return cassandraMailRepository;
@@ -83,7 +67,7 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
@Test
@Disabled("key is unique in Cassandra")
@Override
- public void sizeShouldBeIncrementedByOneWhenDuplicates() throws Exception {
+ public void sizeShouldBeIncrementedByOneWhenDuplicates() {
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[02/13] james-project git commit: JAMES-2526 Bounce should not fail
for "nullSender"
Posted by bt...@apache.org.
JAMES-2526 Bounce should not fail for "nullSender"
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/01738f69
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/01738f69
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/01738f69
Branch: refs/heads/master
Commit: 01738f69cb1552f3b44b0237c52aef394f8d9fd4
Parents: 808e04a
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Sep 12 18:24:59 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:04 2018 +0700
----------------------------------------------------------------------
.../mailets/redirect/MailModifier.java | 8 ++++++--
.../mailets/redirect/ProcessRedirectNotify.java | 5 ++++-
.../transport/util/SpecialAddressesUtils.java | 7 ++++++-
.../james/transport/mailets/BounceTest.java | 21 ++++++++++++++++++++
.../james/transport/mailets/RedirectTest.java | 15 ++++++++------
5 files changed, 46 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/01738f69/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
index 5345a6e..2ffc92b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
@@ -38,6 +38,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
public class MailModifier {
private static final Logger LOGGER = LoggerFactory.getLogger(MailModifier.class);
@@ -108,7 +109,10 @@ public class MailModifier {
public void setRecipients(List<MailAddress> recipients) {
if (!recipients.isEmpty()) {
- mail.setRecipients(recipients);
+ mail.setRecipients(recipients
+ .stream()
+ .filter(address -> !address.isNullSender())
+ .collect(ImmutableList.toImmutableList()));
if (mailet.getInitParameters().isDebug()) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("recipients set to: {}", (Object) recipients.toArray());
@@ -142,7 +146,7 @@ public class MailModifier {
public void setReplyTo(Optional<MailAddress> optionalReplyTo) throws MessagingException {
if (optionalReplyTo.isPresent()) {
MailAddress replyTo = optionalReplyTo.get();
- if (replyTo.equals(SpecialAddress.NULL)) {
+ if (replyTo.isNullSender() || replyTo.equals(SpecialAddress.NULL)) {
mail.getMessage().setReplyTo(null);
if (mailet.getInitParameters().isDebug()) {
LOGGER.debug("replyTo set to: null");
http://git-wip-us.apache.org/repos/asf/james-project/blob/01738f69/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
index bcec3e4..c66881f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
@@ -72,6 +72,7 @@ public class ProcessRedirectNotify {
// Set additional headers
mailModifier.setRecipients(mailet.getRecipients(originalMail));
+
mailModifier.setTo(mailet.getTo(originalMail));
mailModifier.setSubjectPrefix(originalMail);
mailModifier.setReplyTo(mailet.getReplyTo(originalMail));
@@ -86,7 +87,9 @@ public class ProcessRedirectNotify {
if (senderDomainIsValid(newMail)) {
// Send it off...
- mailet.getMailetContext().sendMail(newMail);
+ if (!newMail.getRecipients().isEmpty()) {
+ mailet.getMailetContext().sendMail(newMail);
+ }
} else {
throw new MessagingException(mailet.getMailetName() + " mailet cannot forward " + originalMail.getName() + ". " +
"Invalid sender domain for " + newMail.getSender() + ". " +
http://git-wip-us.apache.org/repos/asf/james-project/blob/01738f69/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
index 7cd8bcc..e80f8b6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
@@ -86,6 +86,10 @@ public class SpecialAddressesUtils {
return ImmutableSet.of(mailAddress);
}
+ if (mailAddress.isNullSender()) {
+ return ImmutableList.of();
+ }
+
SpecialAddressKind specialAddressKind = SpecialAddressKind.forValue(mailAddress.getLocalPart());
if (specialAddressKind == null) {
return ImmutableSet.of(mailAddress);
@@ -95,7 +99,7 @@ public class SpecialAddressesUtils {
case FROM:
case REVERSE_PATH:
return Optional.ofNullable(mail.getSender())
- .map(sender -> ImmutableSet.of(sender))
+ .map(ImmutableSet::of)
.orElse(ImmutableSet.of());
case REPLY_TO:
return getReplyTosFromMail(mail);
@@ -186,6 +190,7 @@ public class SpecialAddressesUtils {
case SENDER:
case REVERSE_PATH:
return Optional.ofNullable(mail.getSender())
+ .filter(address -> !address.isNullSender())
.map(ImmutableSet::of)
.orElse(ImmutableSet.of());
case FROM:
http://git-wip-us.apache.org/repos/asf/james-project/blob/01738f69/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
index cdde96b..2aa4ada 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java
@@ -124,6 +124,27 @@ public class BounceTest {
}
@Test
+ public void bounceShouldNotSendEmailToNullSender() throws Exception {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .mailetName(MAILET_NAME)
+ .mailetContext(fakeMailContext)
+ .build();
+ bounce.init(mailetConfig);
+
+ FakeMail mail = FakeMail.builder()
+ .name(MAILET_NAME)
+ .sender(MailAddress.nullSender())
+ .recipient(MailAddressFixture.ANY_AT_JAMES)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setText("My content"))
+ .build();
+
+ bounce.service(mail);
+
+ assertThat(fakeMailContext.getSentMails()).isEmpty();
+ }
+
+ @Test
public void bounceShouldChangeTheStateWhenNoSenderAndPassThroughEqualsFalse() throws Exception {
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
.mailetName(MAILET_NAME)
http://git-wip-us.apache.org/repos/asf/james-project/blob/01738f69/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
index ef490b3..4875680 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
@@ -385,12 +385,13 @@ public class RedirectTest {
FakeMail mail = FakeMail.builder()
- .name(MAILET_NAME)
- .sender(MailAddressFixture.ANY_AT_JAMES)
- .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
- .setSubject("My subject")
- .setText("content"))
- .build();
+ .name(MAILET_NAME)
+ .recipient(MailAddressFixture.RECIPIENT1)
+ .sender(MailAddressFixture.ANY_AT_JAMES)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setSubject("My subject")
+ .setText("content"))
+ .build();
redirect.service(mail);
@@ -411,6 +412,7 @@ public class RedirectTest {
FakeMail mail = FakeMail.builder()
.name(MAILET_NAME)
.sender(MailAddressFixture.ANY_AT_JAMES)
+ .recipient(MailAddressFixture.RECIPIENT1)
.mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
.addHeader("Message-ID", messageId)
.setSubject("My subject")
@@ -437,6 +439,7 @@ public class RedirectTest {
FakeMail mail = FakeMail.builder()
.name(MAILET_NAME)
.sender(MailAddressFixture.ANY_AT_JAMES)
+ .recipient(MailAddressFixture.RECIPIENT1)
.mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
.addHeader("Message-ID", messageId)
.setSubject("My subject")
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[06/13] james-project git commit: JAMES-2545 implement a channel pool
for rabbitmq cnx
Posted by bt...@apache.org.
JAMES-2545 implement a channel pool for rabbitmq cnx
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3313b53d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3313b53d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3313b53d
Branch: refs/heads/master
Commit: 3313b53d978e5ae52cccd725258bb9804bd4aeee
Parents: 01738f6
Author: Matthieu Baechler <ma...@apache.org>
Authored: Mon Sep 10 18:11:41 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:42 2018 +0700
----------------------------------------------------------------------
backends-common/rabbitmq/pom.xml | 5 +
.../backend/rabbitmq/RabbitChannelPool.java | 103 +++++++++++++++++++
.../james/queue/rabbitmq/RabbitClient.java | 43 ++++----
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 3 +-
.../rabbitmq/RabbitMqMailQueueFactoryTest.java | 3 +-
5 files changed, 137 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3313b53d/backends-common/rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/pom.xml b/backends-common/rabbitmq/pom.xml
index d518753..9583901 100644
--- a/backends-common/rabbitmq/pom.xml
+++ b/backends-common/rabbitmq/pom.xml
@@ -63,6 +63,11 @@
<artifactId>commons-configuration</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
+ <version>2.6.0</version>
+ </dependency>
+ <dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3313b53d/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
new file mode 100644
index 0000000..c4a9fe6
--- /dev/null
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitChannelPool.java
@@ -0,0 +1,103 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.backend.rabbitmq;
+
+import org.apache.commons.pool2.BasePooledObjectFactory;
+import org.apache.commons.pool2.ObjectPool;
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+
+public class RabbitChannelPool {
+
+ private static class ChannelBasePooledObjectFactory extends BasePooledObjectFactory<Channel> {
+ private final Connection connection;
+
+ public ChannelBasePooledObjectFactory(Connection connection) {
+ this.connection = connection;
+ }
+
+ @Override
+ public Channel create() throws Exception {
+ return connection.createChannel();
+ }
+
+ @Override
+ public PooledObject<Channel> wrap(Channel obj) {
+ return new DefaultPooledObject<>(obj);
+ }
+ }
+
+ @FunctionalInterface
+ public interface RabbitFunction<T, E extends Throwable> {
+ T execute(Channel channel) throws E;
+ }
+
+ @FunctionalInterface
+ public interface RabbitConsumer<E extends Throwable> {
+ void execute(Channel channel) throws E;
+ }
+
+ private final ObjectPool<Channel> pool;
+
+ public RabbitChannelPool(Connection connection) {
+ pool = new GenericObjectPool<>(
+ new ChannelBasePooledObjectFactory(connection));
+ }
+
+ public <T, E extends Throwable> T execute(RabbitFunction<T, E> f) throws E {
+ Channel channel = borrowChannel();
+ try {
+ return f.execute(channel);
+ } finally {
+ returnChannel(channel);
+ }
+ }
+
+
+ public <E extends Throwable> void execute(RabbitConsumer<E> f) throws E {
+ Channel channel = borrowChannel();
+ try {
+ f.execute(channel);
+ } finally {
+ returnChannel(channel);
+ }
+ }
+
+ private Channel borrowChannel() {
+ try {
+ return pool.borrowObject();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void returnChannel(Channel channel) {
+ try {
+ pool.returnObject(channel);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3313b53d/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
index d5a945d..ae6b1be 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
@@ -22,11 +22,11 @@ package org.apache.james.queue.rabbitmq;
import java.io.IOException;
import java.util.Optional;
+import org.apache.james.backend.rabbitmq.RabbitChannelPool;
import org.apache.james.queue.api.MailQueue;
import com.google.common.collect.ImmutableMap;
import com.rabbitmq.client.AMQP;
-import com.rabbitmq.client.Channel;
import com.rabbitmq.client.GetResponse;
class RabbitClient {
@@ -39,35 +39,42 @@ class RabbitClient {
private static final ImmutableMap<String, Object> NO_ARGUMENTS = ImmutableMap.of();
private static final String ROUTING_KEY = "";
- private final Channel channel;
+ private final RabbitChannelPool channelPool;
- RabbitClient(Channel channel) {
- this.channel = channel;
+ RabbitClient(RabbitChannelPool channelPool) {
+ this.channelPool = channelPool;
}
void attemptQueueCreation(MailQueueName name) {
- try {
- channel.exchangeDeclare(name.toRabbitExchangeName().asString(), "direct", DURABLE);
- channel.queueDeclare(name.toWorkQueueName().asString(), DURABLE, !EXCLUSIVE, !AUTO_DELETE, NO_ARGUMENTS);
- channel.queueBind(name.toWorkQueueName().asString(), name.toRabbitExchangeName().asString(), ROUTING_KEY);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ channelPool.execute(channel -> {
+ try {
+ channel.exchangeDeclare(name.toRabbitExchangeName().asString(), "direct", DURABLE);
+ channel.queueDeclare(name.toWorkQueueName().asString(), DURABLE, !EXCLUSIVE, !AUTO_DELETE, NO_ARGUMENTS);
+ channel.queueBind(name.toWorkQueueName().asString(), name.toRabbitExchangeName().asString(), ROUTING_KEY);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ });
}
void publish(MailQueueName name, byte[] message) throws MailQueue.MailQueueException {
- try {
- channel.basicPublish(name.toRabbitExchangeName().asString(), ROUTING_KEY, new AMQP.BasicProperties(), message);
- } catch (IOException e) {
- throw new MailQueue.MailQueueException("Unable to publish to RabbitMQ", e);
- }
+ channelPool.execute(channel -> {
+ try {
+ channel.basicPublish(name.toRabbitExchangeName().asString(), ROUTING_KEY, new AMQP.BasicProperties(), message);
+ } catch (IOException e) {
+ throw new MailQueue.MailQueueException("Unable to publish to RabbitMQ", e);
+ }
+ });
}
void ack(long deliveryTag) throws IOException {
- channel.basicAck(deliveryTag, !MULTIPLE);
+ RabbitChannelPool.RabbitConsumer<IOException> consumer = channel -> channel.basicAck(deliveryTag, !MULTIPLE);
+ channelPool.execute(consumer);
}
Optional<GetResponse> poll(MailQueueName name) throws IOException {
- return Optional.ofNullable(channel.basicGet(name.toWorkQueueName().asString(), !AUTO_ACK));
+ RabbitChannelPool.RabbitFunction<Optional<GetResponse>, IOException> f = channel ->
+ Optional.ofNullable(channel.basicGet(name.toWorkQueueName().asString(), !AUTO_ACK));
+ return channelPool.execute(f);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3313b53d/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index aaf57f7..c2d5c07 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -28,6 +28,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.http.client.utils.URIBuilder;
import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backend.rabbitmq.RabbitChannelPool;
import org.apache.james.backend.rabbitmq.ReusableDockerRabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraExtension;
@@ -70,7 +71,7 @@ public class RabbitMQMailQueueTest implements MailQueueContract {
.setPort(rabbitMQ.getAdminPort())
.build();
- RabbitClient rabbitClient = new RabbitClient(rabbitMQ.connectionFactory().newConnection().createChannel());
+ RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQ.connectionFactory().newConnection()));
RabbitMQMailQueue.Factory factory = new RabbitMQMailQueue.Factory(rabbitClient, mimeMessageStore, BLOB_ID_FACTORY);
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitManagementUri, new RabbitMQManagementCredentials("guest", "guest".toCharArray()));
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3313b53d/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
index cf1cb88..bbb4734 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
@@ -28,6 +28,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.http.client.utils.URIBuilder;
import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backend.rabbitmq.RabbitChannelPool;
import org.apache.james.backend.rabbitmq.ReusableDockerRabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraExtension;
@@ -70,7 +71,7 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM
.setPort(rabbitMQ.getAdminPort())
.build();
- RabbitClient rabbitClient = new RabbitClient(rabbitMQ.connectionFactory().newConnection().createChannel());
+ RabbitClient rabbitClient = new RabbitClient(new RabbitChannelPool(rabbitMQ.connectionFactory().newConnection()));
RabbitMQMailQueue.Factory factory = new RabbitMQMailQueue.Factory(rabbitClient, mimeMessageStore, BLOB_ID_FACTORY);
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitManagementUri, new RabbitMQManagementCredentials("guest", "guest".toCharArray()));
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[10/13] james-project git commit: JAMES-2544 Use CassandraCluster
extension where applicable
Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index ca9f314..e504e61 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -28,7 +28,7 @@ import java.util.Optional;
import javax.mail.Flags;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MessageUid;
@@ -47,12 +47,9 @@ import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
@@ -64,8 +61,14 @@ public class CassandraIndexTableHandlerTest {
public static final int UID_VALIDITY = 15;
public static final long MODSEQ = 17;
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMailboxCounterModule.MODULE,
+ CassandraMailboxRecentsModule.MODULE,
+ CassandraFirstUnseenModule.MODULE,
+ CassandraApplicableFlagsModule.MODULE,
+ CassandraDeletedMessageModule.MODULE));
private CassandraMailboxCounterDAO mailboxCounterDAO;
private CassandraMailboxRecentsDAO mailboxRecentsDAO;
@@ -75,19 +78,8 @@ public class CassandraIndexTableHandlerTest {
private CassandraDeletedMessageDAO deletedMessageDAO;
private Mailbox mailbox;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraMailboxCounterModule.MODULE,
- CassandraMailboxRecentsModule.MODULE,
- CassandraFirstUnseenModule.MODULE,
- CassandraApplicableFlagsModule.MODULE,
- CassandraDeletedMessageModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
mailboxCounterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
mailboxRecentsDAO = new CassandraMailboxRecentsDAO(cassandra.getConf());
firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
@@ -105,18 +97,8 @@ public class CassandraIndexTableHandlerTest {
MAILBOX_ID);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void updateIndexOnAddShouldIncrementMessageCount() throws Exception {
+ void updateIndexOnAddShouldIncrementMessageCount() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -129,7 +111,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldIncrementUnseenMessageCountWhenUnseen() throws Exception {
+ void updateIndexOnAddShouldIncrementUnseenMessageCountWhenUnseen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -142,7 +124,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldNotIncrementUnseenMessageCountWhenSeen() throws Exception {
+ void updateIndexOnAddShouldNotIncrementUnseenMessageCountWhenSeen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -155,7 +137,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldNotAddRecentWhenNoRecent() throws Exception {
+ void updateIndexOnAddShouldNotAddRecentWhenNoRecent() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -168,7 +150,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldAddRecentWhenRecent() throws Exception {
+ void updateIndexOnAddShouldAddRecentWhenRecent() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.RECENT));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -181,7 +163,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldDecrementMessageCount() throws Exception {
+ void updateIndexOnDeleteShouldDecrementMessageCount() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -199,7 +181,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldDecrementUnseenMessageCountWhenUnseen() throws Exception {
+ void updateIndexOnDeleteShouldDecrementUnseenMessageCountWhenUnseen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -217,7 +199,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldNotDecrementUnseenMessageCountWhenSeen() throws Exception {
+ void updateIndexOnDeleteShouldNotDecrementUnseenMessageCountWhenSeen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -235,7 +217,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldRemoveRecentWhenRecent() throws Exception {
+ void updateIndexOnDeleteShouldRemoveRecentWhenRecent() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.RECENT));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -253,7 +235,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldRemoveUidFromRecentAnyway() throws Exception {
+ void updateIndexOnDeleteShouldRemoveUidFromRecentAnyway() {
// Clean up strategy if some flags updates missed
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.RECENT));
@@ -272,7 +254,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldDeleteMessageFromDeletedMessage() throws Exception {
+ void updateIndexOnDeleteShouldDeleteMessageFromDeletedMessage() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.getUid()).thenReturn(MESSAGE_UID);
deletedMessageDAO.addDeleted(MAILBOX_ID, MESSAGE_UID).join();
@@ -292,7 +274,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotChangeMessageCount() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotChangeMessageCount() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -311,7 +293,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldDecrementUnseenMessageCountWhenSeenIsSet() throws Exception {
+ void updateIndexOnFlagsUpdateShouldDecrementUnseenMessageCountWhenSeenIsSet() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -330,7 +312,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldSaveMessageInDeletedMessageWhenDeletedFlagIsSet() throws Exception {
+ void updateIndexOnFlagsUpdateShouldSaveMessageInDeletedMessageWhenDeletedFlagIsSet() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -352,7 +334,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldRemoveMessageInDeletedMessageWhenDeletedFlagIsUnset() throws Exception {
+ void updateIndexOnFlagsUpdateShouldRemoveMessageInDeletedMessageWhenDeletedFlagIsUnset() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -376,7 +358,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotRemoveMessageInDeletedMessageWhenDeletedFlagIsNotUnset() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotRemoveMessageInDeletedMessageWhenDeletedFlagIsNotUnset() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -400,7 +382,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotSaveMessageInDeletedMessageWhenDeletedFlagIsNotSet() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotSaveMessageInDeletedMessageWhenDeletedFlagIsNotSet() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -422,7 +404,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldIncrementUnseenMessageCountWhenSeenIsUnset() throws Exception {
+ void updateIndexOnFlagsUpdateShouldIncrementUnseenMessageCountWhenSeenIsUnset() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -441,7 +423,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotChangeUnseenCountWhenBothSeen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotChangeUnseenCountWhenBothSeen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -460,7 +442,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotChangeUnseenCountWhenBothUnSeen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotChangeUnseenCountWhenBothUnSeen() throws Exception {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -479,7 +461,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldAddRecentOnSettingRecentFlag() throws Exception {
+ void updateIndexOnFlagsUpdateShouldAddRecentOnSettingRecentFlag() {
// Clean up strategy if some flags updates missed
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
@@ -499,7 +481,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldRemoveRecentOnUnsettingRecentFlag() throws Exception {
+ void updateIndexOnFlagsUpdateShouldRemoveRecentOnUnsettingRecentFlag() {
// Clean up strategy if some flags updates missed
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.RECENT));
@@ -519,7 +501,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldUpdateFirstUnseenWhenUnseen() throws Exception {
+ void updateIndexOnAddShouldUpdateFirstUnseenWhenUnseen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -531,7 +513,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldSaveMessageInDeletedWhenDeleted() throws Exception {
+ void updateIndexOnAddShouldSaveMessageInDeletedWhenDeleted() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.DELETED));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -546,7 +528,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldNotSaveMessageInDeletedWhenNotDeleted() throws Exception {
+ void updateIndexOnAddShouldNotSaveMessageInDeletedWhenNotDeleted() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -561,7 +543,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldNotUpdateFirstUnseenWhenSeen() throws Exception {
+ void updateIndexOnAddShouldNotUpdateFirstUnseenWhenSeen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -572,7 +554,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldUpdateLastUnseenWhenSetToSeen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldUpdateLastUnseenWhenSetToSeen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -590,7 +572,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldUpdateLastUnseenWhenSetToUnseen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldUpdateLastUnseenWhenSetToUnseen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -609,7 +591,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotUpdateLastUnseenWhenKeepUnseen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotUpdateLastUnseenWhenKeepUnseen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -628,7 +610,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldNotUpdateLastUnseenWhenKeepSeen() throws Exception {
+ void updateIndexOnFlagsUpdateShouldNotUpdateLastUnseenWhenKeepSeen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags(Flags.Flag.SEEN));
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -646,7 +628,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnDeleteShouldUpdateFirstUnseenWhenUnseen() throws Exception {
+ void updateIndexOnDeleteShouldUpdateFirstUnseenWhenUnseen() {
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(new Flags());
when(message.getUid()).thenReturn(MESSAGE_UID);
@@ -662,7 +644,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnAddShouldUpdateApplicableFlag() throws Exception {
+ void updateIndexOnAddShouldUpdateApplicableFlag() {
Flags customFlags = new Flags("custom");
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(customFlags);
@@ -675,7 +657,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void updateIndexOnFlagsUpdateShouldUnionApplicableFlag() throws Exception {
+ void updateIndexOnFlagsUpdateShouldUnionApplicableFlag() {
Flags customFlag = new Flags("custom");
MailboxMessage message = mock(MailboxMessage.class);
when(message.createFlags()).thenReturn(customFlag);
@@ -696,7 +678,7 @@ public class CassandraIndexTableHandlerTest {
}
@Test
- public void applicableFlagShouldKeepAllFlagsEvenTheMessageRemovesFlag() throws Exception {
+ void applicableFlagShouldKeepAllFlagsEvenTheMessageRemovesFlag() {
Flags messageFlags = FlagsBuilder.builder()
.add("custom1", "custom2", "custom3")
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index fb14a1e..6292f98 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -22,81 +22,64 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-public class CassandraMailboxCounterDAOTest {
- public static final int UID_VALIDITY = 15;
- public static final CassandraId MAILBOX_ID = CassandraId.timeBased();
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class CassandraMailboxCounterDAOTest {
+ private static final int UID_VALIDITY = 15;
+ private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
+
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailboxCounterModule.MODULE);
+
private CassandraMailboxCounterDAO testee;
private SimpleMailbox mailbox;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraMailboxCounterModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailboxCounterDAO(cassandra.getConf());
mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, MAILBOX_ID);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void countMessagesInMailboxShouldReturnEmptyByDefault() throws Exception {
+ void countMessagesInMailboxShouldReturnEmptyByDefault() throws Exception {
assertThat(testee.countMessagesInMailbox(mailbox).join()).isEmpty();
}
@Test
- public void countUnseenMessagesInMailboxShouldReturnEmptyByDefault() throws Exception {
+ void countUnseenMessagesInMailboxShouldReturnEmptyByDefault() throws Exception {
assertThat(testee.countUnseenMessagesInMailbox(mailbox).join()).isEmpty();
}
@Test
- public void retrieveMailboxCounterShouldReturnEmptyByDefault() throws Exception {
+ void retrieveMailboxCounterShouldReturnEmptyByDefault() throws Exception {
assertThat(testee.retrieveMailboxCounters(mailbox).join()).isEmpty();
}
@Test
- public void incrementCountShouldAddOneWhenAbsent() throws Exception {
+ void incrementCountShouldAddOneWhenAbsent() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
assertThat(testee.countMessagesInMailbox(mailbox).join()).contains(1L);
}
@Test
- public void incrementUnseenShouldAddOneWhenAbsent() throws Exception {
+ void incrementUnseenShouldAddOneWhenAbsent() throws Exception {
testee.incrementUnseen(MAILBOX_ID).join();
assertThat(testee.countUnseenMessagesInMailbox(mailbox).join()).contains(1L);
}
@Test
- public void incrementUnseenShouldAddOneWhenAbsentOnMailboxCounters() throws Exception {
+ void incrementUnseenShouldAddOneWhenAbsentOnMailboxCounters() throws Exception {
testee.incrementUnseen(MAILBOX_ID).join();
assertThat(testee.retrieveMailboxCounters(mailbox).join())
@@ -107,7 +90,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void incrementCountShouldAddOneWhenAbsentOnMailboxCounters() throws Exception {
+ void incrementCountShouldAddOneWhenAbsentOnMailboxCounters() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
assertThat(testee.retrieveMailboxCounters(mailbox).join())
@@ -118,7 +101,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void retrieveMailboxCounterShouldWorkWhenFullRow() throws Exception {
+ void retrieveMailboxCounterShouldWorkWhenFullRow() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
testee.incrementUnseen(MAILBOX_ID).join();
@@ -130,7 +113,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementCountShouldRemoveOne() throws Exception {
+ void decrementCountShouldRemoveOne() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
testee.decrementCount(MAILBOX_ID).join();
@@ -140,7 +123,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementUnseenShouldRemoveOne() throws Exception {
+ void decrementUnseenShouldRemoveOne() throws Exception {
testee.incrementUnseen(MAILBOX_ID).join();
testee.decrementUnseen(MAILBOX_ID).join();
@@ -150,7 +133,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void incrementUnseenShouldHaveNoImpactOnMessageCount() throws Exception {
+ void incrementUnseenShouldHaveNoImpactOnMessageCount() throws Exception {
testee.incrementUnseen(MAILBOX_ID).join();
assertThat(testee.countMessagesInMailbox(mailbox).join())
@@ -158,7 +141,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void incrementCountShouldHaveNoEffectOnUnseenCount() throws Exception {
+ void incrementCountShouldHaveNoEffectOnUnseenCount() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
assertThat(testee.countUnseenMessagesInMailbox(mailbox).join())
@@ -166,7 +149,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementUnseenShouldHaveNoEffectOnMessageCount() throws Exception {
+ void decrementUnseenShouldHaveNoEffectOnMessageCount() throws Exception {
testee.incrementCount(MAILBOX_ID).join();
testee.decrementUnseen(MAILBOX_ID).join();
@@ -176,7 +159,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementCountShouldHaveNoEffectOnUnseenCount() throws Exception {
+ void decrementCountShouldHaveNoEffectOnUnseenCount() throws Exception {
testee.incrementUnseen(MAILBOX_ID).join();
testee.decrementCount(MAILBOX_ID).join();
@@ -186,7 +169,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementCountCanLeadToNegativeValue() throws Exception {
+ void decrementCountCanLeadToNegativeValue() throws Exception {
testee.decrementCount(MAILBOX_ID).join();
assertThat(testee.countMessagesInMailbox(mailbox).join())
@@ -194,7 +177,7 @@ public class CassandraMailboxCounterDAOTest {
}
@Test
- public void decrementUnseenCanLeadToNegativeValue() throws Exception {
+ void decrementUnseenCanLeadToNegativeValue() throws Exception {
testee.decrementUnseen(MAILBOX_ID).join();
assertThat(testee.countUnseenMessagesInMailbox(mailbox).join())
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index 6844f5e..09dc1ee 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -25,45 +25,39 @@ import java.util.List;
import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
-public class CassandraMailboxDAOTest {
+class CassandraMailboxDAOTest {
+ private static final int UID_VALIDITY_1 = 145;
+ private static final int UID_VALIDITY_2 = 147;
+ private static final MailboxPath NEW_MAILBOX_PATH = MailboxPath.forUser("user", "xyz");
+ private static CassandraId CASSANDRA_ID_1 = CassandraId.timeBased();
+ private static CassandraId CASSANDRA_ID_2 = CassandraId.timeBased();
- public static final int UID_VALIDITY_1 = 145;
- public static final int UID_VALIDITY_2 = 147;
- public static final MailboxPath NEW_MAILBOX_PATH = MailboxPath.forUser("user", "xyz");
- public static CassandraId CASSANDRA_ID_1 = CassandraId.timeBased();
- public static CassandraId CASSANDRA_ID_2 = CassandraId.timeBased();
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMailboxModule.MODULE,
+ CassandraAclModule.MODULE));
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
private CassandraMailboxDAO testee;
private SimpleMailbox mailbox1;
private SimpleMailbox mailbox2;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(CassandraMailboxModule.MODULE, CassandraAclModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", "abcd"),
@@ -74,24 +68,14 @@ public class CassandraMailboxDAOTest {
CASSANDRA_ID_2);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void retrieveMailboxShouldReturnEmptyWhenNone() {
+ void retrieveMailboxShouldReturnEmptyWhenNone() {
assertThat(testee.retrieveMailbox(CASSANDRA_ID_1).join())
.isEmpty();
}
@Test
- public void saveShouldAddAMailbox() {
+ void saveShouldAddAMailbox() {
testee.save(mailbox1).join();
Optional<SimpleMailbox> readMailbox = testee.retrieveMailbox(CASSANDRA_ID_1)
@@ -101,7 +85,7 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void saveShouldOverride() {
+ void saveShouldOverride() {
testee.save(mailbox1).join();
mailbox2.setMailboxId(CASSANDRA_ID_1);
@@ -115,7 +99,7 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void retrieveAllMailboxesShouldBeEmptyByDefault() {
+ void retrieveAllMailboxesShouldBeEmptyByDefault() {
List<SimpleMailbox> mailboxes = testee.retrieveAllMailboxes()
.join()
.collect(Guavate.toImmutableList());
@@ -124,7 +108,7 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void retrieveAllMailboxesShouldReturnSingleMailbox() {
+ void retrieveAllMailboxesShouldReturnSingleMailbox() {
testee.save(mailbox1).join();
List<SimpleMailbox> mailboxes = testee.retrieveAllMailboxes()
@@ -135,7 +119,7 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void retrieveAllMailboxesShouldReturnMultiMailboxes() {
+ void retrieveAllMailboxesShouldReturnMultiMailboxes() {
testee.save(mailbox1).join();
testee.save(mailbox2).join();
@@ -147,12 +131,12 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void deleteShouldNotFailWhenMailboxIsAbsent() {
+ void deleteShouldNotFailWhenMailboxIsAbsent() {
testee.delete(CASSANDRA_ID_1).join();
}
@Test
- public void deleteShouldRemoveExistingMailbox() {
+ void deleteShouldRemoveExistingMailbox() {
testee.save(mailbox1).join();
testee.delete(CASSANDRA_ID_1).join();
@@ -162,12 +146,12 @@ public class CassandraMailboxDAOTest {
}
@Test
- public void updateShouldNotFailWhenMailboxIsAbsent() {
+ void updateShouldNotFailWhenMailboxIsAbsent() {
testee.updatePath(CASSANDRA_ID_1, NEW_MAILBOX_PATH).join();
}
@Test
- public void updateShouldChangeMailboxPath() {
+ void updateShouldChangeMailboxPath() {
testee.save(mailbox1).join();
testee.updatePath(CASSANDRA_ID_1, NEW_MAILBOX_PATH).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index ef7b1b1..b4f8090 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -25,7 +25,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -34,50 +34,33 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraMailboxMapperConcurrencyTest {
+class CassandraMailboxMapperConcurrencyTest {
private static final int UID_VALIDITY = 52;
private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("user", "name");
private static final int THREAD_COUNT = 10;
private static final int OPERATION_COUNT = 10;
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMailboxModule.MODULE,
+ CassandraAclModule.MODULE));
private CassandraMailboxMapper testee;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(CassandraMailboxModule.MODULE, CassandraAclModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = GuiceUtils.testInjector(cassandra)
.getInstance(CassandraMailboxMapper.class);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void saveShouldBeThreadSafe() throws Exception {
+ void saveShouldBeThreadSafe() throws Exception {
boolean termination = ConcurrentTestRunner.builder()
.threadCount(THREAD_COUNT)
.operationCount(OPERATION_COUNT)
@@ -90,7 +73,7 @@ public class CassandraMailboxMapperConcurrencyTest {
}
@Test
- public void saveWithUpdateShouldBeThreadSafe() throws Exception {
+ void saveWithUpdateShouldBeThreadSafe() throws Exception {
SimpleMailbox mailbox = new SimpleMailbox(MAILBOX_PATH, UID_VALIDITY);
testee.save(mailbox);
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
index d1ab133..429b8af 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
@@ -21,19 +21,20 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
-import org.junit.Test;
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.junit.jupiter.api.Test;
import com.github.steveash.guavate.Guavate;
-public class CassandraMailboxPathDAOImplTest extends CassandraMailboxPathDAOTest {
+class CassandraMailboxPathDAOImplTest extends CassandraMailboxPathDAOTest {
@Override
- CassandraMailboxPathDAO testee() {
+ CassandraMailboxPathDAO testee(CassandraCluster cassandra) {
return new CassandraMailboxPathDAOImpl(cassandra.getConf(), cassandra.getTypesProvider());
}
@Test
- public void countAllShouldReturnEntryCount() {
+ void countAllShouldReturnEntryCount() {
testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join();
testee.save(USER_OUTBOX_MAILBOXPATH, OUTBOX_ID).join();
testee.save(OTHER_USER_MAILBOXPATH, otherMailboxId).join();
@@ -45,7 +46,7 @@ public class CassandraMailboxPathDAOImplTest extends CassandraMailboxPathDAOTest
}
@Test
- public void countAllShouldReturnZeroByDefault() {
+ void countAllShouldReturnZeroByDefault() {
CassandraMailboxPathDAOImpl daoV1 = (CassandraMailboxPathDAOImpl) testee;
assertThat(daoV1.countAll().join())
@@ -53,7 +54,7 @@ public class CassandraMailboxPathDAOImplTest extends CassandraMailboxPathDAOTest
}
@Test
- public void readAllShouldReturnAllStoredData() {
+ void readAllShouldReturnAllStoredData() {
testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join();
testee.save(USER_OUTBOX_MAILBOXPATH, OUTBOX_ID).join();
testee.save(OTHER_USER_MAILBOXPATH, otherMailboxId).join();
@@ -68,7 +69,7 @@ public class CassandraMailboxPathDAOImplTest extends CassandraMailboxPathDAOTest
}
@Test
- public void readAllShouldReturnEmptyByDefault() {
+ void readAllShouldReturnEmptyByDefault() {
CassandraMailboxPathDAOImpl daoV1 = (CassandraMailboxPathDAOImpl) testee;
assertThat(daoV1.readAll().join().collect(Guavate.toImmutableList()))
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
index db054cd..2071b0f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
@@ -24,16 +24,13 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.MailboxPath;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
@@ -51,41 +48,25 @@ public abstract class CassandraMailboxPathDAOTest {
public static final MailboxPath USER_OUTBOX_MAILBOXPATH = MailboxPath.forUser(USER, "OUTBOX");
public static final MailboxPath OTHER_USER_MAILBOXPATH = MailboxPath.forUser(OTHER_USER, "INBOX");
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- protected static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailboxModule.MODULE);
protected CassandraMailboxPathDAO testee;
- abstract CassandraMailboxPathDAO testee();
-
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraMailboxModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() throws Exception {
- testee = testee();
- }
-
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
+ abstract CassandraMailboxPathDAO testee(CassandraCluster cassandra);
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
+ testee = testee(cassandra);
}
@Test
- public void cassandraIdAndPathShouldRespectBeanContract() {
+ void cassandraIdAndPathShouldRespectBeanContract() {
EqualsVerifier.forClass(CassandraIdAndPath.class).verify();
}
@Test
- public void saveShouldInsertNewEntry() {
+ void saveShouldInsertNewEntry() {
assertThat(testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join()).isTrue();
assertThat(testee.retrieveId(USER_INBOX_MAILBOXPATH).join())
@@ -93,20 +74,20 @@ public abstract class CassandraMailboxPathDAOTest {
}
@Test
- public void saveOnSecondShouldBeFalse() {
+ void saveOnSecondShouldBeFalse() {
assertThat(testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join()).isTrue();
assertThat(testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join()).isFalse();
}
@Test
- public void retrieveIdShouldReturnEmptyWhenEmptyData() {
+ void retrieveIdShouldReturnEmptyWhenEmptyData() {
assertThat(testee.retrieveId(USER_INBOX_MAILBOXPATH).join()
.isPresent())
.isFalse();
}
@Test
- public void retrieveIdShouldReturnStoredData() {
+ void retrieveIdShouldReturnStoredData() {
testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join();
assertThat(testee.retrieveId(USER_INBOX_MAILBOXPATH).join())
@@ -114,7 +95,7 @@ public abstract class CassandraMailboxPathDAOTest {
}
@Test
- public void getUserMailboxesShouldReturnAllMailboxesOfUser() {
+ void getUserMailboxesShouldReturnAllMailboxesOfUser() {
testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join();
testee.save(USER_OUTBOX_MAILBOXPATH, OUTBOX_ID).join();
testee.save(OTHER_USER_MAILBOXPATH, otherMailboxId).join();
@@ -130,12 +111,12 @@ public abstract class CassandraMailboxPathDAOTest {
}
@Test
- public void deleteShouldNotThrowWhenEmpty() {
+ void deleteShouldNotThrowWhenEmpty() {
testee.delete(USER_INBOX_MAILBOXPATH).join();
}
@Test
- public void deleteShouldDeleteTheExistingMailboxId() {
+ void deleteShouldDeleteTheExistingMailboxId() {
testee.save(USER_INBOX_MAILBOXPATH, INBOX_ID).join();
testee.delete(USER_INBOX_MAILBOXPATH).join();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
index 1840821..dc1f559 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
@@ -19,11 +19,12 @@
package org.apache.james.mailbox.cassandra.mail;
+import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
public class CassandraMailboxPathV2DAOTest extends CassandraMailboxPathDAOTest {
@Override
- CassandraMailboxPathDAO testee() {
+ CassandraMailboxPathDAO testee(CassandraCluster cassandra) {
return new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
index d5767eb..f189677 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
@@ -24,58 +24,39 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.stream.IntStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.steveash.guavate.Guavate;
-public class CassandraMailboxRecentDAOTest {
- public static final MessageUid UID1 = MessageUid.of(36L);
- public static final MessageUid UID2 = MessageUid.of(37L);
- public static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
+class CassandraMailboxRecentDAOTest {
+ private static final MessageUid UID1 = MessageUid.of(36L);
+ private static final MessageUid UID2 = MessageUid.of(37L);
+ private static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMailboxRecentsModule.MODULE);
private CassandraMailboxRecentsDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraMailboxRecentsModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
testee = new CassandraMailboxRecentsDAO(cassandra.getConf());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void getRecentMessageUidsInMailboxShouldBeEmptyByDefault() throws Exception {
+ void getRecentMessageUidsInMailboxShouldBeEmptyByDefault() {
assertThat(testee.getRecentMessageUidsInMailbox(CASSANDRA_ID).join()
.collect(Guavate.toImmutableList())).isEmpty();
}
@Test
- public void addToRecentShouldAddUidWhenEmpty() throws Exception {
+ void addToRecentShouldAddUidWhenEmpty() {
testee.addToRecent(CASSANDRA_ID, UID1).join();
assertThat(testee.getRecentMessageUidsInMailbox(CASSANDRA_ID).join()
@@ -83,7 +64,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void removeFromRecentShouldRemoveUidWhenOnlyOneUid() throws Exception {
+ void removeFromRecentShouldRemoveUidWhenOnlyOneUid() {
testee.addToRecent(CASSANDRA_ID, UID1).join();
testee.removeFromRecent(CASSANDRA_ID, UID1).join();
@@ -93,7 +74,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void removeFromRecentShouldNotFailIfNotExisting() throws Exception {
+ void removeFromRecentShouldNotFailIfNotExisting() {
testee.removeFromRecent(CASSANDRA_ID, UID1).join();
assertThat(testee.getRecentMessageUidsInMailbox(CASSANDRA_ID).join()
@@ -101,7 +82,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void addToRecentShouldAddUidWhenNotEmpty() throws Exception {
+ void addToRecentShouldAddUidWhenNotEmpty() {
testee.addToRecent(CASSANDRA_ID, UID1).join();
testee.addToRecent(CASSANDRA_ID, UID2).join();
@@ -111,7 +92,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void removeFromRecentShouldOnlyRemoveUidWhenNotEmpty() throws Exception {
+ void removeFromRecentShouldOnlyRemoveUidWhenNotEmpty() {
testee.addToRecent(CASSANDRA_ID, UID1).join();
testee.addToRecent(CASSANDRA_ID, UID2).join();
@@ -122,7 +103,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void addToRecentShouldBeIdempotent() throws Exception {
+ void addToRecentShouldBeIdempotent() {
testee.addToRecent(CASSANDRA_ID, UID1).join();
testee.addToRecent(CASSANDRA_ID, UID1).join();
@@ -131,7 +112,7 @@ public class CassandraMailboxRecentDAOTest {
}
@Test
- public void getRecentMessageUidsInMailboxShouldNotTimeoutWhenOverPagingLimit() throws Exception {
+ void getRecentMessageUidsInMailboxShouldNotTimeoutWhenOverPagingLimit() {
int pageSize = 5000;
int size = pageSize + 1000;
IntStream.range(0, size)
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 2c89621..da90b78 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -35,7 +35,7 @@ import javax.mail.util.SharedByteArrayInputStream;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.HashBlobId;
@@ -55,12 +55,9 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.apache.james.util.streams.Limit;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -68,15 +65,18 @@ import com.google.common.primitives.Bytes;
import nl.jqno.equalsverifier.EqualsVerifier;
-public class CassandraMessageDAOTest {
+class CassandraMessageDAOTest {
private static final int BODY_START = 16;
private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
private static final String CONTENT = "Subject: Test7 \n\nBody7\n.\n";
private static final MessageUid messageUid = MessageUid.of(1);
private static final List<MessageAttachment> NO_ATTACHMENT = ImmutableList.of();
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
+ CassandraModule.aggregateModules(
+ CassandraMessageModule.MODULE,
+ CassandraBlobModule.MODULE));
private CassandraMessageDAO testee;
private CassandraMessageId.Factory messageIdFactory;
@@ -85,14 +85,8 @@ public class CassandraMessageDAOTest {
private CassandraMessageId messageId;
private List<ComposedMessageIdWithMetaData> messageIds;
- @BeforeClass
- public static void setUpClass() {
- CassandraModule modules = CassandraModule.aggregateModules(CassandraMessageModule.MODULE, CassandraBlobModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
messageIdFactory = new CassandraMessageId.Factory();
messageId = messageIdFactory.generate();
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
@@ -107,18 +101,8 @@ public class CassandraMessageDAOTest {
.build());
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void saveShouldSaveNullValueForTextualLineCountAsZero() throws Exception {
+ void saveShouldSaveNullValueForTextualLineCountAsZero() throws Exception {
message = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), NO_ATTACHMENT);
testee.save(message).join();
@@ -131,7 +115,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void saveShouldSaveTextualLineCount() throws Exception {
+ void saveShouldSaveTextualLineCount() throws Exception {
long textualLineCount = 10L;
PropertyBuilder propertyBuilder = new PropertyBuilder();
propertyBuilder.setTextualLineCount(textualLineCount);
@@ -146,7 +130,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void saveShouldStoreMessageWithFullContent() throws Exception {
+ void saveShouldStoreMessageWithFullContent() throws Exception {
message = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), NO_ATTACHMENT);
testee.save(message).join();
@@ -159,7 +143,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void saveShouldStoreMessageWithBodyContent() throws Exception {
+ void saveShouldStoreMessageWithBodyContent() throws Exception {
message = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), NO_ATTACHMENT);
testee.save(message).join();
@@ -175,7 +159,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void saveShouldStoreMessageWithHeaderContent() throws Exception {
+ void saveShouldStoreMessageWithHeaderContent() throws Exception {
message = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), NO_ATTACHMENT);
testee.save(message).join();
@@ -211,14 +195,14 @@ public class CassandraMessageDAOTest {
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldReturnEmptyWhenNone() {
+ void retrieveAllMessageIdAttachmentIdsShouldReturnEmptyWhenNone() {
Stream<MessageIdAttachmentIds> actual = testee.retrieveAllMessageIdAttachmentIds().join();
assertThat(actual).isEmpty();
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStored() throws Exception {
+ void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStored() throws Exception {
//Given
MessageAttachment attachment = MessageAttachment.builder()
.attachment(Attachment.builder()
@@ -238,7 +222,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStoredWithTwoAttachments() throws Exception {
+ void retrieveAllMessageIdAttachmentIdsShouldReturnOneWhenStoredWithTwoAttachments() throws Exception {
//Given
MessageAttachment attachment1 = MessageAttachment.builder()
.attachment(Attachment.builder()
@@ -264,7 +248,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldReturnAllWhenStoredWithAttachment() throws Exception {
+ void retrieveAllMessageIdAttachmentIdsShouldReturnAllWhenStoredWithAttachment() throws Exception {
//Given
MessageId messageId1 = messageIdFactory.generate();
MessageId messageId2 = messageIdFactory.generate();
@@ -295,7 +279,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldReturnEmtpyWhenStoredWithoutAttachment() throws Exception {
+ void retrieveAllMessageIdAttachmentIdsShouldReturnEmtpyWhenStoredWithoutAttachment() throws Exception {
//Given
SimpleMailboxMessage message1 = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(), NO_ATTACHMENT);
testee.save(message1).join();
@@ -308,7 +292,7 @@ public class CassandraMessageDAOTest {
}
@Test
- public void retrieveAllMessageIdAttachmentIdsShouldFilterMessagesWithoutAttachment() throws Exception {
+ void retrieveAllMessageIdAttachmentIdsShouldFilterMessagesWithoutAttachment() throws Exception {
//Given
MessageId messageId1 = messageIdFactory.generate();
MessageId messageId2 = messageIdFactory.generate();
@@ -341,19 +325,19 @@ public class CassandraMessageDAOTest {
}
@Test
- public void messageIdAttachmentIdsShouldMatchBeanContract() {
+ void messageIdAttachmentIdsShouldMatchBeanContract() {
EqualsVerifier.forClass(MessageIdAttachmentIds.class)
.verify();
}
@Test
- public void messageIdAttachmentIdsShouldThrowOnNullMessageId() {
+ void messageIdAttachmentIdsShouldThrowOnNullMessageId() {
assertThatThrownBy(() -> new MessageIdAttachmentIds(null, ImmutableSet.of()))
.isInstanceOf(NullPointerException.class);
}
@Test
- public void messageIdAttachmentIdsShouldThrowOnNullAttachmentIds() {
+ void messageIdAttachmentIdsShouldThrowOnNullAttachmentIds() {
assertThatThrownBy(() -> new MessageIdAttachmentIds(messageIdFactory.generate(), null))
.isInstanceOf(NullPointerException.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
index d4514ca..26947ab 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
@@ -29,7 +29,7 @@ import javax.mail.Flags;
import javax.mail.Flags.Flag;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -37,51 +37,31 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
import org.apache.james.mailbox.model.MessageRange;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraMessageIdDAOTest {
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+class CassandraMessageIdDAOTest {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMessageModule.MODULE);
private CassandraMessageId.Factory messageIdFactory;
private CassandraMessageIdDAO testee;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraMessageModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
messageIdFactory = new CassandraMessageId.Factory();
testee = new CassandraMessageIdDAO(cassandra.getConf(), messageIdFactory);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void deleteShouldNotThrowWhenRowDoesntExist() {
+ void deleteShouldNotThrowWhenRowDoesntExist() {
testee.delete(CassandraId.timeBased(), MessageUid.of(1))
.join();
}
@Test
- public void deleteShouldDeleteWhenRowExists() {
+ void deleteShouldDeleteWhenRowExists() {
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
CassandraMessageId messageId = messageIdFactory.generate();
@@ -99,7 +79,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void deleteShouldDeleteOnlyConcernedRowWhenMultipleRowExists() {
+ void deleteShouldDeleteOnlyConcernedRowWhenMultipleRowExists() {
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
MessageUid messageUid2 = MessageUid.of(2);
@@ -127,7 +107,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void insertShouldWork() {
+ void insertShouldWork() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -144,7 +124,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateModSeq() {
+ void updateShouldUpdateModSeq() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -169,7 +149,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateAnsweredFlag() {
+ void updateShouldUpdateAnsweredFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -194,7 +174,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateDeletedFlag() {
+ void updateShouldUpdateDeletedFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -219,7 +199,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateDraftFlag() {
+ void updateShouldUpdateDraftFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -244,7 +224,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateFlaggedFlag() {
+ void updateShouldUpdateFlaggedFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -269,7 +249,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateRecentFlag() {
+ void updateShouldUpdateRecentFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -294,7 +274,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateSeenFlag() {
+ void updateShouldUpdateSeenFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -319,7 +299,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateUserFlag() {
+ void updateShouldUpdateUserFlag() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -344,7 +324,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void updateShouldUpdateUserFlags() {
+ void updateShouldUpdateUserFlags() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -371,7 +351,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void retrieveShouldRetrieveWhenKeyMatches() {
+ void retrieveShouldRetrieveWhenKeyMatches() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -388,7 +368,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void retrieveMessagesShouldRetrieveAllWhenRangeAll() {
+ void retrieveMessagesShouldRetrieveAllWhenRangeAll() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraMessageId messageId2 = messageIdFactory.generate();
CassandraId mailboxId = CassandraId.timeBased();
@@ -416,7 +396,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void retrieveMessagesShouldRetrieveSomeWhenRangeFrom() {
+ void retrieveMessagesShouldRetrieveSomeWhenRangeFrom() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraMessageId messageId2 = messageIdFactory.generate();
CassandraMessageId messageId3 = messageIdFactory.generate();
@@ -452,7 +432,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void retrieveMessagesShouldRetrieveSomeWhenRange() {
+ void retrieveMessagesShouldRetrieveSomeWhenRange() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraMessageId messageId2 = messageIdFactory.generate();
CassandraMessageId messageId3 = messageIdFactory.generate();
@@ -497,7 +477,7 @@ public class CassandraMessageIdDAOTest {
}
@Test
- public void retrieveMessagesShouldRetrieveOneWhenRangeOne() {
+ void retrieveMessagesShouldRetrieveOneWhenRangeOne() {
CassandraMessageId messageId = messageIdFactory.generate();
CassandraMessageId messageId2 = messageIdFactory.generate();
CassandraMessageId messageId3 = messageIdFactory.generate();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
index c7d6e7d..afefdcc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
@@ -28,64 +28,42 @@ import javax.mail.Flags;
import javax.mail.Flags.Flag;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.backends.cassandra.DockerCassandraSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.datastax.driver.core.utils.UUIDs;
import com.github.steveash.guavate.Guavate;
-public class CassandraMessageIdToImapUidDAOTest {
-
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+class CassandraMessageIdToImapUidDAOTest {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraMessageModule.MODULE);
private CassandraMessageId.Factory messageIdFactory;
private CassandraMessageIdToImapUidDAO testee;
- @BeforeClass
- public static void setUpClass() {
- DockerCassandraSingleton.restart();
- cassandra = CassandraCluster.create(CassandraMessageModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
messageIdFactory = new CassandraMessageId.Factory();
testee = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory);
}
- @After
- public void tearDown() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
-
@Test
- public void deleteShouldNotThrowWhenRowDoesntExist() {
+ void deleteShouldNotThrowWhenRowDoesntExist() {
testee.delete(messageIdFactory.of(UUIDs.timeBased()), CassandraId.timeBased())
.join();
}
@Test
- public void deleteShouldDeleteWhenRowExists() {
+ void deleteShouldDeleteWhenRowExists() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -103,7 +81,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void deleteShouldDeleteOnlyConcernedRowWhenMultipleRowExists() {
+ void deleteShouldDeleteOnlyConcernedRowWhenMultipleRowExists() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
CassandraId mailboxId2 = CassandraId.timeBased();
@@ -134,7 +112,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void insertShouldWork() {
+ void insertShouldWork() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -156,7 +134,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldReturnTrueWhenOldModSeqMatches() {
+ void updateShouldReturnTrueWhenOldModSeqMatches() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -174,7 +152,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldReturnFalseWhenOldModSeqDoesntMatch() {
+ void updateShouldReturnFalseWhenOldModSeqDoesntMatch() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -192,7 +170,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateModSeq() {
+ void updateShouldUpdateModSeq() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -217,7 +195,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateAnsweredFlag() {
+ void updateShouldUpdateAnsweredFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -242,7 +220,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateDeletedFlag() {
+ void updateShouldUpdateDeletedFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -267,7 +245,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateDraftFlag() {
+ void updateShouldUpdateDraftFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -292,7 +270,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateFlaggedFlag() {
+ void updateShouldUpdateFlaggedFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -317,7 +295,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateRecentFlag() {
+ void updateShouldUpdateRecentFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -342,7 +320,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateSeenFlag() {
+ void updateShouldUpdateSeenFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -367,7 +345,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateUserFlag() {
+ void updateShouldUpdateUserFlag() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -392,7 +370,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void updateShouldUpdateUserFlags() {
+ void updateShouldUpdateUserFlags() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -419,7 +397,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void retrieveShouldReturnOneMessageWhenKeyMatches() {
+ void retrieveShouldReturnOneMessageWhenKeyMatches() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
MessageUid messageUid = MessageUid.of(1);
@@ -441,7 +419,7 @@ public class CassandraMessageIdToImapUidDAOTest {
}
@Test
- public void retrieveShouldReturnMultipleMessagesWhenMessageIdMatches() {
+ void retrieveShouldReturnMultipleMessagesWhenMessageIdMatches() {
CassandraMessageId messageId = messageIdFactory.of(UUIDs.timeBased());
CassandraId mailboxId = CassandraId.timeBased();
CassandraId mailboxId2 = CassandraId.timeBased();
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index 6059389..a0b691d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -23,55 +23,37 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.stream.LongStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.fge.lambdas.Throwing;
-public class CassandraModSeqProviderTest {
+class CassandraModSeqProviderTest {
private static final CassandraId CASSANDRA_ID = new CassandraId.Factory().fromString("e22b3ac0-a80b-11e7-bb00-777268d65503");
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraModSeqModule.MODULE);
private CassandraModSeqProvider modSeqProvider;
private SimpleMailbox mailbox;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraModSeqModule.MODULE, cassandraServer.getHost());
- }
- @Before
- public void setUp() throws Exception {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
mailbox = new SimpleMailbox(path, 1234);
mailbox.setMailboxId(CASSANDRA_ID);
}
-
- @After
- public void cleanUp() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
@Test
- public void highestModSeqShouldRetrieveValueStoredNextModSeq() throws Exception {
+ void highestModSeqShouldRetrieveValueStoredNextModSeq() throws Exception {
int nbEntries = 100;
long result = modSeqProvider.highestModSeq(null, mailbox);
assertThat(result).isEqualTo(0);
@@ -84,19 +66,18 @@ public class CassandraModSeqProviderTest {
}
@Test
- public void nextModSeqShouldIncrementValueByOne() throws Exception {
+ void nextModSeqShouldIncrementValueByOne() throws Exception {
int nbEntries = 100;
long lastUid = modSeqProvider.highestModSeq(null, mailbox);
LongStream.range(lastUid + 1, lastUid + nbEntries)
.forEach(Throwing.longConsumer(value -> {
- long result = modSeqProvider.nextModSeq(null, mailbox);
- assertThat(value).isEqualTo(result);
- })
- );
+ long result = modSeqProvider.nextModSeq(null, mailbox);
+ assertThat(value).isEqualTo(result);
+ }));
}
@Test
- public void nextModSeqShouldGenerateUniqueValuesWhenParallelCalls() throws Exception {
+ void nextModSeqShouldGenerateUniqueValuesWhenParallelCalls() {
int nbEntries = 100;
long nbValues = LongStream.range(0, nbEntries)
.parallel()
http://git-wip-us.apache.org/repos/asf/james-project/blob/df6fe4fb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index fe0d6a1..619ced7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -24,56 +24,37 @@ import java.util.Optional;
import java.util.stream.LongStream;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import com.github.fge.lambdas.Throwing;
-public class CassandraUidProviderTest {
+class CassandraUidProviderTest {
private static final CassandraId CASSANDRA_ID = new CassandraId.Factory().fromString("e22b3ac0-a80b-11e7-bb00-777268d65503");
- @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private static CassandraCluster cassandra;
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraUidModule.MODULE);
private CassandraUidProvider uidProvider;
private SimpleMailbox mailbox;
- @BeforeClass
- public static void setUpClass() {
- cassandra = CassandraCluster.create(CassandraUidModule.MODULE, cassandraServer.getHost());
- }
-
- @Before
- public void setUp() {
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
uidProvider = new CassandraUidProvider(cassandra.getConf());
MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
mailbox = new SimpleMailbox(path, 1234);
mailbox.setMailboxId(CASSANDRA_ID);
}
-
- @After
- public void cleanUp() {
- cassandra.clearTables();
- }
-
- @AfterClass
- public static void tearDownClass() {
- cassandra.closeCluster();
- }
@Test
- public void lastUidShouldRetrieveValueStoredByNextUid() throws Exception {
+ void lastUidShouldRetrieveValueStoredByNextUid() throws Exception {
int nbEntries = 100;
Optional<MessageUid> result = uidProvider.lastUid(null, mailbox);
assertThat(result).isEmpty();
@@ -86,18 +67,17 @@ public class CassandraUidProviderTest {
}
@Test
- public void nextUidShouldIncrementValueByOne() throws Exception {
+ void nextUidShouldIncrementValueByOne() {
int nbEntries = 100;
LongStream.range(1, nbEntries)
.forEach(Throwing.longConsumer(value -> {
- MessageUid result = uidProvider.nextUid(null, mailbox);
- assertThat(value).isEqualTo(result.asLong());
- })
- );
+ MessageUid result = uidProvider.nextUid(null, mailbox);
+ assertThat(value).isEqualTo(result.asLong());
+ }));
}
@Test
- public void nextUidShouldGenerateUniqueValuesWhenParallelCalls() throws Exception {
+ void nextUidShouldGenerateUniqueValuesWhenParallelCalls() {
int nbEntries = 100;
long nbValues = LongStream.range(0, nbEntries)
.parallel()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[03/13] james-project git commit: JAMES-2545 Introduce RabbitMQ
connection factory
Posted by bt...@apache.org.
JAMES-2545 Introduce RabbitMQ connection factory
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3b570bc1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3b570bc1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3b570bc1
Branch: refs/heads/master
Commit: 3b570bc1d5c24c872527072d09ab659412ae4b68
Parents: b847583
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 12 14:03:02 2018 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 14 10:17:42 2018 +0700
----------------------------------------------------------------------
.../rabbitmq/RabbitMQConnectionFactory.java | 59 +++++++++++++++++++
.../rabbitmq/RabbitMQConnectionFactoryTest.java | 62 ++++++++++++++++++++
2 files changed, 121 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3b570bc1/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..b6a6ba2
--- /dev/null
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java
@@ -0,0 +1,59 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.backend.rabbitmq;
+
+import javax.inject.Inject;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+
+public class RabbitMQConnectionFactory {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(RabbitMQConnectionFactory.class);
+
+ private final ConnectionFactory connectionFactory;
+
+ @Inject
+ public RabbitMQConnectionFactory(RabbitMQConfiguration rabbitMQConfiguration) {
+ this.connectionFactory = from(rabbitMQConfiguration);
+ }
+
+ private ConnectionFactory from(RabbitMQConfiguration rabbitMQConfiguration) {
+ try {
+ ConnectionFactory connectionFactory = new ConnectionFactory();
+ connectionFactory.setUri(rabbitMQConfiguration.getUri());
+ return connectionFactory;
+ } catch (Exception e) {
+ LOGGER.error("Fail to create the RabbitMQ connection factory.");
+ throw new RuntimeException(e);
+ }
+ }
+
+ public Connection create() {
+ try {
+ return connectionFactory.newConnection();
+ } catch (Exception e) {
+ LOGGER.error("Fail to create a RabbitMQ connection.");
+ throw new RuntimeException(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3b570bc1/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
new file mode 100644
index 0000000..99cca33
--- /dev/null
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
@@ -0,0 +1,62 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.backend.rabbitmq;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.net.URI;
+
+import org.junit.jupiter.api.Test;
+
+class RabbitMQConnectionFactoryTest {
+
+ @Test
+ void creatingAFactoryShouldWorkWhenConfigurationIsValid() {
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(URI.create("amqp://james:james@rabbitmq_host:5672"))
+ .managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
+ .build();
+
+ new RabbitMQConnectionFactory(rabbitMQConfiguration);
+ }
+
+ @Test
+ void creatingAFactoryShouldThrowWhenConfigurationIsInvalid() {
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(URI.create("badprotocol://james:james@rabbitmq_host:5672"))
+ .managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
+ .build();
+
+ assertThatThrownBy(() -> new RabbitMQConnectionFactory(rabbitMQConfiguration))
+ .isInstanceOf(RuntimeException.class);
+ }
+
+ @Test
+ void createShouldFailWhenConnectionCantBeDone() {
+ RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
+ .amqpUri(URI.create("amqp://james:james@rabbitmq_host:5672"))
+ .managementUri(URI.create("http://james:james@rabbitmq_host:15672/api/"))
+ .build();
+
+ RabbitMQConnectionFactory rabbitMQConnectionFactory = new RabbitMQConnectionFactory(rabbitMQConfiguration);
+
+ assertThatThrownBy(() -> rabbitMQConnectionFactory.create())
+ .isInstanceOf(RuntimeException.class);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org