Fix bugs in mock Lucene objects functionality.

This commit is contained in:
John Blum
2021-09-10 16:51:28 -07:00
parent 598a520dbe
commit 70cf67cf45
2 changed files with 56 additions and 12 deletions

View File

@@ -21,6 +21,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyMap;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
@@ -2362,7 +2363,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
return mockLuceneIndexFactory;
});
when(mockLuceneIndexFactory.setFields(any(String[].class))).thenAnswer(invocation -> {
when(mockLuceneIndexFactory.setFields(ArgumentMatchers.<String[]>any())).thenAnswer(invocation -> {
Object[] fieldsArgument = invocation.getArguments();
@@ -2378,27 +2379,21 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport {
return mockLuceneIndexFactory;
});
when(mockLuceneIndexFactory.setFields(any(Map.class))).thenAnswer(invocation -> {
when(mockLuceneIndexFactory.setFields(anyMap())).thenAnswer(invocation -> {
Map<String, Analyzer> fieldAnalyzersArgument = invocation.getArgument(0);
fieldAnalyzers.clear();
fieldAnalyzers.putAll(CollectionUtils.nullSafeMap(fieldAnalyzers));
fieldAnalyzers.putAll(CollectionUtils.nullSafeMap(fieldAnalyzersArgument));
return mockLuceneIndexFactory;
});
when(mockLuceneIndexFactory.setLuceneSerializer(any(LuceneSerializer.class))).thenAnswer(invocation -> {
Optional.ofNullable(invocation.<LuceneSerializer>getArgument(0))
.map(it -> {
luceneSerializer.set(it);
return it;
})
.orElseGet(() -> {
luceneSerializer.set(null);
return null;
});
LuceneSerializer<?> luceneSerializerArgument = invocation.getArgument(0);
luceneSerializer.set(luceneSerializerArgument);
return mockLuceneIndexFactory;
});

View File

@@ -22,6 +22,9 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import java.util.HashMap;
import java.util.Map;
import org.junit.After;
import org.junit.Test;
@@ -33,8 +36,14 @@ import org.apache.geode.cache.RegionService;
import org.apache.geode.cache.asyncqueue.AsyncEventListener;
import org.apache.geode.cache.asyncqueue.AsyncEventQueue;
import org.apache.geode.cache.asyncqueue.AsyncEventQueueFactory;
import org.apache.geode.cache.lucene.LuceneIndex;
import org.apache.geode.cache.lucene.LuceneIndexFactory;
import org.apache.geode.cache.lucene.LuceneSerializer;
import org.apache.geode.cache.lucene.LuceneService;
import org.apache.geode.cache.server.ClientSubscriptionConfig;
import org.apache.lucene.analysis.Analyzer;
/**
* Unit Tests for {@link GemFireMockObjectsSupport}.
*
@@ -129,6 +138,46 @@ public class GemFireMockObjectsSupportUnitTests {
assertThat(mockClientSubscriptionConfig.getEvictionPolicy()).isEqualTo("entry");
}
@Test
public void mockLuceneFunctionality() {
Cache mockCache = mock(Cache.class);
LuceneService mockLuceneService = GemFireMockObjectsSupport.mockLuceneService(mockCache);
assertThat(mockLuceneService).isNotNull();
assertThat(mockLuceneService.getAllIndexes()).isEmpty();
assertThat(mockLuceneService.getCache()).isEqualTo(mockCache);
LuceneSerializer<?> mockLuceneSerializer = mock(LuceneSerializer.class);
LuceneIndexFactory mockLuceneIndexFactory = mockLuceneService.createIndexFactory();
assertThat(mockLuceneIndexFactory).isNotNull();
Analyzer mockAnalyzer = mock(Analyzer.class);
Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
fieldAnalyzers.put("fieldZero", mockAnalyzer);
mockLuceneIndexFactory.setFields("FieldOne", "FieldTwo");
mockLuceneIndexFactory.setLuceneSerializer(mockLuceneSerializer);
mockLuceneIndexFactory.addField("FieldThree");
mockLuceneIndexFactory.setFields(fieldAnalyzers);
mockLuceneIndexFactory.create("MockLuceneIndex", "/Test");
LuceneIndex mockLuceneIndex = mockLuceneService.getIndex("MockLuceneIndex", "/Test");
assertThat(mockLuceneIndex).isNotNull();
assertThat(mockLuceneIndex.getRegionPath()).isEqualTo("/Test");
assertThat(mockLuceneIndex.getName()).isEqualTo("MockLuceneIndex");
assertThat(mockLuceneIndex.getLuceneSerializer()).isEqualTo(mockLuceneSerializer);
assertThat(mockLuceneIndex.getFieldNames()).containsExactlyInAnyOrder("FieldOne", "FieldTwo", "FieldThree");
assertThat(mockLuceneIndex.getFieldAnalyzers()).isEqualTo(fieldAnalyzers);
assertThat(mockLuceneService.getAllIndexes()).containsExactly(mockLuceneIndex);
}
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void mockSubRegionIsCorrect() {