You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2022/08/29 03:03:47 UTC

[james-project] branch master updated: [BUILD] Fasten OpenSearch tests

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 40624b5f8b [BUILD] Fasten OpenSearch tests
40624b5f8b is described below

commit 40624b5f8b3382a558b7e86bfcb5c2bd74762647
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Aug 24 13:36:51 2022 +0700

    [BUILD] Fasten OpenSearch tests
    
     - Mount tmpfs within the containers
     - Use deleteByQuery where possible to cleanup data as it is faster
---
 .../opensearch/DeleteByQueryPerformer.java         |  8 ++++
 .../backends/opensearch/DockerOpenSearch.java      |  7 ++-
 .../opensearch/DockerOpenSearchExtension.java      | 53 +++++++++++++++++++++-
 .../OpenSearchHealthCheckConnectionTest.java       |  2 +-
 .../opensearch/OpenSearchIntegrationTest.java      | 49 ++++++++++++--------
 .../opensearch/search/OpenSearchSearcherTest.java  |  4 +-
 .../events/OpenSearchQuotaMailboxListenerTest.java | 26 +++++++----
 .../james/webadmin/routes/MailboxesRoutesTest.java | 29 ++++++++----
 .../webadmin/routes/UserMailboxesRoutesTest.java   |  8 ++--
 9 files changed, 142 insertions(+), 44 deletions(-)

diff --git a/backends-common/opensearch/src/main/java/org/apache/james/backends/opensearch/DeleteByQueryPerformer.java b/backends-common/opensearch/src/main/java/org/apache/james/backends/opensearch/DeleteByQueryPerformer.java
index bff700a518..a0261badd8 100644
--- a/backends-common/opensearch/src/main/java/org/apache/james/backends/opensearch/DeleteByQueryPerformer.java
+++ b/backends-common/opensearch/src/main/java/org/apache/james/backends/opensearch/DeleteByQueryPerformer.java
@@ -43,4 +43,12 @@ public class DeleteByQueryPerformer {
         return client.deleteByQuery(deleteRequest, RequestOptions.DEFAULT)
             .then();
     }
+
+    public Mono<Void> perform(QueryBuilder queryBuilder) {
+        DeleteByQueryRequest deleteRequest = new DeleteByQueryRequest(aliasName.getValue());
+        deleteRequest.setQuery(queryBuilder);
+
+        return client.deleteByQuery(deleteRequest, RequestOptions.DEFAULT)
+            .then();
+    }
 }
diff --git a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearch.java b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearch.java
index 65bd5f114b..4116d7c007 100644
--- a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearch.java
+++ b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearch.java
@@ -133,7 +133,7 @@ public interface DockerOpenSearch {
 
         static DockerContainer defaultContainer(String imageName) {
             return DockerContainer.fromName(imageName)
-                .withTmpFs(ImmutableMap.of("/usr/share/elasticsearch/data", "rw,size=200m"))
+                .withTmpFs(ImmutableMap.of("/usr/share/opensearch/data/nodes/0", "rw,size=200m"))
                 .withExposedPorts(ES_HTTP_PORT)
                 .withEnv("discovery.type", "single-node")
                 .withEnv("DISABLE_INSTALL_DEMO_CONFIG", "true")
@@ -228,6 +228,7 @@ public interface DockerOpenSearch {
                         .withFileFromClasspath("conf/default.key", "auth-es/default.key")
                         .withFileFromClasspath("Dockerfile", "auth-es/NginxDockerfile")))
                 .withExposedPorts(ES_HTTP_PORT)
+                .withTmpFs(ImmutableMap.of("/usr/share/opensearch/data/nodes/0", "rw,size=200m"))
                 .withLogConsumer(frame -> LOGGER.debug("[NGINX] " + frame.getUtf8String()))
                 .withNetwork(network)
                 .withName("james-testing-nginx-" + UUID.randomUUID());
@@ -342,7 +343,9 @@ public interface DockerOpenSearch {
     default OpenSearchConfiguration.Builder configurationBuilder(Optional<Duration> requestTimeout) {
         return OpenSearchConfiguration.builder()
             .addHost(getHttpHost())
-            .requestTimeout(requestTimeout);
+            .requestTimeout(requestTimeout)
+            .nbReplica(0)
+            .nbShards(1);
     }
 
     default OpenSearchConfiguration configuration() {
diff --git a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearchExtension.java b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearchExtension.java
index ff55a0dcb3..92c9154014 100644
--- a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearchExtension.java
+++ b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/DockerOpenSearchExtension.java
@@ -19,20 +19,71 @@
 
 package org.apache.james.backends.opensearch;
 
+import java.time.Duration;
+
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
+import org.opensearch.index.query.QueryBuilders;
+
+import reactor.core.publisher.Mono;
 
 public class DockerOpenSearchExtension implements AfterEachCallback, BeforeEachCallback, ParameterResolver {
 
+    @FunctionalInterface
+    interface CleanupStrategy {
+        CleanupStrategy NONE = any -> {};
+
+        void clean(DockerOpenSearch elasticSearch);
+    }
+
+    public static class DefaultCleanupStrategy implements CleanupStrategy {
+        @Override
+        public void clean(DockerOpenSearch elasticSearch) {
+            elasticSearch.cleanUpData();
+        }
+    }
+
+    public static class DeleteAllIndexDocumentsCleanupStrategy implements CleanupStrategy {
+        private final WriteAliasName aliasName;
+
+        public DeleteAllIndexDocumentsCleanupStrategy(WriteAliasName aliasName) {
+            this.aliasName = aliasName;
+        }
+
+        @Override
+        public void clean(DockerOpenSearch elasticSearch) {
+            try {
+                Thread.sleep(50);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            elasticSearch.flushIndices();
+            new DeleteByQueryPerformer(elasticSearch.clientProvider().get(), aliasName)
+                .perform(QueryBuilders.matchAllQuery())
+                .delayElement(Duration.ofMillis(50))
+                .block();
+            elasticSearch.flushIndices();
+        }
+    }
+
     private final DockerOpenSearch elasticSearch = DockerOpenSearchSingleton.INSTANCE;
+    private final CleanupStrategy cleanupStrategy;
+
+    public DockerOpenSearchExtension() {
+        this.cleanupStrategy = new DefaultCleanupStrategy();
+    }
+
+    public DockerOpenSearchExtension(CleanupStrategy cleanupStrategy) {
+        this.cleanupStrategy = cleanupStrategy;
+    }
 
     @Override
     public void afterEach(ExtensionContext context) {
-        elasticSearch.cleanUpData();
+        cleanupStrategy.clean(elasticSearch);
     }
 
     @Override
diff --git a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/OpenSearchHealthCheckConnectionTest.java b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/OpenSearchHealthCheckConnectionTest.java
index fe71fcbbbf..fb62aca876 100644
--- a/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/OpenSearchHealthCheckConnectionTest.java
+++ b/backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/OpenSearchHealthCheckConnectionTest.java
@@ -32,7 +32,7 @@ class OpenSearchHealthCheckConnectionTest {
     private static final Duration REQUEST_TIMEOUT = Duration.ofSeconds(5);
 
     @RegisterExtension
-    public DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension();
+    public DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(DockerOpenSearchExtension.CleanupStrategy.NONE);
     private OpenSearchHealthCheck openSearchHealthCheck;
 
     @BeforeEach
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
index e7c1fa5d01..1fef96a8e5 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
@@ -30,6 +30,7 @@ import java.util.List;
 import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
 import org.apache.james.backends.opensearch.OpenSearchIndexer;
 import org.apache.james.backends.opensearch.ReactorOpenSearchClient;
+import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
@@ -57,7 +58,8 @@ import org.apache.james.util.ClassLoaderUtils;
 import org.awaitility.Awaitility;
 import org.awaitility.Durations;
 import org.awaitility.core.ConditionFactory;
-import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -86,13 +88,28 @@ class OpenSearchIntegrationTest extends AbstractMessageSearchIndexTest {
     static TikaExtension tika = new TikaExtension();
 
     @RegisterExtension
-    DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension();
+    static DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(
+        new DockerOpenSearchExtension.DeleteAllIndexDocumentsCleanupStrategy(new WriteAliasName("mailboxWriteAlias")));
 
-    TikaTextExtractor textExtractor;
-    ReactorOpenSearchClient client;
+    static TikaTextExtractor textExtractor;
+    static ReactorOpenSearchClient client;
 
-    @AfterEach
-    void tearDown() throws IOException {
+    @BeforeAll
+    static void setUpAll() throws Exception {
+        client = openSearch.getDockerOpenSearch().clientProvider().get();
+        MailboxIndexCreationUtil.prepareDefaultClient(
+            client,
+            openSearch.getDockerOpenSearch().configuration());
+        textExtractor = new TikaTextExtractor(new RecordingMetricFactory(),
+            new TikaHttpClientImpl(TikaConfiguration.builder()
+                .host(tika.getIp())
+                .port(tika.getPort())
+                .timeoutInMillis(tika.getTimeoutInMillis())
+                .build()));
+    }
+
+    @AfterAll
+    static void tearDown() throws IOException {
         client.close();
     }
 
@@ -102,18 +119,8 @@ class OpenSearchIntegrationTest extends AbstractMessageSearchIndexTest {
     }
 
     @Override
-    protected void initializeMailboxManager() throws Exception {
+    protected void initializeMailboxManager() {
         messageIdFactory = new InMemoryMessageId.Factory();
-        textExtractor = new TikaTextExtractor(new RecordingMetricFactory(),
-            new TikaHttpClientImpl(TikaConfiguration.builder()
-                .host(tika.getIp())
-                .port(tika.getPort())
-                .timeoutInMillis(tika.getTimeoutInMillis())
-                .build()));
-
-        client = MailboxIndexCreationUtil.prepareDefaultClient(
-            openSearch.getDockerOpenSearch().clientProvider().get(),
-            openSearch.getDockerOpenSearch().configuration());
 
         MailboxIdRoutingKeyFactory routingKeyFactory = new MailboxIdRoutingKeyFactory();
 
@@ -184,7 +191,13 @@ class OpenSearchIntegrationTest extends AbstractMessageSearchIndexTest {
                 .setBody(Strings.repeat("0123456789", 3300), StandardCharsets.UTF_8)),
             session).getId();
 
-        awaitForOpenSearch(QueryBuilders.matchAllQuery(), 14);
+        CALMLY_AWAIT.atMost(Durations.TEN_SECONDS)
+            .untilAsserted(() -> assertThat(client.search(
+                new SearchRequest(MailboxOpenSearchConstants.DEFAULT_MAILBOX_INDEX.getValue())
+                    .source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery())),
+                RequestOptions.DEFAULT)
+                .block()
+                .getHits().getTotalHits().value).isGreaterThanOrEqualTo(14));
 
         assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, recipient)), session)).toStream())
             .containsExactly(composedMessageId.getUid());
diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
index 32addbd835..9c24556392 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearcherTest.java
@@ -32,6 +32,7 @@ import java.util.stream.IntStream;
 import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
 import org.apache.james.backends.opensearch.OpenSearchIndexer;
 import org.apache.james.backends.opensearch.ReactorOpenSearchClient;
+import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
@@ -89,7 +90,8 @@ class OpenSearchSearcherTest {
     static TikaExtension tika = new TikaExtension();
 
     @RegisterExtension
-    DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension();
+    static DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(
+        new DockerOpenSearchExtension.DeleteAllIndexDocumentsCleanupStrategy(new WriteAliasName("mailboxWriteAlias")));
 
     TikaTextExtractor textExtractor;
     ReactorOpenSearchClient client;
diff --git a/mailbox/plugin/quota-search-opensearch/src/test/java/org/apache/james/quota/search/opensearch/events/OpenSearchQuotaMailboxListenerTest.java b/mailbox/plugin/quota-search-opensearch/src/test/java/org/apache/james/quota/search/opensearch/events/OpenSearchQuotaMailboxListenerTest.java
index 7834821820..3acf31f804 100644
--- a/mailbox/plugin/quota-search-opensearch/src/test/java/org/apache/james/quota/search/opensearch/events/OpenSearchQuotaMailboxListenerTest.java
+++ b/mailbox/plugin/quota-search-opensearch/src/test/java/org/apache/james/quota/search/opensearch/events/OpenSearchQuotaMailboxListenerTest.java
@@ -32,6 +32,7 @@ import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
 import org.apache.james.backends.opensearch.OpenSearchConfiguration;
 import org.apache.james.backends.opensearch.OpenSearchIndexer;
 import org.apache.james.backends.opensearch.ReactorOpenSearchClient;
+import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.events.Event;
 import org.apache.james.events.Group;
 import org.apache.james.mailbox.SessionProvider;
@@ -47,7 +48,8 @@ import org.apache.james.quota.search.opensearch.json.QuotaRatioToOpenSearchJson;
 import org.awaitility.Awaitility;
 import org.awaitility.Durations;
 import org.awaitility.core.ConditionFactory;
-import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -57,7 +59,6 @@ import org.opensearch.index.query.QueryBuilders;
 import org.opensearch.search.builder.SearchSourceBuilder;
 
 class OpenSearchQuotaMailboxListenerTest {
-
     private static final ConditionFactory CALMLY_AWAIT = Awaitility
         .with().pollInterval(ONE_HUNDRED_MILLISECONDS)
         .and().pollDelay(ONE_HUNDRED_MILLISECONDS)
@@ -65,20 +66,29 @@ class OpenSearchQuotaMailboxListenerTest {
     static Event.EventId EVENT_ID = Event.EventId.of("6e0dd59d-660e-4d9b-b22f-0354479f47b4");
 
     @RegisterExtension
-    DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension();
+    static DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(
+        new DockerOpenSearchExtension.DeleteAllIndexDocumentsCleanupStrategy(new WriteAliasName("quota_ratio_write_alias")));
+    static ReactorOpenSearchClient client;
 
     OpenSearchQuotaMailboxListener quotaMailboxListener;
-    ReactorOpenSearchClient client;
     private DefaultUserQuotaRootResolver quotaRootResolver;
 
-    @BeforeEach
-    void setUp() throws IOException {
+    @BeforeAll
+    static void beforeAll() throws IOException {
         client = openSearch.getDockerOpenSearch().clientProvider().get();
 
         QuotaSearchIndexCreationUtil.prepareDefaultClient(client, OpenSearchConfiguration.builder()
             .addHost(openSearch.getDockerOpenSearch().getHttpHost())
             .build());
+    }
 
+    @AfterAll
+    static void afterAll() throws IOException {
+        client.close();
+    }
+
+    @BeforeEach
+    void setUp() {
         quotaRootResolver = new DefaultUserQuotaRootResolver(mock(SessionProvider.class), mock(MailboxSessionMapperFactory.class));
         quotaMailboxListener = new OpenSearchQuotaMailboxListener(
             new OpenSearchIndexer(client,
@@ -87,10 +97,6 @@ class OpenSearchQuotaMailboxListenerTest {
             new UserRoutingKeyFactory(), quotaRootResolver);
     }
 
-    @AfterEach
-    void tearDown() throws IOException {
-        client.close();
-    }
 
     @Test
     void deserializeOpenSearchQuotaMailboxListenerGroup() throws Exception {
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 8c066d5fbf..d78b2899cd 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
+import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -44,6 +45,7 @@ import javax.mail.Flags;
 import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
 import org.apache.james.backends.opensearch.OpenSearchIndexer;
 import org.apache.james.backends.opensearch.ReactorOpenSearchClient;
+import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.core.Username;
 import org.apache.james.json.DTOConverter;
 import org.apache.james.mailbox.MailboxSession;
@@ -96,7 +98,9 @@ import org.apache.mailbox.tools.indexer.SingleMessageReindexingTask;
 import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskAdditionalInformationDTO;
 import org.eclipse.jetty.http.HttpStatus;
 import org.hamcrest.Matchers;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
@@ -113,25 +117,34 @@ import reactor.core.publisher.Mono;
 class MailboxesRoutesTest {
     static final Username USERNAME = Username.of("benwa@apache.org");
     static final MailboxPath INBOX = MailboxPath.inbox(USERNAME);
-    static final int BATCH_SIZE = 1;
     static final int SEARCH_SIZE = 1;
 
     @RegisterExtension
-    DockerOpenSearchExtension elasticSearch = new DockerOpenSearchExtension();
+    static DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(
+        new DockerOpenSearchExtension.DeleteAllIndexDocumentsCleanupStrategy(new WriteAliasName("mailboxWriteAlias")));
 
+    static ReactorOpenSearchClient client;
     WebAdminServer webAdminServer;
     ListeningMessageSearchIndex searchIndex;
     InMemoryMailboxManager mailboxManager;
     MessageIdManager messageIdManager;
     MemoryTaskManager taskManager;
-    ReactorOpenSearchClient client;
 
-    @BeforeEach
-    void beforeEach() throws Exception {
-        client = MailboxIndexCreationUtil.prepareDefaultClient(
-            elasticSearch.getDockerOpenSearch().clientProvider().get(),
-            elasticSearch.getDockerOpenSearch().configuration());
+    @BeforeAll
+    static void setUpAll() {
+        client = openSearch.getDockerOpenSearch().clientProvider().get();
+        MailboxIndexCreationUtil.prepareDefaultClient(
+            client,
+            openSearch.getDockerOpenSearch().configuration());
+    }
 
+    @AfterAll
+    static void tearDownAll() throws IOException {
+        client.close();
+    }
+
+    @BeforeEach
+    void beforeEach() {
         InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         MailboxIdRoutingKeyFactory routingKeyFactory = new MailboxIdRoutingKeyFactory();
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 90f257f30f..9b157ad7a8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -58,6 +58,7 @@ import javax.mail.Flags;
 import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
 import org.apache.james.backends.opensearch.OpenSearchIndexer;
 import org.apache.james.backends.opensearch.ReactorOpenSearchClient;
+import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.core.Username;
 import org.apache.james.json.DTOConverter;
 import org.apache.james.mailbox.MailboxManager;
@@ -1448,7 +1449,8 @@ class UserMailboxesRoutesTest {
         static final int SEARCH_SIZE = 1;
 
         @RegisterExtension
-        DockerOpenSearchExtension elasticSearch = new DockerOpenSearchExtension();
+        DockerOpenSearchExtension openSearch = new DockerOpenSearchExtension(
+            new DockerOpenSearchExtension.DeleteAllIndexDocumentsCleanupStrategy(new WriteAliasName("mailboxWriteAlias")));
 
         private InMemoryMailboxManager mailboxManager;
         private ListeningMessageSearchIndex searchIndex;
@@ -1457,8 +1459,8 @@ class UserMailboxesRoutesTest {
         @BeforeEach
         void setUp() throws Exception {
             ReactorOpenSearchClient client = MailboxIndexCreationUtil.prepareDefaultClient(
-                elasticSearch.getDockerOpenSearch().clientProvider().get(),
-                elasticSearch.getDockerOpenSearch().configuration());
+                openSearch.getDockerOpenSearch().clientProvider().get(),
+                openSearch.getDockerOpenSearch().configuration());
 
             InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
             MailboxIdRoutingKeyFactory routingKeyFactory = new MailboxIdRoutingKeyFactory();


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