You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/08/26 18:01:47 UTC
[james-project] 04/09: JAMES-3924 Tests for contentStart updates
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit b65d0139f4b135dfbfd363b8dbbaed6dd7a35a07
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed May 3 13:14:11 2023 +0700
JAMES-3924 Tests for contentStart updates
---
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 49 ++++++++++++++++++----
1 file changed, 41 insertions(+), 8 deletions(-)
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 124a40ab3a..b83d2431f8 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -67,6 +67,7 @@ import org.apache.james.blob.cassandra.CassandraBlobStoreFactory;
import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
+import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.metrics.api.Gauge;
import org.apache.james.metrics.tests.RecordingMetricFactory;
import org.apache.james.queue.api.MailQueue;
@@ -86,6 +87,7 @@ import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Slice
import org.apache.james.util.streams.Iterators;
import org.apache.james.utils.UpdatableTickingClock;
import org.apache.mailet.Mail;
+import org.apache.mailet.base.test.FakeMail;
import org.assertj.core.api.SoftAssertions;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.AfterEach;
@@ -204,8 +206,9 @@ class RabbitMQMailQueueTest {
void browseStartShouldBeUpdated(CassandraCluster cassandraCluster) {
int emailCount = 100;
- StatementRecorder statementRecorder = new StatementRecorder();
- cassandraCluster.getConf().recordStatements(statementRecorder);
+ StatementRecorder.Selector selector = preparedStatementStartingWith("UPDATE browsestart");
+ StatementRecorder statementRecorder = cassandraCluster.getConf()
+ .recordStatements(selector);
clock.setInstant(IN_SLICE_1);
enqueueSomeMails(namePatternForSlice(1), emailCount);
@@ -220,8 +223,32 @@ class RabbitMQMailQueueTest {
dequeueMails(emailCount);
// The actual rate of update should actually be lower than the update probability.
- assertThat(statementRecorder.listExecutedStatements(preparedStatementStartingWith("UPDATE browsestart")))
- .hasSizeBetween(2, 5);
+ assertThat(statementRecorder.listExecutedStatements(selector))
+ .hasSizeBetween(2, 9);
+ }
+
+ @Test
+ void contentStartShouldBeUpdated(CassandraCluster cassandraCluster) {
+ int emailCount = 100;
+
+ StatementRecorder.Selector selector = preparedStatementStartingWith("UPDATE contentstart");
+ StatementRecorder statementRecorder = cassandraCluster.getConf().recordStatements(selector);
+
+ clock.setInstant(IN_SLICE_1);
+ enqueueSomeMails(namePatternForSlice(1), emailCount);
+ dequeueMails(emailCount);
+
+ clock.setInstant(IN_SLICE_2);
+ enqueueSomeMails(namePatternForSlice(2), emailCount);
+ dequeueMails(emailCount);
+
+ clock.setInstant(IN_SLICE_3);
+ enqueueSomeMails(namePatternForSlice(3), emailCount);
+ dequeueMails(emailCount);
+
+ // The actual rate of update should actually be lower than the update probability.
+ assertThat(statementRecorder.listExecutedStatements(selector))
+ .hasSizeBetween(2, 9);
}
@Test
@@ -678,9 +705,13 @@ class RabbitMQMailQueueTest {
private void enqueueSomeMails(Function<Integer, String> namePattern, int emailCount) {
IntStream.rangeClosed(1, emailCount)
- .forEach(Throwing.intConsumer(i -> enQueue(defaultMail()
- .name(namePattern.apply(i))
- .build())));
+ .forEach(Throwing.intConsumer(i -> {
+ FakeMail mail = defaultMail()
+ .name(namePattern.apply(i))
+ .build();
+ enQueue(mail);
+ LifecycleUtil.dispose(mail);
+ }));
}
private void dequeueMails(int times) {
@@ -700,7 +731,9 @@ class RabbitMQMailQueueTest {
.subscribe();
try {
- await().untilAsserted(() -> assertThat(counter.get()).isGreaterThanOrEqualTo(times));
+ await()
+ .atMost(Duration.ofMinutes(10))
+ .untilAsserted(() -> assertThat(counter.get()).isGreaterThanOrEqualTo(times));
} finally {
disposable.dispose();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org