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 <btell...@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-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to