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:18:03 UTC
[james-project] 06/27: JAMES-3225 tags more unstable tests
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