You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by ma...@apache.org on 2021/02/09 09:17:57 UTC

[james-project] branch master updated (b8e6943 -> b67268f)

This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from b8e6943  [REFACTORING] Convert server/app tests to JUNIT 5
     new c136d88  JAMES-3225 configures CI for builds.apache.org
     new 4e04845  JAMES-3225 uses multithreaded compilation
     new c7abdfe  JAMES-3225 adds test this please trigger for the CI
     new eca6d1e  JAMES-3225 enables git describe with --always
     new 7f96ed6  JAMES-3225 split unstable tests from primary pipeline
     new d02ec4b  JAMES-3225 tags more unstable tests
     new 69b7835  JAMES-3225 increases heap memory for larger integration tests
     new 0b28d2b  JAMES-3225 reduces webmin http tests verbosity
     new fe25df6  JAMES-3225 make sure to capture dumpstream if exists on surefire crash
     new 8490153  JAMES-3225 Allow empty failsafe results for stable stage
     new 5c76c72  JAMES-3225 increases artifact and build results retention
     new 9b3c4ef  JAMES-3225 email developpers of PR on build failure
     new 35f054f  JAMES-3225 drops fork reuse
     new 2d6a56d  JAMES-3225 silence debugging traces from C* testing session
     new 6ffbbc1  JAMES-3225 Silence debug writes to System.out
     new 761fa45  JAMES-3225 adds timestamps to maven logs
     new 8c92bf1  JAMES-3225 archive all surefire reports on crash
     new 649794f  JAMES-3225 use unique cassandra image names
     new ac37af4  JAMES-3225 enable debug logging on testcontainers
     new 180de87  JAMES-3225 uses unique image name for lishare backend singleton
     new f00d8c0  JAMES-3225 archive test-run.log on failure
     new 5920cb0  JAMES-3225 log all image events related to DockerCassandra
     new a517930  JAMES-3225 archive test-run.log for stable tests
     new b65f1fc  JAMES-3225 log amqp docker image output to debug level
     new 8aed6ac  JAMES-3225 increase wait for ready timeout for apache CI
     new 5e10376  JAMES-3225 removes empty lines on linshare container output
     new b67268f  JAMES-3225 increase DockerCassandra container start timeout

The 27 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Jenkinsfile                                        | 201 ++++++
 .../backends/cassandra/CassandraWaitStrategy.java  |   2 +-
 .../james/backends/cassandra/DockerCassandra.java  |  37 +-
 backends-common/elasticsearch/pom.xml              |   2 +-
 backends-common/rabbitmq/pom.xml                   |   2 +-
 ...RabbitMQEventBusDeadLetterQueueUpgradeTest.java |   9 +
 mailbox/api/pom.xml                                |   2 +-
 .../mailbox/MailboxManagerStressContract.java      |   1 -
 mailbox/backup/pom.xml                             |   2 +-
 mailbox/cassandra/pom.xml                          |   2 +-
 .../CassandraMailboxManagerConsistencyTest.java    |   4 +
 .../cassandra/mail/CassandraACLMapperV2Test.java   |   1 -
 .../mail/CassandraMailboxMapperAclTest.java        |   9 +
 .../cassandra/mail/CassandraMailboxMapperTest.java | 722 +++++++++++----------
 .../mail/CassandraMessageIdMapperTest.java         |  10 +
 .../cassandra/mail/CassandraMessageMapperTest.java |   7 -
 .../SolveMessageInconsistenciesServiceTest.java    |  11 +
 mailbox/event/json/pom.xml                         |   2 +-
 mailbox/memory/pom.xml                             |   2 +-
 mailbox/store/pom.xml                              |   2 +-
 .../store/mail/model/MailboxMapperACLTest.java     |   2 +-
 mailet/standard/pom.xml                            |   2 +-
 mdn/pom.xml                                        |   2 +-
 .../metrics/tests/RecordingMetricFactoryTest.java  |   4 +
 mpt/impl/imap-mailbox/cassandra/pom.xml            |   2 +-
 mpt/impl/imap-mailbox/inmemory/pom.xml             |   2 +-
 mpt/impl/imap-mailbox/jpa/pom.xml                  |   2 +-
 mpt/impl/imap-mailbox/lucenesearch/pom.xml         |   2 +-
 pom.xml                                            |  22 +-
 protocols/imap/pom.xml                             |   2 +-
 protocols/smtp/pom.xml                             |   2 +-
 server/blob/blob-cassandra/pom.xml                 |   2 +-
 .../blob/cassandra/cache/CachedBlobStoreTest.java  |   1 -
 server/blob/blob-common/pom.xml                    |   6 +
 server/blob/blob-memory/pom.xml                    |   2 +-
 server/blob/blob-storage-strategy/pom.xml          |   6 +
 .../apache/james/WithCassandraBlobStoreTest.java   |  13 +
 .../guice/cassandra-rabbitmq-guice/pom.xml         |  11 +
 .../org/apache/james/CassandraCacheQueryTest.java  |   1 -
 server/container/guice/data-cassandra/pom.xml      |   6 +
 .../apache/james/MailsShouldBeWellReceived.java    |   6 +
 server/container/guice/jpa-smtp-common/pom.xml     |   6 +
 .../guice/mailrepository-cassandra/pom.xml         |   6 +
 .../guice/protocols/webadmin-jmap/pom.xml          |   6 +
 .../guice/protocols/webadmin-mail-over-web/pom.xml |   6 +
 server/container/guice/sieve-file/pom.xml          |   6 +
 server/container/guice/sieve-jpa/pom.xml           |   6 +
 .../testing/custom-mailets-implementation/pom.xml  |   6 +
 .../container/guice/testing/custom-mailets/pom.xml |   6 +
 server/container/guice/testing/dependency/pom.xml  |   9 +
 server/data/data-cassandra/pom.xml                 |   2 +-
 server/data/data-file/pom.xml                      |   2 +-
 server/dns-service/dnsservice-api/pom.xml          |   8 +
 server/mailet/integration-testing/pom.xml          |   2 +-
 .../transport/mailets/amqp/AmqpExtension.java      |  13 +-
 server/mailet/mailets/pom.xml                      |   2 +-
 .../mailrepository-cassandra/pom.xml               |   2 +-
 .../pom.xml                                        |  25 +-
 .../memory-jmap-draft-integration-testing/pom.xml  |   2 +-
 .../memory/MemorySpamAssassinContractTest.java     |  46 ++
 .../pom.xml                                        |  25 +-
 .../RabbitMQAwsS3JmapAuthenticationTest.java       |   3 +
 .../RabbitMQAwsS3SetMailboxesMethodTest.java       |   3 +
 .../awss3/RabbitMQDownloadCucumberTest.java        |   3 +-
 .../awss3/RabbitMQGetMessagesMethodTest.java       |   3 +-
 .../cucumber/awss3/RabbitMQMailboxSharingTest.java |   3 +-
 .../cucumber/awss3/RabbitMQMessageSharingTest.java |   5 +-
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |   3 +-
 .../RabbitMQSetMessagesMethodCucumberTest.java     |   3 +-
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |   3 +-
 server/protocols/jmap-draft/pom.xml                |   2 +-
 .../pom.xml                                        |  25 +-
 .../memory/MemoryEmailQueryMethodNoViewTest.java   |  16 +
 .../rfc8621/memory/MemoryEmailQueryMethodTest.java |  15 +
 .../distributed-webadmin-integration-test/pom.xml  |  26 +-
 .../rabbitmq/FixingGhostMailboxTest.java           |  10 +
 .../memory-webadmin-integration-test/pom.xml       |   4 +-
 server/protocols/webadmin-integration-test/pom.xml |  10 -
 ...lveMailboxInconsistenciesRequestToTaskTest.java |   1 -
 ...lveMessageInconsistenciesRequestToTaskTest.java |   1 -
 .../PopulateEmailQueryViewRequestToTaskTest.java   |   1 -
 ...llFastViewProjectionItemsRequestToTaskTest.java |   1 -
 ...erFastViewProjectionItemsRequestToTaskTest.java |   1 -
 server/protocols/webadmin/webadmin-mailbox/pom.xml |  11 +
 .../service/MailboxesExportRequestToTaskTest.java  |   1 -
 .../distributed/DistributedTaskManagerTest.java    |   1 -
 .../apache/james/junit/categories/Unstable.java    |   6 +-
 testing/base/src/main/resources/logback-test.xml   |   2 +-
 .../java/org/apache/james/linshare/Linshare.java   |  13 +-
 .../spamassassin/SpamAssassinInvokerTest.java      |   3 +
 90 files changed, 1047 insertions(+), 446 deletions(-)
 create mode 100644 Jenkinsfile
 copy event-bus/api/src/main/java/org/apache/james/events/Registration.java => testing/base/src/main/java/org/apache/james/junit/categories/Unstable.java (92%)


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 23/27: JAMES-3225 archive test-run.log for stable tests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit a5179300e399dbf43a54397daf39def9059a4b64
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Feb 4 13:26:11 2021 +0100

    JAMES-3225 archive test-run.log for stable tests
---
 Jenkinsfile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index ef7da53..05f6645 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -100,6 +100,7 @@ pipeline {
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
                 }
                 failure {
+                    archiveArtifacts artifacts: '**/target/test-run.log' , fingerprint: true
                     archiveArtifacts artifacts: '**/surefire-reports/*' , fingerprint: true
                 }
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 24/27: JAMES-3225 log amqp docker image output to debug level

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit b65f1fc08d259cee5c7a393555c15b553b8bcfe4
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Fri Feb 5 09:14:24 2021 +0100

    JAMES-3225 log amqp docker image output to debug level
    
    this will allow it to be picked up by test-run.log for CI failure diags
---
 .../apache/james/transport/mailets/amqp/AmqpExtension.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
index 6a37166..f4ac1e2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
@@ -35,6 +35,9 @@ import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.rules.ExternalResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.output.OutputFrame;
 import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
 
 import com.rabbitmq.client.BuiltinExchangeType;
@@ -45,6 +48,7 @@ import com.rabbitmq.client.GetResponse;
 
 public class AmqpExtension implements BeforeAllCallback, AfterAllCallback, AfterEachCallback {
     private static final boolean AUTO_ACK = true;
+    private static final Logger logger = LoggerFactory.getLogger(AmqpExtension.class);
 
     private final DockerContainer rabbitMqContainer;
     private final String exchangeName;
@@ -58,11 +62,16 @@ public class AmqpExtension implements BeforeAllCallback, AfterAllCallback, After
         this.rabbitMqContainer = DockerContainer.fromName(Images.RABBITMQ)
             .withAffinityToContainer()
             .waitingFor(new HostPortWaitStrategy()
-                .withRateLimiter(RateLimiters.TWENTIES_PER_SECOND));;
+                .withRateLimiter(RateLimiters.TWENTIES_PER_SECOND))
+                .withLogConsumer(AmqpExtension::displayDockerLog);
         this.exchangeName = exchangeName;
         this.routingKey = routingKey;
     }
 
+    private static void displayDockerLog(OutputFrame outputFrame) {
+        logger.debug(outputFrame.getUtf8String().trim());
+    }
+
     @Override
     public void beforeAll(ExtensionContext extensionContext) throws Exception {
         rabbitMqContainer.start();


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 14/27: JAMES-3225 silence debugging traces from C* testing session

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 2d6a56d4372ee3c50f880007a58d8ff050a33def
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Jan 19 20:33:16 2021 +0100

    JAMES-3225 silence debugging traces from C* testing session
---
 .../james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java     | 1 -
 .../james/mailbox/cassandra/mail/CassandraMessageMapperTest.java   | 7 -------
 .../org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java | 1 -
 .../src/test/java/org/apache/james/CassandraCacheQueryTest.java    | 1 -
 .../task/eventsourcing/distributed/DistributedTaskManagerTest.java | 1 -
 5 files changed, 11 deletions(-)

diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
index 5b2556f..c91319a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
@@ -58,7 +58,6 @@ class CassandraACLMapperV2Test extends CassandraACLMapperContract {
 
     @BeforeEach
     void setUp(CassandraCluster cassandra) {
-        cassandra.getConf().printStatements();
         CassandraSchemaVersionDAO schemaVersionDAO = new CassandraSchemaVersionDAO(cassandra.getConf());
         schemaVersionDAO.truncateVersion().block();
         schemaVersionDAO.updateVersion(new SchemaVersion(10)).block();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index bda9ae0..6965440 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -70,7 +70,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
         void updateFlagsShouldNotRetryOnDeletedMessages(CassandraCluster cassandra) throws MailboxException {
             saveMessages();
 
-            cassandra.getConf().printStatements();
             cassandra.getConf()
                 .registerScenario(fail()
                     .forever()
@@ -98,7 +97,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
 
@@ -114,7 +112,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
 
@@ -129,7 +126,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
 
@@ -144,7 +140,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
 
@@ -161,7 +156,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.deleteMessages(benwaInboxMailbox, ImmutableList.of(message1.getUid(), message2.getUid(), message3.getUid()));
 
@@ -176,7 +170,6 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
             StatementRecorder statementRecorder = new StatementRecorder();
             cassandra.getConf().recordStatements(statementRecorder);
-            cassandra.getConf().printStatements();
 
             messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flags.Flag.SEEN), MessageManager.FlagsUpdateMode.REPLACE), MessageRange.all());
 
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
index 1261075..f4e83c0 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
@@ -325,7 +325,6 @@ public class CachedBlobStoreTest implements BlobStoreContract {
 
         StatementRecorder statementRecorder = new StatementRecorder();
         cassandra.getConf().recordStatements(statementRecorder);
-        cassandra.getConf().printStatements();
 
         mimeMessageStore.read(partsId).block();
 
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraCacheQueryTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraCacheQueryTest.java
index ca5c6e8..bd92057 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraCacheQueryTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraCacheQueryTest.java
@@ -125,7 +125,6 @@ class CassandraCacheQueryTest {
         MailboxProbeImpl mailboxProbe = server.getProbe(MailboxProbeImpl.class);
         mailboxProbe.createMailbox("#private", JAMES_USER, DefaultMailboxes.INBOX);
 
-        server.getProbe(TestingSessionProbe.class).getTestingSession().printStatements();
         server.getProbe(TestingSessionProbe.class).getTestingSession().recordStatements(statementRecorder);
 
         sendAMail(server);
diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
index 3c0ccf2..2db3ea6 100644
--- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
+++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
@@ -535,7 +535,6 @@ class DistributedTaskManagerTest implements TaskManagerContract {
     void shouldNotCrashWhenErrorHandlingFails(CassandraCluster cassandra) throws Exception {
         TaskManager taskManager = taskManager(HOSTNAME);
 
-        cassandra.getConf().printStatements();
         cassandra.getConf().registerScenario(Scenario.combine(
             executeNormally()
                 .times(2) // submit + inProgress


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 18/27: JAMES-3225 use unique cassandra image names

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 649794f10374a2d8c19e7977d77ec30e3a14cde5
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Jan 26 10:59:05 2021 +0100

    JAMES-3225 use unique cassandra image names
    
    Uses unique cassandra image names to let tests run concurrently against
    the docker cache
    Activates delete on exit since images are no longer used more than once
    Note however that the singleton behaviour that runs multiple tests
    against a single cassandra container before recreating a container
    is still in place.
---
 .../java/org/apache/james/backends/cassandra/DockerCassandra.java     | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
index 2ef8b92..fce5fc0 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
@@ -38,6 +38,8 @@ import com.datastax.driver.core.Session;
 import com.github.dockerjava.api.DockerClient;
 import com.google.common.collect.ImmutableMap;
 
+import java.util.UUID;
+
 public class DockerCassandra {
 
     /**
@@ -118,7 +120,7 @@ public class DockerCassandra {
 
     @SuppressWarnings("resource")
     public DockerCassandra() {
-        this("cassandra_3_11_3", AdditionalDockerFileStep.IDENTITY);
+        this("cassandra_3_11_3-"+ UUID.randomUUID().toString(), AdditionalDockerFileStep.IDENTITY);
     }
 
     public DockerCassandra(String imageName, AdditionalDockerFileStep additionalSteps) {


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 01/27: JAMES-3225 configures CI for builds.apache.org

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c136d885a296679cf8262081c041c10cf2e5b303
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Nov 24 10:42:52 2020 +0100

    JAMES-3225 configures CI for builds.apache.org
    
    As an individual contributor I prefer having slow CI builds than no CI
    builds at all. This commit introduces a minimal JenkinsFile to be
    further refined.
    I was shamelessly adapted from the activemq project's
    [JenkinsFile](https://raw.githubusercontent.com/apache/activemq/master/Jenkinsfile)
    and the [JenkinsFile](https://raw.githubusercontent.com/apache/james-project/3017d55642ec48171e6190aad06a7bfbfd74b400/Jenkinsfile)
    proposed in the gradle branch.
---
 Jenkinsfile | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 167 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..2175fe9
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,167 @@
+#!groovy
+
+/*
+ *
+ *  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.
+ *
+ */
+
+def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu'
+def JDK_NAME = env.JDK_NAME ?: 'jdk_11_latest'
+
+pipeline {
+
+    agent {
+        node {
+            label AGENT_LABEL
+        }
+    }
+
+    environment {
+        // ... setup any environment variables ...
+        MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository'
+        MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true'
+        CI=true
+        LC_CTYPE = 'en_US.UTF-8'        
+    }
+
+    tools {
+        // ... tell Jenkins what java version, maven version or other tools are required ...
+        maven 'maven_3_latest'
+        jdk JDK_NAME
+    }
+
+    options {
+        // Configure an overall timeout for the build of 4 hours.
+        timeout(time: 10, unit: 'HOURS')
+        // When we have test-fails e.g. we don't need to run the remaining steps
+        skipStagesAfterUnstable()
+         buildDiscarder(
+                logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
+        )
+        disableConcurrentBuilds()
+    }
+
+    stages {
+        stage('Initialization') {
+            steps {
+                echo 'Building branch ' + env.BRANCH_NAME
+                echo 'Using PATH ' + env.PATH
+            }
+        }
+
+        stage('Cleanup') {
+            steps {
+                echo 'Cleaning up the workspace'
+                deleteDir()
+            }
+        }
+
+        stage('Checkout') {
+            steps {
+                echo 'Checking out branch ' + env.BRANCH_NAME
+                checkout scm
+            }
+        }
+
+        stage('Build') {
+            steps {
+                echo 'Building'
+                sh 'mvn -U -B -e clean install -DskipTests'
+            }
+        }
+
+        stage('Tests') {
+            steps {
+                echo 'Running tests'
+                // all tests is very very long (10 hours on Apache Jenkins)
+                sh 'mvn -B -e test'
+            }
+            post {
+                always {
+                    junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
+                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
+                }
+            }
+        }
+
+        stage('Deploy') {
+            when { branch 'master' }
+            steps {
+                echo 'Deploying'
+                sh 'mvn -B -e deploy -Pdeploy -DskipTests'
+            }
+        }
+    }
+
+    // Do any post build stuff ... such as sending emails depending on the overall build result.
+    post {
+        // If this build failed, send an email to the list.
+        failure {
+            script {
+                if(env.BRANCH_NAME == "master") {
+                    emailext(
+                            subject: "[BUILD-FAILURE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
+                            body: """
+BUILD-FAILURE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]':
+Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]</a>"
+""",
+                            to: "server-dev@james.apache.org",
+                            recipientProviders: [[$class: 'DevelopersRecipientProvider']]
+                    )
+                }
+            }
+        }
+
+        // If this build didn't fail, but there were failing tests, send an email to the list.
+        unstable {
+            script {
+                if(env.BRANCH_NAME == "master") {
+                    emailext(
+                            subject: "[BUILD-UNSTABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
+                            body: """
+BUILD-UNSTABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]':
+Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]</a>"
+""",
+                            to: "server-dev@james.apache.org",
+                            recipientProviders: [[$class: 'DevelopersRecipientProvider']]
+                    )
+                }
+            }
+        }
+
+        // Send an email, if the last build was not successful and this one is.
+        success {
+            // Cleanup the build directory if the build was successful
+            // (in this cae we probably don't have to do any post-build analysis)
+            deleteDir()
+            script {
+                if (env.BRANCH_NAME == "master" && (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result != 'SUCCESS')) {
+                    emailext (
+                            subject: "[BUILD-STABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
+                            body: """
+BUILD-STABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]':
+Is back to normal.
+""",
+                            to: "server-dev@james.apache.org",
+                            recipientProviders: [[$class: 'DevelopersRecipientProvider']]
+                    )
+                }
+            }
+        }
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 06/27: JAMES-3225 tags more unstable tests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit d02ec4b2beb630e14454c0a452f790d437eeb661
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Fri Dec 11 18:01:42 2020 +0100

    JAMES-3225 tags more unstable tests
---
 ...RabbitMQEventBusDeadLetterQueueUpgradeTest.java |   9 +
 .../CassandraMailboxManagerConsistencyTest.java    |   4 +
 .../mail/CassandraMailboxMapperAclTest.java        |   9 +
 .../cassandra/mail/CassandraMailboxMapperTest.java | 722 +++++++++++----------
 .../mail/CassandraMessageIdMapperTest.java         |  10 +
 .../SolveMessageInconsistenciesServiceTest.java    |  11 +
 .../store/mail/model/MailboxMapperACLTest.java     |   2 +-
 .../metrics/tests/RecordingMetricFactoryTest.java  |   4 +
 .../apache/james/MailsShouldBeWellReceived.java    |   6 +
 .../memory/MemorySpamAssassinContractTest.java     |  46 ++
 .../pom.xml                                        |   3 +-
 .../RabbitMQAwsS3JmapAuthenticationTest.java       |   3 +
 .../RabbitMQAwsS3SetMailboxesMethodTest.java       |   3 +
 .../awss3/RabbitMQDownloadCucumberTest.java        |   3 +-
 .../awss3/RabbitMQGetMessagesMethodTest.java       |   3 +-
 .../cucumber/awss3/RabbitMQMailboxSharingTest.java |   3 +-
 .../cucumber/awss3/RabbitMQMessageSharingTest.java |   5 +-
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |   3 +-
 .../RabbitMQSetMessagesMethodCucumberTest.java     |   3 +-
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |   3 +-
 .../memory/MemoryEmailQueryMethodNoViewTest.java   |  16 +
 .../rfc8621/memory/MemoryEmailQueryMethodTest.java |  15 +
 .../rabbitmq/FixingGhostMailboxTest.java           |  10 +
 .../apache/james/junit/categories/Unstable.java    |   0
 .../spamassassin/SpamAssassinInvokerTest.java      |   3 +
 25 files changed, 532 insertions(+), 367 deletions(-)

diff --git a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
index ea73049..936e6dc 100644
--- a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
+++ b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
@@ -30,9 +30,11 @@ import org.apache.james.events.EventBusTestFixture.GroupA;
 import org.apache.james.events.EventBusTestFixture.TestEventSerializer;
 import org.apache.james.events.EventBusTestFixture.TestRegistrationKeyFactory;
 import org.apache.james.events.GroupRegistration.WorkQueueName;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -70,6 +72,13 @@ class RabbitMQEventBusDeadLetterQueueUpgradeTest {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    Error
+    channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'mailboxEvent-workQueue-org.apache.james.mailbox.events.EventBusTestFixture$GroupA' in vhost '/': received none but current is the value 'mailboxEvent-dead-letter-exchange' of ty..., class-id=50, method-id=10)
+    Stacktrace
+    com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'mailboxEvent-workQueue-org.apache.james.mailbox.events.EventBusTestFixture$GroupA' in vhost '/': received none but current is the value 'mailboxEvent-dead-letter-exchange' of ty..., class-id=50, method-id=10)
+     */
     void eventBusShouldStartWhenDeadLetterUpgradeWasNotPerformed() {
         rabbitMQExtension.getSender().delete(QueueSpecification.queue().name(WORK_QUEUE_NAME.asString())).block();
         rabbitMQExtension.getSender()
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
index 66b93f7..767a82f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
@@ -26,6 +26,7 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.model.MailboxId;
@@ -37,6 +38,7 @@ import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -422,6 +424,8 @@ class CassandraMailboxManagerConsistencyTest {
             }
 
             @Test
+            @Tag(Unstable.TAG)
+            //see https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/32/tests
             void deleteMailboxByPathShouldBeConsistentWhenMailboxPathDaoFails(CassandraCluster cassandra) throws Exception {
                 MailboxId inboxId = testee.createMailbox(inboxPath, mailboxSession)
                     .get();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
index 245205e..19ddedc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
@@ -24,11 +24,14 @@ import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperACLTest;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
@@ -48,4 +51,10 @@ class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
         return GuiceUtils.testInjector(cassandraCluster.getCassandraCluster())
             .getInstance(CassandraMailboxMapper.class);
     }
+    @Test
+    @Override
+    @Tag(Unstable.TAG)
+    protected void updateAclShouldCombineStoredAclWhenAdd() {
+        super.updateAclShouldCombineStoredAclWhenAdd();
+    }
 }
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 8fe8fac..78a2b58 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -19,14 +19,8 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
-import static org.apache.james.backends.cassandra.Scenario.Builder.fail;
-import static org.apache.james.mailbox.model.MailboxAssertingTool.softly;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.util.List;
-import java.util.stream.IntStream;
-
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.runnable.ThrowingRunnable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
@@ -44,6 +38,7 @@ import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
 import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
 import org.apache.james.eventsourcing.eventstore.cassandra.EventStoreDao;
 import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.eventsourcing.acl.ACLModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -62,13 +57,18 @@ import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
+import reactor.core.publisher.Mono;
 
-import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.runnable.ThrowingRunnable;
+import java.util.List;
+import java.util.stream.IntStream;
 
-import reactor.core.publisher.Mono;
+import static org.apache.james.backends.cassandra.Scenario.Builder.fail;
+import static org.apache.james.mailbox.model.MailboxAssertingTool.softly;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class CassandraMailboxMapperTest {
     private static final UidValidity UID_VALIDITY = UidValidity.of(52);
@@ -84,10 +84,10 @@ class CassandraMailboxMapperTest {
     private static final Mailbox MAILBOX_BIS = new Mailbox(MAILBOX_PATH, UID_VALIDITY, MAILBOX_ID_2);
 
     private static final CassandraModule MODULES = CassandraModule.aggregateModules(
-        CassandraAclModule.MODULE,
-        CassandraEventStoreModule.MODULE(),
-        CassandraMailboxModule.MODULE,
-        CassandraSchemaVersionModule.MODULE);
+            CassandraAclModule.MODULE,
+            CassandraEventStoreModule.MODULE(),
+            CassandraMailboxModule.MODULE,
+            CassandraSchemaVersionModule.MODULE);
     private static final int TRY_COUNT_BEFORE_FAILURE = 6;
 
     @RegisterExtension
@@ -110,8 +110,8 @@ class CassandraMailboxMapperTest {
 
         versionDAO = new CassandraSchemaVersionDAO(cassandra.getConf());
         versionDAO.truncateVersion()
-            .then(versionDAO.updateVersion(new SchemaVersion(7)))
-            .block();
+                .then(versionDAO.updateVersion(new SchemaVersion(7)))
+                .block();
         setUpTestee(CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
@@ -122,23 +122,23 @@ class CassandraMailboxMapperTest {
         CassandraACLDAOV1 aclDAOV1 = new CassandraACLDAOV1(cassandra.getConf(), cassandraConfiguration, CassandraConsistenciesConfiguration.DEFAULT);
         CassandraACLDAOV2 aclDAOv2 = new CassandraACLDAOV2(cassandra.getConf());
         JsonEventSerializer jsonEventSerializer = JsonEventSerializer
-            .forModules(ACLModule.ACL_UPDATE)
-            .withoutNestedType();
+                .forModules(ACLModule.ACL_UPDATE)
+                .withoutNestedType();
         CassandraUserMailboxRightsDAO usersRightDAO = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
         CassandraEventStore eventStore = new CassandraEventStore(new EventStoreDao(cassandra.getConf(), jsonEventSerializer, CassandraConsistenciesConfiguration.DEFAULT));
         CassandraACLMapper aclMapper = new CassandraACLMapper(
-            new CassandraACLMapper.StoreV1(usersRightDAO, aclDAOV1),
-            new CassandraACLMapper.StoreV2(usersRightDAO, aclDAOv2, eventStore),
-            versionManager);
+                new CassandraACLMapper.StoreV1(usersRightDAO, aclDAOV1),
+                new CassandraACLMapper.StoreV2(usersRightDAO, aclDAOv2, eventStore),
+                versionManager);
         testee = new CassandraMailboxMapper(
-            mailboxDAO,
-            mailboxPathDAO,
-            mailboxPathV2DAO,
-            mailboxPathV3DAO,
-            usersRightDAO,
-            aclMapper,
-            versionManager,
-            cassandraConfiguration);
+                mailboxDAO,
+                mailboxPathDAO,
+                mailboxPathV2DAO,
+                mailboxPathV3DAO,
+                usersRightDAO,
+                aclMapper,
+                versionManager,
+                cassandraConfiguration);
     }
 
     @Nested
@@ -155,20 +155,20 @@ class CassandraMailboxMapperTest {
             inboxPath = MailboxPath.forUser(USER, INBOX);
             inboxPathRenamed = MailboxPath.forUser(USER, INBOX_RENAMED);
             allMailboxesSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPath)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPath)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound();
             inboxSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPath)
-                .expression(new ExactName(INBOX))
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPath)
+                    .expression(new ExactName(INBOX))
+                    .build()
+                    .asUserBound();
             inboxRenamedSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPathRenamed)
-                .expression(new ExactName(INBOX_RENAMED))
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPathRenamed)
+                    .expression(new ExactName(INBOX_RENAMED))
+                    .build()
+                    .asUserBound();
         }
 
         @Nested
@@ -180,24 +180,24 @@ class CassandraMailboxMapperTest {
                 Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("DELETE FROM mailboxPathV2 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("DELETE FROM mailboxPathV2 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
                 testee.rename(inboxRenamed).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inboxId).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxById(inboxId).block())
+                            .isEqualTo(inboxRenamed);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                            .isEqualTo(inboxRenamed);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inboxRenamed));
                 }));
             }
 
@@ -208,48 +208,48 @@ class CassandraMailboxMapperTest {
                 Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
                 testee.rename(inboxRenamed).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inboxId).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxById(inboxId).block())
+                            .isEqualTo(inboxRenamed);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                            .isEqualTo(inboxRenamed);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inboxRenamed));
                 }));
             }
 
             @Test
             void createShouldRetryFailedMailboxSaving(CassandraCluster cassandra) {
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
                 Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inbox.getMailboxId()).block())
-                        .isEqualTo(inbox);
+                            .assertThat(testee.findMailboxById(inbox.getMailboxId()).block())
+                            .isEqualTo(inbox);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPath).block())
-                        .isEqualTo(inbox);
+                            .assertThat(testee.findMailboxByPath(inboxPath).block())
+                            .isEqualTo(inbox);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inbox));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox));
                 }));
             }
 
@@ -258,20 +258,20 @@ class CassandraMailboxMapperTest {
                 Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
                 testee.delete(inbox).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> testee.findMailboxById(inbox.getMailboxId()).block())
-                        .hasCauseInstanceOf(MailboxNotFoundException.class);
+                            .hasCauseInstanceOf(MailboxNotFoundException.class);
                     softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
-                        .isEmpty();
+                            .isEmpty();
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .isEmpty();
+                            .collectList().block())
+                            .isEmpty();
                 }));
             }
         }
@@ -282,108 +282,108 @@ class CassandraMailboxMapperTest {
             void setVersion() {
                 // Read repairs should not be performed with an outdated data representation
                 versionDAO.truncateVersion()
-                    .then(versionDAO.updateVersion(new SchemaVersion(8)))
-                    .block();
+                        .then(versionDAO.updateVersion(new SchemaVersion(8)))
+                        .block();
             }
 
             @Test
             void findMailboxByIdShouldEventuallyFixInconsistencyWhenMailboxIsNotInPath() {
                 mailboxDAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxById(MAILBOX_ID)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxById(MAILBOX_ID)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(MAILBOX_ID).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxById(MAILBOX_ID).block())
+                            .isEqualTo(MAILBOX);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void orphanMailboxIdEntriesCanNotBeReadRepaired() {
                 mailboxDAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxByPath(MAILBOX_PATH)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxByPath(MAILBOX_PATH)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThat(MailboxReactorUtils.blockOptional(testee.findMailboxByPath(MAILBOX_PATH)))
-                        .isEmpty();
+                            .isEmpty();
                     softly(softly)
-                        .assertThat(testee.findMailboxById(MAILBOX_ID).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxById(MAILBOX_ID).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void orphanPathEntriesCanNotBeRepairedByIdReads() {
                 mailboxPathV3DAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxById(MAILBOX_ID)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxById(MAILBOX_ID)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> MailboxReactorUtils.blockOptional(testee.findMailboxById(MAILBOX_ID)))
-                        .isInstanceOf(MailboxNotFoundException.class);
+                            .isInstanceOf(MailboxNotFoundException.class);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void findMailboxByPathShouldFixInconsistencyWhenMailboxIsNotReferencedById() {
                 mailboxPathV3DAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxByPath(MAILBOX_PATH)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxByPath(MAILBOX_PATH)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> MailboxReactorUtils.blockOptional(testee.findMailboxById(MAILBOX_ID)))
-                        .isInstanceOf(MailboxNotFoundException.class);
+                            .isInstanceOf(MailboxNotFoundException.class);
                     softly.assertThat(MailboxReactorUtils.blockOptional(testee.findMailboxByPath(MAILBOX_PATH)))
-                        .isEmpty();
+                            .isEmpty();
                 }));
             }
         }
 
         @Disabled("In order to be more performant mailboxPath V3 table includes the UID_VALIDITY." +
-            "Reading paths no longer requires reading the mailbox by id but this of course has a " +
-            "consistency cost.")
+                "Reading paths no longer requires reading the mailbox by id but this of course has a " +
+                "consistency cost.")
         @Test
         void createShouldBeConsistentWhenFailToPersistMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(10)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(10)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
 
             SoftAssertions.assertSoftly(softly -> {
                 softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
-                    .isEmpty();
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             });
         }
 
@@ -394,9 +394,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed));
 
@@ -404,16 +404,16 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inbox);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -425,18 +425,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly ->
-                softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox))
+                    softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox))
             ));
         }
 
@@ -448,18 +448,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isInstanceOf(MailboxNotFoundException.class);
+                        .isInstanceOf(MailboxNotFoundException.class);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
@@ -470,24 +470,24 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inbox);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -499,18 +499,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly ->
-                softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox))));
+                    softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox))));
         }
 
         @Disabled("JAMES-3056 find by renamed name returns unexpected results")
@@ -521,18 +521,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isInstanceOf(MailboxNotFoundException.class);
+                        .isInstanceOf(MailboxNotFoundException.class);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
@@ -543,27 +543,27 @@ class CassandraMailboxMapperTest {
             CassandraId inboxId = (CassandraId) inbox.getMailboxId();
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.delete(inbox).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatCode(() -> testee.findMailboxById(inboxId).block())
-                    .doesNotThrowAnyException();
+                        .doesNotThrowAnyException();
                 softly.assertThatCode(() -> testee.findMailboxByPath(inboxPath).block())
-                    .doesNotThrowAnyException();
+                        .doesNotThrowAnyException();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -583,16 +583,16 @@ class CassandraMailboxMapperTest {
             testee.rename(mailboxHasSameNameWithInbox).block();
 
             assertThat(testee.findMailboxById(newId).block().getName())
-                .isNotEqualTo(testee.findMailboxById(inboxId).block().getName());
+                    .isNotEqualTo(testee.findMailboxById(inboxId).block().getName());
         }
 
         @Disabled("JAMES-3056 org.apache.james.mailbox.exception.MailboxNotFoundException: 'mailboxId' can not be found")
         @Test
         void createAfterPreviousFailedCreateShouldCreateAMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
 
@@ -600,27 +600,35 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
         @Test
+        /*
+        https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/38/tests
+        Expected size:<1> but was:<2> in:
+        <[Mailbox{id=44ec7c50-405c-11eb-bd9e-f9735674a69e, namespace=#private, user=Username{localPart=user, domainPart=Optional.empty}, name=INBOX},
+            Mailbox{id=4282f660-405c-11eb-bd9e-f9735674a69e, namespace=#private, user=Username{localPart=user, domainPart=Optional.empty}, name=name}]>
+        at CassandraMailboxMapperTest$ConsistencyTest.lambda$createAfterPreviousDeleteOnFailedCreateShouldCreateAMailbox$34(CassandraMailboxMapperTest$ConsistencyTest.java:628)
+         */
+        @Tag(Unstable.TAG)
         void createAfterPreviousDeleteOnFailedCreateShouldCreateAMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
             doQuietly(() -> testee.delete(new Mailbox(inboxPath, UID_VALIDITY, CassandraId.timeBased())).block());
@@ -629,18 +637,18 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -650,9 +658,9 @@ class CassandraMailboxMapperTest {
             CassandraId inboxId = (CassandraId) inbox.getMailboxId();
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.delete(inbox).block());
 
@@ -660,20 +668,20 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxById(inboxId).block())
-                    .hasCauseInstanceOf(MailboxNotFoundException.class);
-                    softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
+                        .hasCauseInstanceOf(MailboxNotFoundException.class);
+                softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
                         .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
         @Disabled("JAMES-3056 mailbox name is not updated to INBOX_RENAMED).isEqualTo(" +
-            "findMailboxWithPathLike() returns a list with two same mailboxes")
+                "findMailboxWithPathLike() returns a list with two same mailboxes")
         @Test
         void renameAfterRenameFailOnRetrieveMailboxShouldRenameTheMailbox(CassandraCluster cassandra) {
             Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
@@ -681,9 +689,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
@@ -691,24 +699,24 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inboxRenamed);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                        .isEqualTo(inboxRenamed);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
             }));
         }
 
@@ -720,9 +728,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
@@ -730,25 +738,25 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inboxRenamed);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                        .isEqualTo(inboxRenamed);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox ->
-                        softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox ->
+                                softly(softly)
+                                        .assertThat(searchMailbox)
+                                        .isEqualTo(inboxRenamed));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
             }));
         }
 
@@ -773,10 +781,10 @@ class CassandraMailboxMapperTest {
 
         Mailbox newMailbox = new Mailbox(tooLongMailboxPath(mailbox.generateAssociatedPath()), UID_VALIDITY, mailbox.getMailboxId());
         assertThatThrownBy(() -> testee.rename(newMailbox).block())
-            .isInstanceOf(TooLongMailboxNameException.class);
+                .isInstanceOf(TooLongMailboxNameException.class);
 
         assertThat(mailboxPathV3DAO.retrieve(MAILBOX_PATH).blockOptional())
-            .isPresent();
+                .isPresent();
     }
 
     private MailboxPath tooLongMailboxPath(MailboxPath fromMailboxPath) {
@@ -789,72 +797,72 @@ class CassandraMailboxMapperTest {
         void setUp() {
             // Read repairs are not supported accross schema versions...
             setUpTestee(CassandraConfiguration.builder()
-                .mailboxReadRepair(0f)
-                .build());
+                    .mailboxReadRepair(0f)
+                    .build());
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -864,9 +872,9 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -876,9 +884,9 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -888,13 +896,13 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -904,69 +912,69 @@ class CassandraMailboxMapperTest {
         @Test
         void deleteShouldRemoveMailboxWhenInAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldRemoveMailboxWhenInV1Tables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldRemoveMailboxWhenInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxByPathShouldThrowWhenDoesntExistInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -974,19 +982,19 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -994,17 +1002,17 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -1012,18 +1020,18 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList()
-                .block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList()
+                    .block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -1031,16 +1039,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathDAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1050,18 +1058,18 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathDAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1071,16 +1079,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1090,16 +1098,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(childMailbox)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1115,14 +1123,14 @@ class CassandraMailboxMapperTest {
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID_2).block();
 
             assertThat(testee.findMailboxWithPathLike(
-                MailboxQuery.builder()
-                    .privateNamespace()
-                    .username(USER)
-                    .expression(Wildcard.INSTANCE)
-                    .build()
-                    .asUserBound())
-                .collectList().block())
-                .containsOnly(MAILBOX);
+                    MailboxQuery.builder()
+                            .privateNamespace()
+                            .username(USER)
+                            .expression(Wildcard.INSTANCE)
+                            .build()
+                            .asUserBound())
+                    .collectList().block())
+                    .containsOnly(MAILBOX);
         }
     }
 }
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
index d031a38..48d2a66 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
@@ -32,6 +32,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.StatementRecorder;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
@@ -46,6 +47,7 @@ import org.apache.james.mailbox.store.mail.model.MessageIdMapperTest;
 import org.apache.james.util.streams.Limit;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -90,6 +92,14 @@ class CassandraMessageIdMapperTest extends MessageIdMapperTest {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-264/5/tests
+    Error
+    Could not send request, session is closed
+    Stacktrace
+    java.lang.IllegalStateException: Could not send request, session is closed
+     */
     void setFlagsShouldMinimizeMessageReads(CassandraCluster cassandra) throws Exception {
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
         CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests(
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
index 4282efa..881822f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
@@ -32,6 +32,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.Scenario;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -47,6 +48,7 @@ import org.apache.james.task.Task;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -638,7 +640,16 @@ public class SolveMessageInconsistenciesServiceTest {
                 .build());
     }
 
+    /*
+    Error
+    Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    Stacktrace
+    com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    Caused by: com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/39/tests
+    */
     @Test
+    @Tag(Unstable.TAG)
     void fixMailboxInconsistenciesShouldUpdateContextWhenDeleteError(CassandraCluster cassandra) {
         Context context = new Context();
 
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 2725022..f3e1382 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -156,7 +156,7 @@ public abstract class MailboxMapperACLTest {
     }
 
     @Test
-    void updateAclShouldCombineStoredAclWhenAdd() {
+    protected void updateAclShouldCombineStoredAclWhenAdd() {
         EntryKey key = EntryKey.createUserEntryKey(USER);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
diff --git a/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java b/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
index b8d001f..0afd5be 100644
--- a/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
+++ b/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
@@ -25,6 +25,7 @@ import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.MetricFactoryContract;
@@ -33,6 +34,7 @@ import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
 import reactor.core.publisher.Mono;
@@ -126,6 +128,7 @@ class RecordingMetricFactoryTest implements MetricFactoryContract {
     }
 
     @Test
+    @Tag(Unstable.TAG)
     void decoratePublisherWithTimerMetricShouldRecordANewValueForEachRetry() {
         Duration duration = Duration.ofMillis(100);
         Mono.from(testee.decoratePublisherWithTimerMetric("any", Mono.delay(duration)))
@@ -139,6 +142,7 @@ class RecordingMetricFactoryTest implements MetricFactoryContract {
     }
 
     @Test
+    @Tag(Unstable.TAG)
     void decoratePublisherWithTimerMetricLogP99ShouldRecordANewValueForEachRetry() {
         Duration duration = Duration.ofMillis(100);
         Mono.from(testee.decoratePublisherWithTimerMetricLogP99("any", Mono.delay(duration)))
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
index 98c910a..4834cc9 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
@@ -36,6 +36,7 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.search.FlagTerm;
 
 import org.apache.james.core.Domain;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
@@ -49,6 +50,7 @@ import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
 import com.github.fge.lambdas.Throwing;
@@ -82,6 +84,10 @@ interface MailsShouldBeWellReceived {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    Condition with lambda expression in org.apache.james.MailsShouldBeWellReceived that uses org.apache.james.GuiceJamesServer was not fulfilled within 10 seconds.
+     */
     default void mailsContentWithUnicodeCharactersShouldBeKeptUnChanged(GuiceJamesServer server) throws Exception {
         server.getProbe(DataProbeImpl.class).fluent()
             .addDomain(DOMAIN)
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
index 7298fcf..a0f3afe 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
@@ -18,12 +18,16 @@
  ****************************************************************/
 package org.apache.james.jmap.memory;
 
+import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.MemoryJamesServerMain;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinContract;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinModuleExtension;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.spamassassin.SpamAssassinExtension;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class MemorySpamAssassinContractTest implements SpamAssassinContract {
@@ -33,4 +37,46 @@ class MemorySpamAssassinContractTest implements SpamAssassinContract {
         .server(configuration -> MemoryJamesServerMain.createServer(configuration)
             .overrideWith(new TestJMAPServerModule()))
         .build();
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void spamShouldBeDeliveredInSpamMailboxWhenSameMessageHasAlreadyBeenMovedToSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.spamShouldBeDeliveredInSpamMailboxWhenSameMessageHasAlreadyBeenMovedToSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void spamShouldBeDeliveredInSpamMailboxOrInboxWhenMultipleRecipientsConfigurations(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.spamShouldBeDeliveredInSpamMailboxOrInboxWhenMultipleRecipientsConfigurations(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void movingAMailToTrashShouldNotImpactSpamassassinLearning(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.movingAMailToTrashShouldNotImpactSpamassassinLearning(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void expungingSpamMessageShouldNotImpactSpamAssassinState(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.expungingSpamMessageShouldNotImpactSpamAssassinState(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void imapMovesToSpamMailboxShouldBeConsideredAsSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.imapMovesToSpamMailboxShouldBeConsideredAsSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void imapCopiesToSpamMailboxShouldBeConsideredAsSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.imapCopiesToSpamMailboxShouldBeConsideredAsSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void deletingSpamMessageShouldNotImpactSpamAssassinState(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.deletingSpamMessageShouldNotImpactSpamAssassinState(jamesServer, spamAssassin);
+    }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 7cdd223..29e4ec5 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -165,6 +165,7 @@
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <groups combine.self="override">org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
+                    <excludedGroups>org.apache.james.junit.categories.Unstable</excludedGroups>
                 </configuration>
             </plugin>
         </plugins>
@@ -181,7 +182,7 @@
                             <version>2.22.2</version>
                             <configuration>
                                 <excludedGroups></excludedGroups>
-                                <groups combine.self="override">unstable</groups>
+                                <groups combine.self="override">org.apache.james.junit.categories.Unstable</groups>
                             </configuration>
                         </plugin>
                     </plugins>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
index 86857c8..8bfbfea 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
@@ -25,9 +25,12 @@ import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
 import org.apache.james.jmap.JMAPAuthenticationTest;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.junit.Rule;
+import org.junit.experimental.categories.Category;
 
+@Category(Unstable.class)
 public class RabbitMQAwsS3JmapAuthenticationTest extends JMAPAuthenticationTest {
 
     @Rule
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
index 7450656..4392b89 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
@@ -25,8 +25,11 @@ import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.draft.methods.integration.SetMailboxesMethodTest;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.Rule;
+import org.junit.experimental.categories.Category;
 
+@Category(Unstable.class)
 public class RabbitMQAwsS3SetMailboxesMethodTest extends SetMailboxesMethodTest {
     @Rule
     public DockerCassandraRule cassandra = new DockerCassandraRule();
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
index edc3842..cbab08f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQDownloadCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
index faf7374..9ecab7d 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQGetMessagesMethodTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
index 4fce27a..46efe3f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -38,6 +39,6 @@ import cucumber.api.junit.Cucumber;
     glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
     tags = {"not @Ignore", "@BasicFeature"},
     strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQMailboxSharingTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
index 9dc7fb2..e169391 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -39,6 +40,6 @@ import cucumber.api.junit.Cucumber;
     glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
     tags = {"not @Ignore", "@BasicFeature"},
     strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQMessageSharingTest {
-}
+}
\ No newline at end of file
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
index 8afa80b..32191e6 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQSetMailboxesMethodCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
index 481f1b8..774957a 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQSetMessagesMethodCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
index 8324ef4..73d780f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQUploadCucumberTest {
 }
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
index 8cbe04a..6e9ed34 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
@@ -26,8 +26,10 @@ import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.jmap.JMAPConfiguration;
 import org.apache.james.jmap.rfc8621.contract.EmailQueryMethodContract;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -55,4 +57,18 @@ public class MemoryEmailQueryMethodNoViewTest implements EmailQueryMethodContrac
     @Disabled("JAMES-3377 Not supported for in-memory test" +
         "In memory do not attempt message parsing a performs a full match on the raw message content")
     public void emailQueryFilterByTextShouldIgnoreAttachmentContent(GuiceJamesServer server) {}
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedBeforeADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedBeforeADate(server);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedAfterADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedAfterADate(server);
+    }
+
+
 }
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
index 9782f60..99116a9 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
@@ -25,8 +25,10 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.jmap.rfc8621.contract.EmailQueryMethodContract;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -48,4 +50,17 @@ public class MemoryEmailQueryMethodTest implements EmailQueryMethodContract {
     @Disabled("JAMES-3377 Not supported for in-memory test" +
         "In memory do not attempt message parsing a performs a full match on the raw message content")
     public void emailQueryFilterByTextShouldIgnoreAttachmentContent(GuiceJamesServer server) {}
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedBeforeADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedBeforeADate(server);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedAfterADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedAfterADate(server);
+    }
+
 }
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
index 83ed90a..fce1e7d 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
@@ -58,6 +58,7 @@ import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.junit.categories.BasicFeature;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTask;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV3Table;
@@ -241,7 +242,16 @@ class FixingGhostMailboxTest {
                     .body(ARGUMENTS + ".messageIds", contains(message2.getMessageId().serialize())));
     }
 
+
+    /*
+     * 1 expectation failed.
+     * JSON path [0][1].messageIds doesn't match.
+     * Expected: a collection with size <2>
+     *   Actual: [95b42310-47b7-11eb-90b1-f5389ace5056]
+     * https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/44/tests
+     */
     @Test
+    @Tag(Unstable.TAG)
     void webadminCanMergeTwoMailboxes() {
         MailboxId newAliceInbox = mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, MailboxConstants.INBOX);
 
diff --git a/server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java b/testing/base/src/main/java/org/apache/james/junit/categories/Unstable.java
similarity index 100%
rename from server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java
rename to testing/base/src/main/java/org/apache/james/junit/categories/Unstable.java
diff --git a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
index eee554c..caad9a7 100644
--- a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
+++ b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.spamassassin.SpamAssassinExtension.SpamAssassin;
 import org.apache.james.util.MimeMessageUtil;
@@ -33,10 +34,12 @@ import org.apache.mailet.Attribute;
 import org.apache.mailet.AttributeValue;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(SpamAssassinExtension.class)
+@Tag(Unstable.TAG)
 public class SpamAssassinInvokerTest {
 
     public static final Username USERNAME = Username.of("any@james");


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 20/27: JAMES-3225 uses unique image name for lishare backend singleton

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 180de8704f9993aad7c43e4a39fd88c4437d11b8
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Wed Feb 3 09:38:45 2021 +0100

    JAMES-3225 uses unique image name for lishare backend singleton
---
 .../linshare/src/test/java/org/apache/james/linshare/Linshare.java     | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
index d42d5ec..43730c1 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
@@ -24,6 +24,7 @@ import static io.restassured.config.RestAssuredConfig.newConfig;
 
 import java.nio.charset.StandardCharsets;
 import java.time.Duration;
+import java.util.UUID;
 
 import org.apache.james.util.docker.Images;
 import org.slf4j.Logger;
@@ -130,7 +131,7 @@ public class Linshare {
     @SuppressWarnings("resource")
     private GenericContainer<?> createDockerBackend() {
         return new GenericContainer<>(
-            new ImageFromDockerfile()
+            new ImageFromDockerfile("linshare-backend-"+ UUID.randomUUID().toString())
                 .withFileFromClasspath("conf/log4j.properties", "backend/conf/log4j.properties")
                 .withFileFromClasspath("conf/catalina.properties", "backend/conf/catalina.properties")
                 .withFileFromClasspath("conf/id_rsa", "backend/conf/id_rsa.pri")


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 09/27: JAMES-3225 make sure to capture dumpstream if exists on surefire crash

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit fe25df6ed9a3920d59f9b3ac5b061fa4441fbc27
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Jan 7 17:39:36 2021 +0100

    JAMES-3225 make sure to capture dumpstream if exists on surefire crash
---
 Jenkinsfile | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 6b9d6f2..459dd36 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -96,8 +96,9 @@ pipeline {
                 }
             post {
                 always {
-                    junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
-                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
+                    junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: false)
+                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: false)
+			    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
                 }
             }
         }
@@ -113,6 +114,7 @@ pipeline {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
+        archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 02/27: JAMES-3225 uses multithreaded compilation

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 4e04845ce6c2438e172d679a482522fe8a479ed9
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Nov 26 09:34:02 2020 +0100

    JAMES-3225 uses multithreaded compilation
---
 Jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 2175fe9..d521f61 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -80,7 +80,7 @@ pipeline {
         stage('Build') {
             steps {
                 echo 'Building'
-                sh 'mvn -U -B -e clean install -DskipTests'
+                sh 'mvn -U -B -e clean install -DskipTests -T1C'
             }
         }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 22/27: JAMES-3225 log all image events related to DockerCassandra

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5920cb0b2d1763319a38266d71599091c6801cc5
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Wed Feb 3 22:35:40 2021 +0100

    JAMES-3225 log all image events related to DockerCassandra
---
 .../james/backends/cassandra/DockerCassandra.java  | 33 +++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
index fce5fc0..3d18326 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
@@ -19,6 +19,10 @@
 
 package org.apache.james.backends.cassandra;
 
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.command.EventsCmd;
+import com.github.dockerjava.api.model.Event;
+import com.github.dockerjava.api.model.EventType;
 import org.apache.james.backends.cassandra.init.ClusterFactory;
 import org.apache.james.backends.cassandra.init.KeyspaceFactory;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
@@ -38,6 +42,8 @@ import com.datastax.driver.core.Session;
 import com.github.dockerjava.api.DockerClient;
 import com.google.common.collect.ImmutableMap;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.util.UUID;
 
 public class DockerCassandra {
@@ -123,8 +129,33 @@ public class DockerCassandra {
         this("cassandra_3_11_3-"+ UUID.randomUUID().toString(), AdditionalDockerFileStep.IDENTITY);
     }
 
-    public DockerCassandra(String imageName, AdditionalDockerFileStep additionalSteps) {
+    private DockerCassandra(String imageName, AdditionalDockerFileStep additionalSteps) {
         client = DockerClientFactory.instance().client();
+        EventsCmd eventsCmd = client.eventsCmd().withEventTypeFilter(EventType.IMAGE).withImageFilter(imageName);
+        eventsCmd.exec(new ResultCallback<Event>() {
+            @Override
+            public void onStart(Closeable closeable) {
+
+            }
+
+            @Override
+            public void onNext(Event object) {
+                logger.info(object.toString());
+            }
+
+            @Override
+            public void onError(Throwable throwable) {
+                logger.error("event stream failure",throwable);
+            }
+
+            @Override
+            public void onComplete() {
+            }
+
+            @Override
+            public void close() throws IOException {
+            }
+        });
         boolean doNotDeleteImageAfterUsage = false;
         cassandraContainer = new GenericContainer<>(
             new ImageFromDockerfile(imageName,doNotDeleteImageAfterUsage)


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 25/27: JAMES-3225 increase wait for ready timeout for apache CI

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 8aed6ac200905df38fbbfdd6c51145e9b4979704
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Fri Feb 5 09:17:18 2021 +0100

    JAMES-3225 increase wait for ready timeout for apache CI
---
 .../java/org/apache/james/transport/mailets/amqp/AmqpExtension.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
index f4ac1e2..d2115cb 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpExtension.java
@@ -125,7 +125,7 @@ public class AmqpExtension implements BeforeAllCallback, AfterAllCallback, After
     private void waitingForRabbitToBeReady(ConnectionFactory factory) {
         Awaitility
             .await()
-            .atMost(30, TimeUnit.SECONDS)
+            .atMost(60, TimeUnit.SECONDS)
             .with()
             .pollInterval(10, TimeUnit.MILLISECONDS)
             .until(() -> isReady(factory));


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 27/27: JAMES-3225 increase DockerCassandra container start timeout

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit b67268f2d5cf409ca77bb7faee009e6513b4fdda
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Mon Feb 8 21:13:25 2021 +0100

    JAMES-3225 increase DockerCassandra container start timeout
    
    in https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-264/57/tests it took about 70s to start on apache CI :(
---
 .../java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
index cbec58c..43d81ae 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
@@ -32,7 +32,7 @@ import com.google.common.primitives.Ints;
 
 public class CassandraWaitStrategy implements WaitStrategy {
 
-    private static final Duration DEFAULT_TIMEOUT = Duration.ofMinutes(1);
+    private static final Duration DEFAULT_TIMEOUT = Duration.ofMinutes(2);
     private final GenericContainer<?> cassandraContainer;
     private final Duration timeout;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 11/27: JAMES-3225 increases artifact and build results retention

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5c76c7271db7e890ad138646860f173f5375a56e
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Jan 14 08:52:17 2021 +0100

    JAMES-3225 increases artifact and build results retention
---
 Jenkinsfile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 4f83cce..782f4e5 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -50,7 +50,7 @@ pipeline {
         // When we have test-fails e.g. we don't need to run the remaining steps
         skipStagesAfterUnstable()
         buildDiscarder(
-                logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
+                logRotator(artifactNumToKeepStr: '10', numToKeepStr: '30')
         )
         disableConcurrentBuilds()
     }
@@ -93,7 +93,7 @@ pipeline {
                 echo 'Running tests'
                 // all tests run is very very long (10 hours on Apache Jenkins)
                 sh 'mvn -B -e -fae test '
-                }
+            }
             post {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: false)
@@ -115,6 +115,7 @@ pipeline {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
                     archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
+
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 26/27: JAMES-3225 removes empty lines on linshare container output

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5e10376e9e39e269f47c127d03c15b37c9ea6853
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Sat Feb 6 21:26:34 2021 +0100

    JAMES-3225 removes empty lines on linshare container output
---
 .../src/test/java/org/apache/james/linshare/Linshare.java      | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
index 43730c1..3f9a1de 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
@@ -96,7 +96,7 @@ public class Linshare {
     @SuppressWarnings("resource")
     private GenericContainer<?> createDockerDatabase() {
         return new GenericContainer<>("linagora/linshare-database:2.3.2")
-            .withLogConsumer(frame -> LOGGER.debug("<linshare-database> " + frame.getUtf8String()))
+            .withLogConsumer(frame -> LOGGER.debug("<linshare-database> " + frame.getUtf8String().trim()))
             .withNetworkAliases("database", "linshare_database")
             .withEnv("PGDATA", "/var/lib/postgresql/data/pgdata")
             .withEnv("POSTGRES_USER", "linshare")
@@ -107,7 +107,7 @@ public class Linshare {
     @SuppressWarnings("resource")
     private GenericContainer<?> createDockerMongodb() {
         return new GenericContainer<>("mongo:3.2")
-            .withLogConsumer(frame -> LOGGER.debug("<mongo> " + frame.getUtf8String()))
+            .withLogConsumer(frame -> LOGGER.debug("<mongo> " + frame.getUtf8String().trim()))
             .withNetworkAliases("mongodb", "linshare_mongodb")
             .withCommand("mongod --smallfiles")
             .withNetwork(network);
@@ -116,7 +116,7 @@ public class Linshare {
     @SuppressWarnings("resource")
     private GenericContainer<?> createDockerLdap() {
         return new GenericContainer<>("linagora/linshare-ldap-for-tests:1.0.0")
-            .withLogConsumer(frame -> LOGGER.debug("<linshare-ldap-for-tests> " + frame.getUtf8String()))
+            .withLogConsumer(frame -> LOGGER.debug("<linshare-ldap-for-tests> " + frame.getUtf8String().trim()))
             .withNetworkAliases("ldap")
             .withNetwork(network);
     }
@@ -137,7 +137,7 @@ public class Linshare {
                 .withFileFromClasspath("conf/id_rsa", "backend/conf/id_rsa.pri")
                 .withFileFromClasspath("conf/id_rsa.pub", "backend/conf/id_rsa.pub")
                 .withFileFromClasspath("Dockerfile", "backend/Dockerfile"))
-            .withLogConsumer(frame -> LOGGER.debug("<linshare-backend> " + frame.getUtf8String()))
+            .withLogConsumer(frame -> LOGGER.debug("<linshare-backend> " + frame.getUtf8String().trim()))
             .withNetworkAliases("backend")
             .withEnv("SMTP_HOST", "linshare_smtp")
             .withEnv("SMTP_PORT", "25")
@@ -158,7 +158,7 @@ public class Linshare {
     private GenericContainer<?> createLinshareBackendInit() {
         return new GenericContainer<>("linagora/linshare-init:2.3.2")
             .withNetworkAliases("init")
-            .withLogConsumer(frame -> LOGGER.debug("<linshare-init> " + frame.getUtf8String()))
+            .withLogConsumer(frame -> LOGGER.debug("<linshare-init> " + frame.getUtf8String().trim()))
             .withEnv("LS_HOST", "backend")
             .withEnv("LS_PORT", "8080")
             .withEnv("LS_LDAP_NAME", "ldap-local")


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 07/27: JAMES-3225 increases heap memory for larger integration tests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 69b7835286050f761cd1d69d71677c28fd5947cd
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Wed Dec 23 13:54:58 2020 +0100

    JAMES-3225 increases heap memory for larger integration tests
---
 server/container/guice/cassandra-rabbitmq-guice/pom.xml       | 11 +++++++++++
 .../cassandra-jmap-draft-integration-testing/pom.xml          |  2 +-
 .../memory-jmap-draft-integration-testing/pom.xml             |  1 +
 .../rabbitmq-jmap-draft-integration-testing/pom.xml           |  2 +-
 .../distributed-jmap-rfc-8621-integration-tests/pom.xml       |  2 +-
 .../distributed-webadmin-integration-test/pom.xml             |  2 +-
 .../memory-webadmin-integration-test/pom.xml                  |  2 ++
 server/protocols/webadmin-integration-test/pom.xml            | 10 ----------
 server/protocols/webadmin/webadmin-mailbox/pom.xml            | 11 +++++++++++
 9 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/server/container/guice/cassandra-rabbitmq-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
index beffba1..9423391 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/pom.xml
+++ b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
@@ -198,6 +198,17 @@
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
+                    <reuseForks>true</reuseForks>
+                    <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
+                    <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
+                    <excludedGroups>unstable</excludedGroups>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <executions>
                     <execution>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index d75dc63..641088b 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -212,7 +212,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Xms512m -Xmx1024m</argLine>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
index 90de14b..24b5c8a 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
@@ -170,6 +170,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 29e4ec5..3b44dc8 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -160,7 +160,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Xms512m -Xmx1024m</argLine>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
index a779cf9..2018d3a 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
@@ -120,7 +120,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Xms512m -Xmx1024m</argLine>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
index 1bf9a9c..dcb88dd 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
@@ -97,7 +97,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <argLine>-Xms512m -Xmx1024m</argLine>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
index 3092396..7d9bac0 100644
--- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
@@ -57,7 +57,9 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
                     <reuseForks>true</reuseForks>
+                    <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 591fa55..bbda129 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -37,14 +37,4 @@
         <module>memory-webadmin-integration-test</module>
         <module>webadmin-integration-test-common</module>
     </modules>
-
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index ba61107..49a9372 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -240,6 +240,17 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <argLine>-Xms512m -Xmx2048m</argLine>
+                    <reuseForks>true</reuseForks>
+                    <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
+                    <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
+                    <excludedGroups>unstable</excludedGroups>
+                </configuration>
+            </plugin>
+            <plugin>
                 <groupId>com.github.kongchen</groupId>
                 <artifactId>swagger-maven-plugin</artifactId>
                 <configuration>


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 16/27: JAMES-3225 adds timestamps to maven logs

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 761fa456eebb63ad450ef5fa585b01025ec7db96
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Jan 19 20:57:33 2021 +0100

    JAMES-3225 adds timestamps to maven logs
---
 Jenkinsfile | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 4db43dc..ea840f4 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -34,6 +34,7 @@ pipeline {
         // ... setup any environment variables ...
         MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository'
         MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true'
+        MVN_SHOW_TIMESTAMPS="-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS"
         CI = true
         LC_CTYPE = 'en_US.UTF-8'
     }
@@ -84,7 +85,7 @@ pipeline {
         stage('Build') {
             steps {
                 echo 'Building'
-                sh 'mvn -U -B -e clean install -DskipTests -T1C'
+                sh 'mvn -U -B -e clean install -DskipTests -T1C ${MVN_SHOW_TIMESTAMPS}'
             }
         }
 
@@ -92,7 +93,7 @@ pipeline {
             steps {
                 echo 'Running tests'
                 // all tests run is very very long (10 hours on Apache Jenkins)
-                sh 'mvn -B -e -fae test '
+                sh 'mvn -B -e -fae test ${MVN_SHOW_TIMESTAMPS}'
             }
             post {
                 always {
@@ -107,7 +108,7 @@ pipeline {
             steps {
                 echo 'Running unstable tests'
                 catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
-                    sh 'mvn -B -e -fae test -Punstable-tests'
+                    sh 'mvn -B -e -fae test -Punstable-tests ${MVN_SHOW_TIMESTAMPS}'
                 }
             }
             post {
@@ -115,7 +116,6 @@ pipeline {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
                     archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
-
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 17/27: JAMES-3225 archive all surefire reports on crash

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 8c92bf148110b0b9436c0776e0c3b84822fbc47f
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Wed Jan 20 21:28:29 2021 +0100

    JAMES-3225 archive all surefire reports on crash
---
 Jenkinsfile | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index ea840f4..f669cae 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -99,7 +99,9 @@ pipeline {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: false)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-                    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
+                }
+                failure {
+                    archiveArtifacts artifacts: '**/surefire-reports/*' , fingerprint: true
                 }
             }
         }
@@ -115,7 +117,9 @@ pipeline {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-                    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
+                }
+                failure {
+                    archiveArtifacts artifacts: '**/surefire-reports/*' , fingerprint: true
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 19/27: JAMES-3225 enable debug logging on testcontainers

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit ac37af46c293b8806735eea84467c41be5bfdd66
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Jan 26 21:52:48 2021 +0100

    JAMES-3225 enable debug logging on testcontainers
    
    This enables better tracing of container initialization errors on the CI
---
 testing/base/src/main/resources/logback-test.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/testing/base/src/main/resources/logback-test.xml b/testing/base/src/main/resources/logback-test.xml
index aa05a3d..ddcf72c 100644
--- a/testing/base/src/main/resources/logback-test.xml
+++ b/testing/base/src/main/resources/logback-test.xml
@@ -28,5 +28,5 @@
                 <appender-ref ref="FILE" />
         </root>
         <logger name="org.apache.james" level="DEBUG" />
-
+	<logger name="org.testcontainers" level="DEBUG"/>
 </configuration>


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 05/27: JAMES-3225 split unstable tests from primary pipeline

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 7f96ed67e95c31d7f69b3f3db376971e66816555
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Sun Dec 6 21:56:31 2020 +0100

    JAMES-3225 split unstable tests from primary pipeline
---
 Jenkinsfile                                        | 41 ++++++++++++++--------
 pom.xml                                            | 20 +++++++++++
 server/blob/blob-common/pom.xml                    |  6 ++++
 server/blob/blob-storage-strategy/pom.xml          |  6 ++++
 .../apache/james/WithCassandraBlobStoreTest.java   | 13 +++++++
 server/container/guice/data-cassandra/pom.xml      |  6 ++++
 server/container/guice/jpa-smtp-common/pom.xml     |  6 ++++
 .../guice/mailrepository-cassandra/pom.xml         |  6 ++++
 .../guice/protocols/webadmin-jmap/pom.xml          |  6 ++++
 .../guice/protocols/webadmin-mail-over-web/pom.xml |  6 ++++
 server/container/guice/sieve-file/pom.xml          |  6 ++++
 server/container/guice/sieve-jpa/pom.xml           |  6 ++++
 .../testing/custom-mailets-implementation/pom.xml  |  6 ++++
 .../container/guice/testing/custom-mailets/pom.xml |  6 ++++
 server/container/guice/testing/dependency/pom.xml  |  9 +++++
 server/dns-service/dnsservice-api/pom.xml          |  8 +++++
 .../pom.xml                                        | 21 ++++++++++-
 .../pom.xml                                        | 20 +++++++++++
 .../pom.xml                                        | 21 +++++++++++
 .../distributed-webadmin-integration-test/pom.xml  | 22 +++++++++++-
 .../apache/james/junit/categories/Unstable.java    | 24 +++++++++++++
 21 files changed, 249 insertions(+), 16 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index a2d2059..6b9d6f2 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -34,8 +34,8 @@ pipeline {
         // ... setup any environment variables ...
         MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository'
         MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true'
-        CI=true
-        LC_CTYPE = 'en_US.UTF-8'        
+        CI = true
+        LC_CTYPE = 'en_US.UTF-8'
     }
 
     tools {
@@ -49,12 +49,12 @@ pipeline {
         timeout(time: 10, unit: 'HOURS')
         // When we have test-fails e.g. we don't need to run the remaining steps
         skipStagesAfterUnstable()
-         buildDiscarder(
+        buildDiscarder(
                 logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
         )
         disableConcurrentBuilds()
     }
-    
+
     triggers {
         issueCommentTrigger('.*test this please.*')
     }
@@ -88,11 +88,26 @@ pipeline {
             }
         }
 
-        stage('Tests') {
+        stage('Stable Tests') {
             steps {
                 echo 'Running tests'
-                // all tests is very very long (10 hours on Apache Jenkins)
-                sh 'mvn -B -e test'
+                // all tests run is very very long (10 hours on Apache Jenkins)
+                sh 'mvn -B -e -fae test '
+                }
+            post {
+                always {
+                    junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
+                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
+                }
+            }
+        }
+
+        stage('Unstable Tests') {
+            steps {
+                echo 'Running unstable tests'
+                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
+                    sh 'mvn -B -e -fae test -Punstable-tests'
+                }
             }
             post {
                 always {
@@ -109,14 +124,13 @@ pipeline {
                 sh 'mvn -B -e deploy -Pdeploy -DskipTests'
             }
         }
-    }
-
-    // Do any post build stuff ... such as sending emails depending on the overall build result.
+   }
+// Do any post build stuff ... such as sending emails depending on the overall build result.
     post {
         // If this build failed, send an email to the list.
         failure {
             script {
-                if(env.BRANCH_NAME == "master") {
+                if (env.BRANCH_NAME == "master") {
                     emailext(
                             subject: "[BUILD-FAILURE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
                             body: """
@@ -133,7 +147,7 @@ Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANC
         // If this build didn't fail, but there were failing tests, send an email to the list.
         unstable {
             script {
-                if(env.BRANCH_NAME == "master") {
+                if (env.BRANCH_NAME == "master") {
                     emailext(
                             subject: "[BUILD-UNSTABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
                             body: """
@@ -154,7 +168,7 @@ Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANC
             deleteDir()
             script {
                 if (env.BRANCH_NAME == "master" && (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result != 'SUCCESS')) {
-                    emailext (
+                    emailext(
                             subject: "[BUILD-STABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
                             body: """
 BUILD-STABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]':
@@ -167,5 +181,4 @@ Is back to normal.
             }
         }
     }
-
 }
diff --git a/pom.xml b/pom.xml
index 5187c3b..d471c25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3097,6 +3097,7 @@
                         <reuseForks>true</reuseForks>
                         <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                         <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
+                        <excludedGroups>unstable</excludedGroups>
                     </configuration>
                 </plugin>
                 <plugin>
@@ -3518,6 +3519,24 @@
             </build>
         </profile>
         <profile>
+            <id>unstable-tests</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <version>2.22.2</version>
+                            <configuration>
+                                <excludedGroups></excludedGroups>
+                                <groups>unstable</groups>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+        <profile>
             <id>sortPom</id>
             <build>
                 <plugins>
@@ -3544,6 +3563,7 @@
                 </plugins>
             </build>
         </profile>
+
         <profile>
             <id>partial-build</id>
             <build>
diff --git a/server/blob/blob-common/pom.xml b/server/blob/blob-common/pom.xml
index d383468..2b11b69 100644
--- a/server/blob/blob-common/pom.xml
+++ b/server/blob/blob-common/pom.xml
@@ -38,6 +38,12 @@
             <artifactId>blob-api</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>io.projectreactor</groupId>
             <artifactId>reactor-core</artifactId>
         </dependency>
diff --git a/server/blob/blob-storage-strategy/pom.xml b/server/blob/blob-storage-strategy/pom.xml
index c462b0b..3cf0b1e 100644
--- a/server/blob/blob-storage-strategy/pom.xml
+++ b/server/blob/blob-storage-strategy/pom.xml
@@ -41,6 +41,12 @@
             <artifactId>blob-api</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-util</artifactId>
         </dependency>
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
index 2bf74d8..785dc20 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james;
 
+import org.apache.james.junit.categories.Unstable;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class WithCassandraBlobStoreTest implements MailsShouldBeWellReceived {
@@ -26,4 +28,15 @@ class WithCassandraBlobStoreTest implements MailsShouldBeWellReceived {
     static JamesServerExtension jamesServerExtension = WithCassandraBlobStoreImmutableTest.baseExtensionBuilder()
         .lifeCycle(JamesServerExtension.Lifecycle.PER_TEST)
         .build();
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void mailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
+        MailsShouldBeWellReceived.super.mailsShouldBeWellReceived(server);
+    }
+    @Override
+    @Tag(Unstable.TAG)
+    public void mailsShouldBeWellReceivedByBothRecipient(GuiceJamesServer server) throws Exception {
+        MailsShouldBeWellReceived.super.mailsShouldBeWellReceivedByBothRecipient(server);
+    }
 }
diff --git a/server/container/guice/data-cassandra/pom.xml b/server/container/guice/data-cassandra/pom.xml
index adfd27c..87cdb77 100644
--- a/server/container/guice/data-cassandra/pom.xml
+++ b/server/container/guice/data-cassandra/pom.xml
@@ -52,6 +52,12 @@
             <artifactId>james-server-guice-configuration</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>
diff --git a/server/container/guice/jpa-smtp-common/pom.xml b/server/container/guice/jpa-smtp-common/pom.xml
index 0e60340..b8609ba 100644
--- a/server/container/guice/jpa-smtp-common/pom.xml
+++ b/server/container/guice/jpa-smtp-common/pom.xml
@@ -70,6 +70,12 @@
             <artifactId>james-server-jpa-common-guice</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>queue-activemq-guice</artifactId>
         </dependency>
diff --git a/server/container/guice/mailrepository-cassandra/pom.xml b/server/container/guice/mailrepository-cassandra/pom.xml
index 93d0a66..ce88ad0 100644
--- a/server/container/guice/mailrepository-cassandra/pom.xml
+++ b/server/container/guice/mailrepository-cassandra/pom.xml
@@ -56,6 +56,12 @@
             <artifactId>james-server-mailrepository-memory</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>
diff --git a/server/container/guice/protocols/webadmin-jmap/pom.xml b/server/container/guice/protocols/webadmin-jmap/pom.xml
index 488c1cf..be7a0ce 100644
--- a/server/container/guice/protocols/webadmin-jmap/pom.xml
+++ b/server/container/guice/protocols/webadmin-jmap/pom.xml
@@ -33,6 +33,12 @@
 
     <dependencies>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-webadmin-core</artifactId>
         </dependency>
diff --git a/server/container/guice/protocols/webadmin-mail-over-web/pom.xml b/server/container/guice/protocols/webadmin-mail-over-web/pom.xml
index e8abab1..ae61524 100644
--- a/server/container/guice/protocols/webadmin-mail-over-web/pom.xml
+++ b/server/container/guice/protocols/webadmin-mail-over-web/pom.xml
@@ -37,6 +37,12 @@
             <artifactId>james-server-queue-api</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-webadmin-core</artifactId>
         </dependency>
diff --git a/server/container/guice/sieve-file/pom.xml b/server/container/guice/sieve-file/pom.xml
index dbe48c7..43d04f5 100644
--- a/server/container/guice/sieve-file/pom.xml
+++ b/server/container/guice/sieve-file/pom.xml
@@ -39,6 +39,12 @@
             <artifactId>james-server-data-file</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>
diff --git a/server/container/guice/sieve-jpa/pom.xml b/server/container/guice/sieve-jpa/pom.xml
index 0339775..27b5019 100644
--- a/server/container/guice/sieve-jpa/pom.xml
+++ b/server/container/guice/sieve-jpa/pom.xml
@@ -39,6 +39,12 @@
             <artifactId>james-server-data-jpa</artifactId>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>
diff --git a/server/container/guice/testing/custom-mailets-implementation/pom.xml b/server/container/guice/testing/custom-mailets-implementation/pom.xml
index 06d9fe3..ec81bcb 100644
--- a/server/container/guice/testing/custom-mailets-implementation/pom.xml
+++ b/server/container/guice/testing/custom-mailets-implementation/pom.xml
@@ -35,6 +35,12 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.inject</groupId>
             <artifactId>guice</artifactId>
         </dependency>
diff --git a/server/container/guice/testing/custom-mailets/pom.xml b/server/container/guice/testing/custom-mailets/pom.xml
index ca42a9a..28f8eff 100644
--- a/server/container/guice/testing/custom-mailets/pom.xml
+++ b/server/container/guice/testing/custom-mailets/pom.xml
@@ -45,6 +45,12 @@
             <artifactId>james-server-guice-custom-mailets-dependency</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/server/container/guice/testing/dependency/pom.xml b/server/container/guice/testing/dependency/pom.xml
index 7856de7..a49f20d 100644
--- a/server/container/guice/testing/dependency/pom.xml
+++ b/server/container/guice/testing/dependency/pom.xml
@@ -30,4 +30,13 @@
 
     <name>Apache James :: Server :: Guice :: Mailet :: Custom testing mailets :: dependency</name>
     <description>Dependency not part of James classpath that custom mailets can depends on</description>
+
+    <dependencies>
+        <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>
\ No newline at end of file
diff --git a/server/dns-service/dnsservice-api/pom.xml b/server/dns-service/dnsservice-api/pom.xml
index 4375f41..3b6357f 100644
--- a/server/dns-service/dnsservice-api/pom.xml
+++ b/server/dns-service/dnsservice-api/pom.xml
@@ -31,4 +31,12 @@
     <packaging>jar</packaging>
 
     <name>Apache James :: Server :: DNS Service :: API</name>
+    <dependencies>
+        <dependency>
+            <!-- Added because of https://issues.apache.org/jira/browse/SUREFIRE-1266 -->
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index ef8abaf..d75dc63 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -221,5 +221,24 @@
             </plugin>
         </plugins>
     </build>
-
+    <profiles>
+        <profile>
+            <id>unstable-tests</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <version>2.22.2</version>
+                            <configuration>
+                                <excludedGroups></excludedGroups>
+                                <groups>unstable</groups>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 6b2a233..7cdd223 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -169,4 +169,24 @@
             </plugin>
         </plugins>
     </build>
+    <profiles>
+        <profile>
+            <id>unstable-tests</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <version>2.22.2</version>
+                            <configuration>
+                                <excludedGroups></excludedGroups>
+                                <groups combine.self="override">unstable</groups>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
index c4bceb8..a779cf9 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
@@ -126,6 +126,7 @@
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <!-- Junit 5 move from Category to Tag, and it need tag's name as parameter -->
                     <groups combine.self="override">BasicFeature</groups>
+                    <excludedGroups>unstable</excludedGroups>
                     <properties>
                         <includeTags>junit5</includeTags>
                     </properties>
@@ -133,4 +134,24 @@
             </plugin>
         </plugins>
     </build>
+    <profiles>
+        <profile>
+            <id>unstable-tests</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <version>2.22.2</version>
+                            <configuration>
+                                <excludedGroups></excludedGroups>
+                                <groups>unstable</groups>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
index 8d603f2..1bf9a9c 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
@@ -101,9 +101,29 @@
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
-                    <groups combine.self="override">BasicFeature</groups>
+                    <groups combine.self="override">BasicFeature&amp;!unstable</groups>
                 </configuration>
             </plugin>
         </plugins>
     </build>
+    <profiles>
+        <profile>
+            <id>unstable-tests</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <version>2.22.2</version>
+                            <configuration>
+                                <excludedGroups></excludedGroups>
+                                <groups combine.self="override">BasicFeature&amp;unstable</groups>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java b/server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java
new file mode 100644
index 0000000..6126e26
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/junit/categories/Unstable.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.junit.categories;
+
+public interface Unstable {
+    String TAG = "unstable";
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 04/27: JAMES-3225 enables git describe with --always

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit eca6d1ebeec30f65b36a44223c1cf3ca540aa294
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Wed Nov 25 22:06:37 2020 +0100

    JAMES-3225 enables git describe with --always
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index be88df2..5187c3b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3394,7 +3394,7 @@
                     <failOnNoGitDirectory>false</failOnNoGitDirectory>
                     <gitDescribe>
                         <skip>false</skip>
-                        <always>false</always>
+                        <always>true</always>
                         <dirty>-dirty</dirty>
                     </gitDescribe>
                 </configuration>


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 15/27: JAMES-3225 Silence debug writes to System.out

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6ffbbc18abd7e4749e109b97f0368312d0d2fd08
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Tue Jan 19 20:46:48 2021 +0100

    JAMES-3225 Silence debug writes to System.out
---
 .../test/java/org/apache/james/mailbox/MailboxManagerStressContract.java | 1 -
 1 file changed, 1 deletion(-)

diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
index d8667e2..bd2342b 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
@@ -98,7 +98,6 @@ public interface MailboxManagerStressContract<T extends MailboxManager> {
                                 .setSubject("test")
                                 .setBody("testmail", StandardCharsets.UTF_8)), mailboxSession).getId();
 
-                    System.out.println("Append message with uid=" + messageId.getUid());
                     if (uids.put(messageId.getUid(), new Object()) != null) {
                         fail.set(true);
                     }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 12/27: JAMES-3225 email developpers of PR on build failure

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 9b3c4efed55e500772ae1b31b12b5ed80c5dcf83
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Jan 14 08:52:48 2021 +0100

    JAMES-3225 email developpers of PR on build failure
---
 Jenkinsfile | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index 782f4e5..4db43dc 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -143,6 +143,15 @@ Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANC
                             to: "server-dev@james.apache.org",
                             recipientProviders: [[$class: 'DevelopersRecipientProvider']]
                     )
+                }else{
+                    emailext(
+                            subject: "[BUILD-FAILURE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'",
+                            body: """
+BUILD-FAILURE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]':
+Check console output at "<a href="${env.BUILD_URL}">${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]</a>"
+""",
+                            recipientProviders: [[$class: 'DevelopersRecipientProvider']]
+                    )
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 10/27: JAMES-3225 Allow empty failsafe results for stable stage

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 84901537edc84c0a813bb39498c29a2ded8c9e46
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Fri Jan 8 14:58:45 2021 +0100

    JAMES-3225 Allow empty failsafe results for stable stage
    
    integration tests are mostly unstable for now and there may not be
    failsafe runs
---
 Jenkinsfile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 459dd36..4f83cce 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -97,8 +97,8 @@ pipeline {
             post {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: false)
-                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: false)
-			    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
+                    junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
+                    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
                 }
             }
         }
@@ -114,7 +114,7 @@ pipeline {
                 always {
                     junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true)
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
-        archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
+                    archiveArtifacts artifacts: '**/surefire-reports/*.dumpstream' , fingerprint: true
                 }
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 08/27: JAMES-3225 reduces webmin http tests verbosity

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 0b28d2b67e5f3603e531582d9bf537f507f9ea8c
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Sat Dec 26 15:10:33 2020 +0100

    JAMES-3225 reduces webmin http tests verbosity
---
 .../webadmin/routes/SolveMailboxInconsistenciesRequestToTaskTest.java    | 1 -
 .../webadmin/routes/SolveMessageInconsistenciesRequestToTaskTest.java    | 1 -
 .../webadmin/data/jmap/PopulateEmailQueryViewRequestToTaskTest.java      | 1 -
 .../data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java  | 1 -
 .../data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java | 1 -
 .../apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java  | 1 -
 6 files changed, 6 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTaskTest.java b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTaskTest.java
index 73921d1..387ce93 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMailboxInconsistenciesRequestToTaskTest.java
@@ -98,7 +98,6 @@ public class SolveMailboxInconsistenciesRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath(BASE_PATH)
-            .log(LogDetail.URI)
             .build();
     }
 
diff --git a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMessageInconsistenciesRequestToTaskTest.java b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMessageInconsistenciesRequestToTaskTest.java
index 33fddd2..bd60510 100644
--- a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMessageInconsistenciesRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/SolveMessageInconsistenciesRequestToTaskTest.java
@@ -99,7 +99,6 @@ public class SolveMessageInconsistenciesRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath(BASE_PATH)
-            .log(LogDetail.URI)
             .build();
     }
 
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/PopulateEmailQueryViewRequestToTaskTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/PopulateEmailQueryViewRequestToTaskTest.java
index e7a9a1d..402ed7e 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/PopulateEmailQueryViewRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/PopulateEmailQueryViewRequestToTaskTest.java
@@ -118,7 +118,6 @@ class PopulateEmailQueryViewRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath("/bob/mailboxes")
-            .log(LogDetail.URI)
             .build();
     }
 
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java
index 9ac2f1e..70a4ee9 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java
@@ -129,7 +129,6 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath(BASE_PATH)
-            .log(LogDetail.URI)
             .build();
     }
 
diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java
index 3ef01fe..192004e 100644
--- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java
@@ -143,7 +143,6 @@ class RecomputeUserFastViewProjectionItemsRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath("/bob/mailboxes")
-            .log(LogDetail.URI)
             .build();
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
index d2570c7..752e1b3 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java
@@ -121,7 +121,6 @@ class MailboxesExportRequestToTaskTest {
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer)
             .setBasePath("users/" + BOB.asString() + "/mailboxes")
-            .log(LogDetail.URI)
             .build();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 13/27: JAMES-3225 drops fork reuse

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 35f054fbe41d1a3cbb34cc8e311e4a09bfe45849
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Jan 14 17:16:04 2021 +0100

    JAMES-3225 drops fork reuse
    
    `OutOfMemoryError: Direct buffer memory` was one of the most common
    failure mode for builds on the Apache CI
    Attempts to increase Xmx were only partially successful, dropping forks
    made the error go away entirely.
---
 backends-common/elasticsearch/pom.xml                                   | 2 +-
 backends-common/rabbitmq/pom.xml                                        | 2 +-
 mailbox/api/pom.xml                                                     | 2 +-
 mailbox/backup/pom.xml                                                  | 2 +-
 mailbox/cassandra/pom.xml                                               | 2 +-
 mailbox/event/json/pom.xml                                              | 2 +-
 mailbox/memory/pom.xml                                                  | 2 +-
 mailbox/store/pom.xml                                                   | 2 +-
 mailet/standard/pom.xml                                                 | 2 +-
 mdn/pom.xml                                                             | 2 +-
 mpt/impl/imap-mailbox/cassandra/pom.xml                                 | 2 +-
 mpt/impl/imap-mailbox/inmemory/pom.xml                                  | 2 +-
 mpt/impl/imap-mailbox/jpa/pom.xml                                       | 2 +-
 mpt/impl/imap-mailbox/lucenesearch/pom.xml                              | 2 +-
 protocols/imap/pom.xml                                                  | 2 +-
 protocols/smtp/pom.xml                                                  | 2 +-
 server/blob/blob-cassandra/pom.xml                                      | 2 +-
 server/blob/blob-memory/pom.xml                                         | 2 +-
 server/container/guice/cassandra-rabbitmq-guice/pom.xml                 | 2 +-
 server/data/data-cassandra/pom.xml                                      | 2 +-
 server/data/data-file/pom.xml                                           | 2 +-
 server/mailet/integration-testing/pom.xml                               | 2 +-
 server/mailet/mailets/pom.xml                                           | 2 +-
 server/mailrepository/mailrepository-cassandra/pom.xml                  | 2 +-
 .../cassandra-jmap-draft-integration-testing/pom.xml                    | 2 +-
 .../memory-jmap-draft-integration-testing/pom.xml                       | 1 -
 .../rabbitmq-jmap-draft-integration-testing/pom.xml                     | 2 +-
 server/protocols/jmap-draft/pom.xml                                     | 2 +-
 .../distributed-jmap-rfc-8621-integration-tests/pom.xml                 | 2 +-
 .../distributed-webadmin-integration-test/pom.xml                       | 2 +-
 .../webadmin-integration-test/memory-webadmin-integration-test/pom.xml  | 2 +-
 server/protocols/webadmin/webadmin-mailbox/pom.xml                      | 2 +-
 32 files changed, 31 insertions(+), 32 deletions(-)

diff --git a/backends-common/elasticsearch/pom.xml b/backends-common/elasticsearch/pom.xml
index 9620615..c1d56ad 100644
--- a/backends-common/elasticsearch/pom.xml
+++ b/backends-common/elasticsearch/pom.xml
@@ -113,7 +113,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/backends-common/rabbitmq/pom.xml b/backends-common/rabbitmq/pom.xml
index 1bfe6ba..584dc4f 100644
--- a/backends-common/rabbitmq/pom.xml
+++ b/backends-common/rabbitmq/pom.xml
@@ -115,7 +115,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/api/pom.xml b/mailbox/api/pom.xml
index ff31374..91339f7 100644
--- a/mailbox/api/pom.xml
+++ b/mailbox/api/pom.xml
@@ -130,7 +130,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/backup/pom.xml b/mailbox/backup/pom.xml
index 854b934..a203ff5 100644
--- a/mailbox/backup/pom.xml
+++ b/mailbox/backup/pom.xml
@@ -95,7 +95,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index cfbf60a..12ae44d 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -200,7 +200,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/event/json/pom.xml b/mailbox/event/json/pom.xml
index fadfddb..5fa06d1 100644
--- a/mailbox/event/json/pom.xml
+++ b/mailbox/event/json/pom.xml
@@ -91,7 +91,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/memory/pom.xml b/mailbox/memory/pom.xml
index 3a78ac7..3c409c2 100644
--- a/mailbox/memory/pom.xml
+++ b/mailbox/memory/pom.xml
@@ -109,7 +109,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index 7d64df7..28b59b2 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -144,7 +144,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mailet/standard/pom.xml b/mailet/standard/pom.xml
index a46de03..d920076 100644
--- a/mailet/standard/pom.xml
+++ b/mailet/standard/pom.xml
@@ -127,7 +127,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mdn/pom.xml b/mdn/pom.xml
index 68e15ea..3bd0bd7 100644
--- a/mdn/pom.xml
+++ b/mdn/pom.xml
@@ -82,7 +82,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mpt/impl/imap-mailbox/cassandra/pom.xml b/mpt/impl/imap-mailbox/cassandra/pom.xml
index a2753cf..b34a69b 100644
--- a/mpt/impl/imap-mailbox/cassandra/pom.xml
+++ b/mpt/impl/imap-mailbox/cassandra/pom.xml
@@ -103,7 +103,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/mpt/impl/imap-mailbox/inmemory/pom.xml b/mpt/impl/imap-mailbox/inmemory/pom.xml
index 0edd035..46c79cd 100644
--- a/mpt/impl/imap-mailbox/inmemory/pom.xml
+++ b/mpt/impl/imap-mailbox/inmemory/pom.xml
@@ -76,7 +76,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mpt/impl/imap-mailbox/jpa/pom.xml b/mpt/impl/imap-mailbox/jpa/pom.xml
index 77e815a..703217b 100644
--- a/mpt/impl/imap-mailbox/jpa/pom.xml
+++ b/mpt/impl/imap-mailbox/jpa/pom.xml
@@ -97,7 +97,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/mpt/impl/imap-mailbox/lucenesearch/pom.xml b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
index 0111b39..254744e 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/pom.xml
+++ b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
@@ -94,7 +94,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/protocols/imap/pom.xml b/protocols/imap/pom.xml
index 91bd67c..de7c0b0 100644
--- a/protocols/imap/pom.xml
+++ b/protocols/imap/pom.xml
@@ -121,7 +121,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/protocols/smtp/pom.xml b/protocols/smtp/pom.xml
index 88b524e..82b6ad1 100644
--- a/protocols/smtp/pom.xml
+++ b/protocols/smtp/pom.xml
@@ -98,7 +98,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/blob/blob-cassandra/pom.xml b/server/blob/blob-cassandra/pom.xml
index 679071d..2a8c4f7 100644
--- a/server/blob/blob-cassandra/pom.xml
+++ b/server/blob/blob-cassandra/pom.xml
@@ -102,7 +102,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/blob/blob-memory/pom.xml b/server/blob/blob-memory/pom.xml
index 5284361..cb3badf 100644
--- a/server/blob/blob-memory/pom.xml
+++ b/server/blob/blob-memory/pom.xml
@@ -87,7 +87,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms1024m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                 </configuration>
             </plugin>
diff --git a/server/container/guice/cassandra-rabbitmq-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
index 9423391..3cccc99 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/pom.xml
+++ b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
@@ -201,7 +201,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <excludedGroups>unstable</excludedGroups>
diff --git a/server/data/data-cassandra/pom.xml b/server/data/data-cassandra/pom.xml
index f603f5c..ef8679a 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -149,7 +149,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/data/data-file/pom.xml b/server/data/data-file/pom.xml
index 5c1cf2e..1edbfe5 100644
--- a/server/data/data-file/pom.xml
+++ b/server/data/data-file/pom.xml
@@ -149,7 +149,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/mailet/integration-testing/pom.xml b/server/mailet/integration-testing/pom.xml
index 6f0056e..83dd596 100644
--- a/server/mailet/integration-testing/pom.xml
+++ b/server/mailet/integration-testing/pom.xml
@@ -162,7 +162,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/mailet/mailets/pom.xml b/server/mailet/mailets/pom.xml
index e7b9659..e2b00ed 100644
--- a/server/mailet/mailets/pom.xml
+++ b/server/mailet/mailets/pom.xml
@@ -280,7 +280,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/mailrepository/mailrepository-cassandra/pom.xml b/server/mailrepository/mailrepository-cassandra/pom.xml
index 0b5c0f0..6f38b42 100644
--- a/server/mailrepository/mailrepository-cassandra/pom.xml
+++ b/server/mailrepository/mailrepository-cassandra/pom.xml
@@ -90,7 +90,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>2</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index 641088b..a6bde23 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -213,7 +213,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <groups combine.self="override">org.apache.james.jmap.categories.CassandraAndElasticSearchCategory,org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
index 24b5c8a..30f2d2f 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
@@ -171,7 +171,6 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 3b44dc8..0891a7a 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -161,7 +161,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <groups combine.self="override">org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
diff --git a/server/protocols/jmap-draft/pom.xml b/server/protocols/jmap-draft/pom.xml
index faf106a..9664430 100644
--- a/server/protocols/jmap-draft/pom.xml
+++ b/server/protocols/jmap-draft/pom.xml
@@ -269,7 +269,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkCount>1C</forkCount>
                 </configuration>
             </plugin>
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
index 2018d3a..e608bb4 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/pom.xml
@@ -121,7 +121,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <!-- Junit 5 move from Category to Tag, and it need tag's name as parameter -->
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
index dcb88dd..dddc6b3 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
@@ -98,7 +98,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <groups combine.self="override">BasicFeature&amp;!unstable</groups>
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
index 7d9bac0..43d0ed6 100644
--- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
@@ -58,7 +58,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <forkCount>1C</forkCount>
                 </configuration>
diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index 49a9372..4ed88c8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -244,7 +244,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <argLine>-Xms512m -Xmx2048m</argLine>
-                    <reuseForks>true</reuseForks>
+                    <reuseForks>false</reuseForks>
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <excludedGroups>unstable</excludedGroups>


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 03/27: JAMES-3225 adds test this please trigger for the CI

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c7abdfeaf4c5c64cf6a5169c11cdec9f557c9ce6
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Thu Nov 26 11:10:28 2020 +0100

    JAMES-3225 adds test this please trigger for the CI
---
 Jenkinsfile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index d521f61..a2d2059 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -54,6 +54,10 @@ pipeline {
         )
         disableConcurrentBuilds()
     }
+    
+    triggers {
+        issueCommentTrigger('.*test this please.*')
+    }
 
     stages {
         stage('Initialization') {


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 21/27: JAMES-3225 archive test-run.log on failure

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit f00d8c076b1af4e3658233df775a4b9e111c7180
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Wed Feb 3 22:35:09 2021 +0100

    JAMES-3225 archive test-run.log on failure
---
 Jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index f669cae..ef7da53 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -92,7 +92,6 @@ pipeline {
         stage('Stable Tests') {
             steps {
                 echo 'Running tests'
-                // all tests run is very very long (10 hours on Apache Jenkins)
                 sh 'mvn -B -e -fae test ${MVN_SHOW_TIMESTAMPS}'
             }
             post {
@@ -119,6 +118,7 @@ pipeline {
                     junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true)
                 }
                 failure {
+                    archiveArtifacts artifacts: '**/target/test-run.log' , fingerprint: true
                     archiveArtifacts artifacts: '**/surefire-reports/*' , fingerprint: true
                 }
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org