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