You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/06/21 09:16:30 UTC

[james-project] 07/12: JAMES-3202 test name fixes in ReIndexerImplTest

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 9173eea87f6f3cd10d89cdeba0871094e136247a
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Jun 12 15:04:32 2020 +0700

    JAMES-3202 test name fixes in ReIndexerImplTest
---
 .../ElasticSearchListeningMessageSearchIndex.java  |   2 +-
 ...asticSearchListeningMessageSearchIndexTest.java | 117 +++-------------
 .../LuceneMailboxMessageSearchIndexTest.java       |  95 +++----------
 .../store/search/LazyMessageSearchIndex.java       |   3 +-
 .../ListeningMessageSearchIndexContract.java       | 149 +++++++++++++++++++++
 .../mailbox/tools/indexer/ReIndexerImplTest.java   |   4 +-
 6 files changed, 192 insertions(+), 178 deletions(-)

diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index e23882c..ddb016e 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -233,7 +233,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
             .filter(GetResponse::isExists)
             .map(GetResponse::getSourceAsMap)
             .map(this::extractFlags)
-            .switchIfEmpty(Mono.error(new IndexNotFoundException(
+            .switchIfEmpty(Mono.error(() -> new IndexNotFoundException(
                 String.format("Index for message %s in mailbox %s not found", uid.toString(), mailbox.getMailboxId().serialize()))));
     }
 
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 4f80bb0..b934ec3 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -37,7 +37,6 @@ import org.apache.james.backends.es.ReactorElasticSearchClient;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.Authorizator;
 import org.apache.james.mailbox.DefaultMailboxes;
-import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.ModSeq;
@@ -76,9 +75,12 @@ import org.apache.james.mailbox.store.SessionProviderImpl;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndexContract;
 import org.awaitility.Duration;
 import org.elasticsearch.index.IndexNotFoundException;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
@@ -446,102 +448,27 @@ class ElasticSearchListeningMessageSearchIndexTest {
             .doesNotThrowAnyException();
     }
 
-    @Test
-    void retrieveIndexedFlagsShouldRetrieveSystemFlags() {
-        Flags flags = FlagsBuilder.builder()
-            .add(Flags.Flag.RECENT)
-            .add(Flags.Flag.DRAFT)
-            .build();
-
-        SimpleMailboxMessage message = MESSAGE_BUILDER.messageId(MESSAGE_ID_4)
-            .uid(MESSAGE_UID_4)
-            .flags(flags)
-            .build();
-
-        testee.add(session, mailbox, message).block();
-
-        assertThat(testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isEqualTo(flags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnEmptyFlagsWhenNoFlags() {
-        Flags flags = new Flags();
-
-        SimpleMailboxMessage message = MESSAGE_BUILDER.messageId(MESSAGE_ID_4)
-            .uid(MESSAGE_UID_4)
-            .flags(flags)
-            .build();
-
-        testee.add(session, mailbox, message).block();
-
-        assertThat(testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isEqualTo(flags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnAllSystemFlagsWhenAllFlagsSet() {
-        Flags flags = FlagsBuilder.builder()
-            .add(Flags.Flag.ANSWERED)
-            .add(Flags.Flag.DELETED)
-            .add(Flags.Flag.RECENT)
-            .add(Flags.Flag.DRAFT)
-            .add(Flags.Flag.FLAGGED)
-            .add(Flags.Flag.SEEN)
-            .build();
-
-        SimpleMailboxMessage message = MESSAGE_BUILDER.messageId(MESSAGE_ID_4)
-            .uid(MESSAGE_UID_4)
-            .flags(flags)
-            .build();
-
-        testee.add(session, mailbox, message).block();
-
-        assertThat(testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isEqualTo(flags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnUserFlags() {
-        Flags flags = FlagsBuilder.builder()
-            .add("flag1")
-            .add("flag2")
-            .build();
-
-        SimpleMailboxMessage message = MESSAGE_BUILDER.messageId(MESSAGE_ID_4)
-            .uid(MESSAGE_UID_4)
-            .flags(flags)
-            .build();
-
-        testee.add(session, mailbox, message).block();
-
-        assertThat(testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isEqualTo(flags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnUserAndSystemFlags() {
-        Flags flags = FlagsBuilder.builder()
-            .add(Flags.Flag.ANSWERED)
-            .add(Flags.Flag.DELETED)
-            .add("flag1")
-            .add("flag2")
-            .build();
-
-        SimpleMailboxMessage message = MESSAGE_BUILDER.messageId(MESSAGE_ID_4)
-            .uid(MESSAGE_UID_4)
-            .flags(flags)
-            .build();
+    @Nested
+    class RetrieveIndexedFlags implements ListeningMessageSearchIndexContract {
+        @Override
+        public ListeningMessageSearchIndex testee() {
+            return testee;
+        }
 
-        testee.add(session, mailbox, message).block();
+        @Override
+        public MailboxSession session() {
+            return session;
+        }
 
-        assertThat(testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isEqualTo(flags);
-    }
+        @Override
+        public Mailbox mailbox() {
+            return mailbox;
+        }
 
-    @Test
-    void retrieveIndexedFlagsShouldPropagateExceptionWhenNotFound() {
-        assertThatThrownBy(() -> testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
-            .isInstanceOf(IndexNotFoundException.class);
+        @Test
+        void retrieveIndexedFlagsShouldPropagateExceptionWhenNotFound() {
+            assertThatThrownBy(() -> testee.retrieveIndexedFlags(mailbox, MESSAGE_UID_4).block())
+                .isInstanceOf(IndexNotFoundException.class);
+        }
     }
 }
\ No newline at end of file
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index 15ac2a3..a0ec57c 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -35,7 +35,6 @@ import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
 import org.apache.james.core.Username;
-import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageUid;
@@ -53,8 +52,11 @@ import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.mailbox.model.UidValidity;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.MessageBuilder;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndexContract;
 import org.apache.lucene.store.RAMDirectory;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -671,84 +673,21 @@ class LuceneMailboxMessageSearchIndexTest {
             .containsExactly(uid2);
     }
 
-    @Test
-    void retrieveIndexedFlagsShouldRetrieveSystemFlags() {
-        Flags expectedFlags = new Flags(Flag.ANSWERED);
-
-        assertThat(index.retrieveIndexedFlags(mailbox, uid1).block())
-            .isEqualTo(expectedFlags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnEmptyFlagsWhenNoFlags() {
-        Flags expectedFlags = new Flags();
-
-        assertThat(index.retrieveIndexedFlags(mailbox, uid5).block())
-            .isEqualTo(expectedFlags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnAllSystemFlagsWhenAllFlagsSet() {
-        Flags newFlags = FlagsBuilder.builder()
-            .add(Flags.Flag.ANSWERED)
-            .add(Flags.Flag.DELETED)
-            .add(Flags.Flag.RECENT)
-            .add(Flags.Flag.DRAFT)
-            .add(Flags.Flag.FLAGGED)
-            .add(Flags.Flag.SEEN)
-            .build();
-
-        UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(uid2)
-            .modSeq(MOD_SEQ)
-            .oldFlags(new Flags(Flag.ANSWERED))
-            .newFlags(newFlags)
-            .build();
-
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
-
-        assertThat(index.retrieveIndexedFlags(mailbox, uid2).block())
-            .isEqualTo(newFlags);
-    }
-
-    @Test
-    void retrieveIndexedFlagsShouldReturnUserFlags() {
-        Flags newFlags = FlagsBuilder.builder()
-            .add("flag1")
-            .add("flag2")
-            .build();
-
-        UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(uid2)
-            .modSeq(MOD_SEQ)
-            .oldFlags(new Flags(Flag.ANSWERED))
-            .newFlags(newFlags)
-            .build();
-
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
-
-        assertThat(index.retrieveIndexedFlags(mailbox, uid2).block())
-            .isEqualTo(newFlags);
-    }
+    @Nested
+    class RetrieveIndexedFlags implements ListeningMessageSearchIndexContract {
+        @Override
+        public ListeningMessageSearchIndex testee() {
+            return index;
+        }
 
-    @Test
-    void retrieveIndexedFlagsShouldReturnUserAndSystemFlags() {
-        Flags newFlags = FlagsBuilder.builder()
-            .add("flag1")
-            .add("flag2")
-            .add(Flag.DRAFT)
-            .build();
-
-        UpdatedFlags updatedFlags = UpdatedFlags.builder()
-            .uid(uid2)
-            .modSeq(MOD_SEQ)
-            .oldFlags(new Flags(Flag.ANSWERED))
-            .newFlags(newFlags)
-            .build();
-
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        @Override
+        public MailboxSession session() {
+            return session;
+        }
 
-        assertThat(index.retrieveIndexedFlags(mailbox, uid2).block())
-            .isEqualTo(newFlags);
+        @Override
+        public Mailbox mailbox() {
+            return mailbox;
+        }
     }
 }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
index 459cc22..e889b2b 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
@@ -72,8 +72,7 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex {
     private final ListeningMessageSearchIndex index;
     private final ConcurrentHashMap<MailboxId, Object> indexed = new ConcurrentHashMap<>();
     private final MailboxSessionMapperFactory factory;
-    
-    
+
     public LazyMessageSearchIndex(ListeningMessageSearchIndex index, MailboxSessionMapperFactory factory, SessionProvider sessionProvider) {
         super(factory, sessionProvider);
         this.index = index;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java
new file mode 100644
index 0000000..98b0b19
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java
@@ -0,0 +1,149 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.search;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import org.apache.james.mailbox.FlagsBuilder;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.ModSeq;
+import org.apache.james.mailbox.model.Mailbox;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.junit.jupiter.api.Test;
+
+public interface ListeningMessageSearchIndexContract {
+    ModSeq MOD_SEQ = ModSeq.of(42L);
+    int SIZE = 25;
+    int BODY_START_OCTET = 100;
+    MessageId MESSAGE_ID = TestMessageId.of(21L);
+    MessageUid MESSAGE_UID = MessageUid.of(28);
+    
+    SimpleMailboxMessage.Builder MESSAGE_BUILDER = SimpleMailboxMessage.builder()
+        .messageId(MESSAGE_ID)
+        .uid(MESSAGE_UID)
+        .bodyStartOctet(BODY_START_OCTET)
+        .internalDate(new Date(1433628000000L))
+        .size(SIZE)
+        .content(new SharedByteArrayInputStream("message".getBytes(StandardCharsets.UTF_8)))
+        .propertyBuilder(new PropertyBuilder())
+        .modseq(MOD_SEQ);
+    
+    ListeningMessageSearchIndex testee();
+    MailboxSession session();
+    Mailbox mailbox();
+    
+    @Test
+    default void retrieveIndexedFlagsShouldRetrieveSystemFlags() {
+        Flags flags = FlagsBuilder.builder()
+            .add(Flags.Flag.RECENT)
+            .add(Flags.Flag.DRAFT)
+            .build();
+
+        SimpleMailboxMessage message = MESSAGE_BUILDER.mailboxId(mailbox().getMailboxId())
+            .flags(flags)
+            .build();
+
+        testee().add(session(), mailbox(), message).block();
+
+        assertThat(testee().retrieveIndexedFlags(mailbox(), MESSAGE_UID).block())
+            .isEqualTo(flags);
+    }
+
+    @Test
+    default void retrieveIndexedFlagsShouldReturnEmptyFlagsWhenNoFlags() {
+        Flags flags = new Flags();
+
+        SimpleMailboxMessage message = MESSAGE_BUILDER.mailboxId(mailbox().getMailboxId())
+            .flags(flags)
+            .build();
+
+        testee().add(session(), mailbox(), message).block();
+
+        assertThat(testee().retrieveIndexedFlags(mailbox(), MESSAGE_UID).block())
+            .isEqualTo(flags);
+    }
+
+    @Test
+    default void retrieveIndexedFlagsShouldReturnAllSystemFlagsWhenAllFlagsSet() {
+        Flags flags = FlagsBuilder.builder()
+            .add(Flags.Flag.ANSWERED)
+            .add(Flags.Flag.DELETED)
+            .add(Flags.Flag.RECENT)
+            .add(Flags.Flag.DRAFT)
+            .add(Flags.Flag.FLAGGED)
+            .add(Flags.Flag.SEEN)
+            .build();
+
+        SimpleMailboxMessage message = MESSAGE_BUILDER.mailboxId(mailbox().getMailboxId())
+            .flags(flags)
+            .build();
+
+        testee().add(session(), mailbox(), message).block();
+
+        assertThat(testee().retrieveIndexedFlags(mailbox(), MESSAGE_UID).block())
+            .isEqualTo(flags);
+    }
+
+    @Test
+    default void retrieveIndexedFlagsShouldReturnUserFlags() {
+        Flags flags = FlagsBuilder.builder()
+            .add("flag1")
+            .add("flag2")
+            .build();
+
+        SimpleMailboxMessage message = MESSAGE_BUILDER.mailboxId(mailbox().getMailboxId())
+            .flags(flags)
+            .build();
+
+        testee().add(session(), mailbox(), message).block();
+
+        assertThat(testee().retrieveIndexedFlags(mailbox(), MESSAGE_UID).block())
+            .isEqualTo(flags);
+    }
+
+    @Test
+    default void retrieveIndexedFlagsShouldReturnUserAndSystemFlags() {
+        Flags flags = FlagsBuilder.builder()
+            .add(Flags.Flag.ANSWERED)
+            .add(Flags.Flag.DELETED)
+            .add("flag1")
+            .add("flag2")
+            .build();
+
+        SimpleMailboxMessage message = MESSAGE_BUILDER.mailboxId(mailbox().getMailboxId())
+            .flags(flags)
+            .build();
+
+        testee().add(session(), mailbox(), message).block();
+
+        assertThat(testee().retrieveIndexedFlags(mailbox(), MESSAGE_UID).block())
+            .isEqualTo(flags);
+    }
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 237dbb5..32135ad 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -71,7 +71,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void reIndexAllShouldCallMessageSearchIndex() throws Exception {
+    void reIndexMailboxPathShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -98,7 +98,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void reIndexMailboxPathShouldCallMessageSearchIndex() throws Exception {
+    void reIndexAllShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)


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