You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by as...@apache.org on 2015/11/11 22:23:34 UTC
[02/50] [abbrv] incubator-geode git commit: GEODE-11: Add a basic
lucene read path DUnit
GEODE-11: Add a basic lucene read path DUnit
* The test depends on mock for now. As other components get ready, the mocks
could be replaced by real implementations.
* Also real queries need to be added and the results tested once the index
searchers are available
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f9ef456d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f9ef456d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f9ef456d
Branch: refs/heads/develop
Commit: f9ef456df43645d45fb777111c664215118f744b
Parents: 18e8f41
Author: Ashvin Agrawal <as...@apache.org>
Authored: Tue Sep 22 11:37:50 2015 -0700
Committer: Ashvin Agrawal <as...@apache.org>
Committed: Tue Sep 22 14:00:10 2015 -0700
----------------------------------------------------------------------
.../lucene/internal/StringQueryProvider.java | 6 +-
.../internal/StringQueryProviderJUnitTest.java | 2 +-
.../distributed/LuceneFunctionJUnitTest.java | 2 +-
.../LuceneFunctionReadPathDUnitTest.java | 130 +++++++++++++++++++
4 files changed, 133 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f9ef456d/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProvider.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProvider.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProvider.java
index 7055615..78a2f99 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProvider.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProvider.java
@@ -37,11 +37,7 @@ public class StringQueryProvider implements LuceneQueryProvider, DataSerializabl
private LuceneIndex index;
public StringQueryProvider() {
- this(null);
- }
-
- public StringQueryProvider(String query) {
- this(null, query);
+ this(null, null);
}
public StringQueryProvider(LuceneIndex index, String query) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f9ef456d/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProviderJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProviderJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProviderJUnitTest.java
index 1ddc91c..078ae42 100644
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProviderJUnitTest.java
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/StringQueryProviderJUnitTest.java
@@ -31,7 +31,7 @@ public class StringQueryProviderJUnitTest {
@Test
public void testQueryConstruction() throws QueryException {
- StringQueryProvider provider = new StringQueryProvider("foo:bar");
+ StringQueryProvider provider = new StringQueryProvider(null, "foo:bar");
Query query = provider.getQuery();
Assert.assertNotNull(query);
assertEquals("foo:bar", query.toString());
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f9ef456d/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
index 1fcd663..ba5f96a 100644
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionJUnitTest.java
@@ -367,7 +367,7 @@ public class LuceneFunctionJUnitTest {
repos.add(mockRepository1);
repos.add(mockRepository2);
- queryProvider = new StringQueryProvider("gemfire:lucene");
+ queryProvider = new StringQueryProvider(null, "gemfire:lucene");
query = queryProvider.getQuery();
searchArgs = new LuceneFunctionContext<IndexResultCollector>(queryProvider);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f9ef456d/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java
new file mode 100644
index 0000000..55c20cc
--- /dev/null
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneFunctionReadPathDUnitTest.java
@@ -0,0 +1,130 @@
+package com.gemstone.gemfire.cache.lucene.internal.distributed;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.lucene.search.Query;
+import org.junit.Assert;
+import org.junit.experimental.categories.Category;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.RegionFactory;
+import com.gemstone.gemfire.cache.RegionShortcut;
+import com.gemstone.gemfire.cache.execute.FunctionService;
+import com.gemstone.gemfire.cache.lucene.LuceneIndex;
+import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider;
+import com.gemstone.gemfire.cache.lucene.LuceneService;
+import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider;
+import com.gemstone.gemfire.cache.lucene.internal.StringQueryProvider;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
+import com.gemstone.gemfire.cache.lucene.internal.repository.IndexResultCollector;
+import com.gemstone.gemfire.cache.lucene.internal.repository.RepositoryManager;
+import com.gemstone.gemfire.cache30.CacheTestCase;
+import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+
+import dunit.Host;
+import dunit.SerializableRunnable;
+import dunit.VM;
+
+@Category(DistributedTest.class)
+public class LuceneFunctionReadPathDUnitTest extends CacheTestCase {
+ private static final String INDEX_NAME = "index";
+ private static final String REGION_NAME = "indexedRegion";
+
+ private static final long serialVersionUID = 1L;
+
+ private VM server1;
+ private VM server2;
+
+ public LuceneFunctionReadPathDUnitTest(String name) {
+ super(name);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ Host host = Host.getHost(0);
+ server1 = host.getVM(0);
+ server2 = host.getVM(1);
+ }
+
+ public void testEnd2EndFunctionExecution() {
+ SerializableRunnable createPartitionRegion = new SerializableRunnable("createRegion") {
+ private static final long serialVersionUID = 1L;
+
+ public void run() {
+ final Cache cache = getCache();
+ assertNotNull(cache);
+ RegionFactory<Object, Object> regionFactory = cache.createRegionFactory(RegionShortcut.PARTITION);
+ regionFactory.create(REGION_NAME);
+
+ LuceneService service = LuceneServiceProvider.get(cache);
+ service.createIndex(INDEX_NAME, REGION_NAME);
+
+ IndexRepository mockRepo = mock(IndexRepository.class);
+ Collection<IndexRepository> repos = new ArrayList<IndexRepository>();
+ repos.add(mockRepo);
+
+ RepositoryManager mockManager = mock(RepositoryManager.class);
+ // TODO avoid using repository manager mock. The manager choice depends on the region type
+ LuceneFunction.setRepositoryManager(mockManager);
+ try {
+ Mockito.doReturn(repos).when(mockManager).getRepositories(any(Region.class));
+ } catch (BucketNotFoundException e) {
+ fail("", e);
+ }
+
+ try {
+ Mockito.doAnswer(new Answer<Object>() {
+ public Object answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ IndexResultCollector collector = (IndexResultCollector) args[2];
+ collector.collect(cache.getDistributedSystem().getDistributedMember().getProcessId(), .1f);
+ return null;
+ }
+ }).when(mockRepo).query(any(Query.class), Mockito.anyInt(), any(IndexResultCollector.class));
+ } catch (IOException e) {
+ fail("", e);
+ }
+ }
+ };
+
+ server1.invoke(createPartitionRegion);
+ server2.invoke(createPartitionRegion);
+
+ SerializableRunnable executeSearch = new SerializableRunnable("executeSearch") {
+ private static final long serialVersionUID = 1L;
+
+ public void run() {
+ Cache cache = getCache();
+ assertNotNull(cache);
+ Region<Object, Object> region = cache.getRegion(REGION_NAME);
+ Assert.assertNotNull(region);
+
+ LuceneService service = LuceneServiceProvider.get(cache);
+ LuceneIndex index = service.getIndex(INDEX_NAME, REGION_NAME);
+ LuceneQueryProvider provider = new StringQueryProvider(index, "text:search");
+
+ LuceneFunctionContext<TopEntriesCollector> context = new LuceneFunctionContext<>(provider,
+ new TopEntriesCollectorManager());
+ TopEntriesFunctionCollector collector = new TopEntriesFunctionCollector();
+
+ FunctionService.onRegion(region).withArgs(context).withCollector(collector).execute(LuceneFunction.ID);
+ TopEntries entries = collector.getResult();
+ assertNotNull(entries);
+ assertEquals(2, entries.getHits().size());
+ }
+ };
+
+ server1.invoke(executeSearch);
+ }
+}