You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2016/05/20 00:48:13 UTC
[1/3] incubator-geode git commit: GEODE-1352: Clean up cache in
LuceneQueryImplIntegrationTest
Repository: incubator-geode
Updated Branches:
refs/heads/develop 9d23a6950 -> f272cf005
GEODE-1352: Clean up cache in LuceneQueryImplIntegrationTest
Making this test case extend the LuceneIntegrationTest to clean up the
cache after the test runs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f272cf00
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f272cf00
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f272cf00
Branch: refs/heads/develop
Commit: f272cf0051e599d18f0ba867b5c3fa5d67703502
Parents: 4a97daf
Author: Dan Smith <up...@apache.org>
Authored: Wed May 18 17:21:25 2016 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Thu May 19 17:02:05 2016 -0700
----------------------------------------------------------------------
.../internal/LuceneQueryImplIntegrationTest.java | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f272cf00/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplIntegrationTest.java
index 90ab022..262efaa 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneQueryImplIntegrationTest.java
@@ -36,6 +36,7 @@ import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.cache.execute.FunctionAdapter;
import com.gemstone.gemfire.cache.execute.FunctionContext;
import com.gemstone.gemfire.cache.execute.FunctionService;
+import com.gemstone.gemfire.cache.lucene.LuceneIntegrationTest;
import com.gemstone.gemfire.cache.lucene.LuceneQueryResults;
import com.gemstone.gemfire.cache.lucene.LuceneResultStruct;
import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunction;
@@ -46,25 +47,22 @@ import com.gemstone.gemfire.cache.lucene.internal.repository.IndexResultCollecto
import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
@Category(IntegrationTest.class)
-public class LuceneQueryImplIntegrationTest {
+public class LuceneQueryImplIntegrationTest extends LuceneIntegrationTest {
private static int LIMIT = 123;
- private Cache cache;
private Region<Object, Object> region;
@Before
- public void createCache() {
- cache = new CacheFactory().set("mcast-port", "0").create();
- region = cache.createRegionFactory(RegionShortcut.PARTITION_PERSISTENT).create("region");
+ public void createRegion() {
+ region = cache.createRegionFactory(RegionShortcut.PARTITION).create("region");
}
@After
- public void removeCache() {
+ public void removeFunction() {
FunctionService.unregisterFunction(LuceneFunction.ID);
- cache.close();
}
@Test
- public void test() {
+ public void shouldInvokeLuceneFunctionWithCorrectArguments() {
// Register a fake function to observe the function invocation
FunctionService.unregisterFunction(LuceneFunction.ID);
TestLuceneFunction function = new TestLuceneFunction();
[2/3] incubator-geode git commit: GEODE-11: Fixing some races in
Lucene Query DUnits
Posted by up...@apache.org.
GEODE-11: Fixing some races in Lucene Query DUnits
The tests in LuceneQueryBase had a couple of race conditions. The first
test didn't actually wait for entries to be flushed, so it could run the
query before the flush happens.
The wait for flush test had a test hook with a 1 second pause, but that
may not be long enough depending on what happens on the system. I
changed the test to pause the sender instead, for a deterministic test.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/4a97daf6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/4a97daf6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/4a97daf6
Branch: refs/heads/develop
Commit: 4a97daf63627f3e1d464996167f3dbbdffe29ac2
Parents: 8d1fa0c
Author: Dan Smith <up...@apache.org>
Authored: Wed May 18 16:40:28 2016 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Thu May 19 17:02:05 2016 -0700
----------------------------------------------------------------------
.../lucene/internal/LuceneEventListener.java | 9 ----
...IndexCreationPersistenceIntegrationTest.java | 7 +--
.../gemfire/cache/lucene/LuceneQueriesBase.java | 57 +++++---------------
.../cache/lucene/LuceneQueriesPRBase.java | 2 +
.../lucene/LuceneQueriesPeerPRDUnitTest.java | 1 +
.../LuceneQueriesPeerPROverflowDUnitTest.java | 2 +
.../cache/lucene/test/LuceneTestUtilities.java | 11 ++++
7 files changed, 31 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneEventListener.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneEventListener.java b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneEventListener.java
index 2dae4ee..ca8077d 100644
--- a/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneEventListener.java
+++ b/geode-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneEventListener.java
@@ -72,10 +72,6 @@ public class LuceneEventListener implements AsyncEventListener {
IndexRepository repository = repositoryManager.getRepository(region, key, callbackArgument);
Operation op = event.getOperation();
-
- if (testHook != null) {
- testHook.doTestHook("FOUND_AND_BEFORE_PROCESSING_A_EVENT");
- }
if (op.isCreate()) {
repository.create(key, event.getDeserializedValue());
@@ -102,9 +98,4 @@ public class LuceneEventListener implements AsyncEventListener {
DefaultQuery.setPdxReadSerialized(false);
}
}
-
- public interface TestHook {
- public void doTestHook(String spot);
- }
- public static TestHook testHook;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationPersistenceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationPersistenceIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationPersistenceIntegrationTest.java
index 23983cb..d6bf116 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationPersistenceIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneIndexCreationPersistenceIntegrationTest.java
@@ -22,23 +22,19 @@ import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.*;
import static org.junit.Assert.*;
import java.io.File;
-import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
-import com.gemstone.gemfire.cache.asyncqueue.internal.AsyncEventQueueImpl;
import com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities;
import com.gemstone.gemfire.cache.lucene.test.TestObject;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.cache.LocalRegion;
import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
import com.gemstone.gemfire.test.junit.rules.DiskDirRule;
-import com.jayway.awaitility.Awaitility;
import org.apache.lucene.queryparser.classic.ParseException;
-import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -101,8 +97,7 @@ public class LuceneIndexCreationPersistenceIntegrationTest extends LuceneIntegra
Region dataRegion = cache.createRegionFactory(RegionShortcut.PARTITION_PERSISTENT)
.create(REGION_NAME);
//Pause the sender so that the entry stays in the queue
- final AsyncEventQueueImpl queue = (AsyncEventQueueImpl) getIndexQueue(cache);
- queue.getSender().pause();
+ pauseSender(cache);
dataRegion.put("A", new TestObject());
cache.close();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesBase.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesBase.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesBase.java
index c7567f3..821be17 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesBase.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesBase.java
@@ -18,6 +18,7 @@
*/
package com.gemstone.gemfire.cache.lucene;
+import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.*;
import static org.junit.Assert.*;
import java.io.Serializable;
@@ -48,8 +49,6 @@ import org.junit.Test;
*/
public abstract class LuceneQueriesBase extends JUnit4CacheTestCase {
- protected static final String INDEX_NAME = "index";
- protected static final String REGION_NAME = "index";
private static final long serialVersionUID = 1L;
protected VM dataStore1;
protected VM dataStore2;
@@ -78,6 +77,7 @@ public abstract class LuceneQueriesBase extends JUnit4CacheTestCase {
accessor.invoke(() -> initAccessor(createIndex));
putDataInRegion(accessor);
+ assertTrue(waitForFlushBeforeExecuteTextSearch(accessor, 60000));
executeTextSearch(accessor);
}
@@ -91,57 +91,28 @@ public abstract class LuceneQueriesBase extends JUnit4CacheTestCase {
dataStore2.invoke(() -> initDataStore(createIndex));
accessor.invoke(() -> initAccessor(createIndex));
- try {
- dataStore1.invoke(() -> setTestHook());
- putDataInRegion(accessor);
- waitForFlushBeforeExecuteTextSearch(accessor, 10);
- executeTextSearch(accessor);
- } finally {
- dataStore1.invoke(() -> checkResultAndresetTestHook());
- }
+ //Pause the sender to make sure some entries are queued up
+ dataStore1.invoke(() -> pauseSender(getCache()));
+ dataStore2.invoke(() -> pauseSender(getCache()));
+ putDataInRegion(accessor);
+ assertFalse(waitForFlushBeforeExecuteTextSearch(accessor, 500));
+ dataStore1.invoke(() -> resumeSender(getCache()));
+ dataStore2.invoke(() -> resumeSender(getCache()));
+ assertTrue(waitForFlushBeforeExecuteTextSearch(accessor, 60000));
+ executeTextSearch(accessor);
}
- protected void waitForFlushBeforeExecuteTextSearch(VM vm, final int expectKeyNum) {
- vm.invoke(() -> {
+ protected boolean waitForFlushBeforeExecuteTextSearch(VM vm, int ms) {
+ return vm.invoke(() -> {
Cache cache = getCache();
- Region<Object, Object> region = cache.getRegion(REGION_NAME);
LuceneService service = LuceneServiceProvider.get(cache);
LuceneIndexImpl index = (LuceneIndexImpl)service.getIndex(INDEX_NAME, REGION_NAME);
- assertNotNull(index);
- LuceneQuery<Integer, TestObject> query;
- String aeqId = LuceneServiceImpl.getUniqueIndexName(INDEX_NAME, REGION_NAME);
- AsyncEventQueue queue = cache.getAsyncEventQueue(aeqId);
- assertNotNull(queue);
- assertTrue(queue.size()>0);
- index.waitUntilFlushed(30000);
- return null;
+ return index.waitUntilFlushed(ms);
});
}
- public static void setTestHook() {
- LuceneEventListener.testHook = new LuceneEventListener.TestHook() {
-
- @Override
- public void doTestHook(String spot) {
- if (spot.equals("FOUND_AND_BEFORE_PROCESSING_A_EVENT")) {
- try {
- Thread.sleep(1000);
- LogService.getLogger().debug("Waited in test hook");
- }
- catch (InterruptedException e) {
- }
- }
- }
- };
- }
-
- public static void checkResultAndresetTestHook()
- {
- LuceneEventListener.testHook = null;
- }
-
protected void executeTextSearch(VM vm) {
vm.invoke(() -> {
Cache cache = getCache();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
index fbd101e..4d5a0b7 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPRBase.java
@@ -19,6 +19,7 @@
package com.gemstone.gemfire.cache.lucene;
+import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.*;
import static org.junit.Assert.*;
import java.io.Serializable;
@@ -60,6 +61,7 @@ public abstract class LuceneQueriesPRBase extends LuceneQueriesBase {
dataStore2.invoke(() -> initDataStore(createIndex));
rebalanceRegion(dataStore1);
+ assertTrue(waitForFlushBeforeExecuteTextSearch(accessor, 60000));
executeTextSearch(accessor);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPRDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPRDUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPRDUnitTest.java
index 51d0a33..830ca26 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPRDUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPRDUnitTest.java
@@ -16,6 +16,7 @@
*/
package com.gemstone.gemfire.cache.lucene;
+import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.REGION_NAME;
import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.test.dunit.SerializableRunnableIF;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPROverflowDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPROverflowDUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPROverflowDUnitTest.java
index cf2bac7..8fd0a08 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPROverflowDUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesPeerPROverflowDUnitTest.java
@@ -16,6 +16,8 @@
*/
package com.gemstone.gemfire.cache.lucene;
+import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.*;
+
import com.gemstone.gemfire.cache.EvictionAction;
import com.gemstone.gemfire.cache.EvictionAttributes;
import com.gemstone.gemfire.cache.RegionShortcut;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/4a97daf6/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
index 7a3ef04..571049c 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
+import com.gemstone.gemfire.cache.asyncqueue.internal.AsyncEventQueueImpl;
import com.gemstone.gemfire.cache.lucene.LuceneIndex;
import com.gemstone.gemfire.cache.lucene.LuceneQuery;
import com.gemstone.gemfire.cache.lucene.LuceneQueryResults;
@@ -82,4 +83,14 @@ public class LuceneTestUtilities {
}
assertEquals(expectedKeySet, actualKeySet);
}
+
+ public static void pauseSender(final Cache cache) {
+ final AsyncEventQueueImpl queue = (AsyncEventQueueImpl) getIndexQueue(cache);
+ queue.getSender().pause();
+ }
+
+ public static void resumeSender(final Cache cache) {
+ final AsyncEventQueueImpl queue = (AsyncEventQueueImpl) getIndexQueue(cache);
+ queue.getSender().resume();
+ }
}
[3/3] incubator-geode git commit: GEODE-11: Adding a test of using a
KeywordAnalyzer
Posted by up...@apache.org.
GEODE-11: Adding a test of using a KeywordAnalyzer
Testing that a KeywordAnalyzer does not tokenize fields.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8d1fa0c3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8d1fa0c3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8d1fa0c3
Branch: refs/heads/develop
Commit: 8d1fa0c32de3369e39c05bc9a48c64149df09a98
Parents: 9d23a69
Author: Dan Smith <up...@apache.org>
Authored: Wed May 18 15:27:35 2016 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Thu May 19 17:02:05 2016 -0700
----------------------------------------------------------------------
.../lucene/LuceneQueriesIntegrationTest.java | 44 ++++++++++++++++++++
.../cache/lucene/test/LuceneTestUtilities.java | 23 +++++++++-
.../gemfire/cache/lucene/test/TestObject.java | 29 ++++++++++++-
3 files changed, 93 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8d1fa0c3/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
index 2262339..15f5747 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/LuceneQueriesIntegrationTest.java
@@ -16,15 +16,25 @@
*/
package com.gemstone.gemfire.cache.lucene;
+import static com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities.verifyQueryKeys;
import static org.hamcrest.Matchers.isA;
import static org.junit.Assert.*;
+import java.util.HashMap;
+import java.util.Map;
+
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.RegionShortcut;
import com.gemstone.gemfire.cache.execute.FunctionException;
+import com.gemstone.gemfire.cache.lucene.test.LuceneTestUtilities;
+import com.gemstone.gemfire.cache.lucene.test.TestObject;
import com.gemstone.gemfire.cache.query.QueryException;
import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.core.KeywordAnalyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.queryparser.classic.ParseException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -41,6 +51,33 @@ public class LuceneQueriesIntegrationTest extends LuceneIntegrationTest {
protected static final String REGION_NAME = "index";
@Test()
+ public void shouldNotTokenizeWordsWithKeywordAnalyzer() throws ParseException {
+ Map<String, Analyzer> fields = new HashMap<String, Analyzer>();
+ fields.put("field1", new StandardAnalyzer());
+ fields.put("field2", new KeywordAnalyzer());
+ luceneService.createIndex(INDEX_NAME, REGION_NAME, fields);
+ Region region = cache.createRegionFactory(RegionShortcut.PARTITION)
+ .create(REGION_NAME);
+ final LuceneIndex index = luceneService.getIndex(INDEX_NAME, REGION_NAME);
+
+ //Put two values with some of the same tokens
+ String value1 = "one three";
+ region.put("A", new TestObject(value1, value1));
+ String value2 = "one two three";
+ region.put("B", new TestObject(value2, value2));
+
+ index.waitUntilFlushed(60000);
+
+ //Using the standard analyzer, this query will match both results
+ verifyQuery("field1:\"one three\"", "A", "B");
+
+ //Using the keyword analyzer, this query will only match the entry that exactly matches
+ verifyQuery("field2:\"one three\"", "A");
+
+
+ }
+
+ @Test()
public void throwFunctionExceptionWhenGivenBadQuery() {
LuceneService luceneService = LuceneServiceProvider.get(cache);
luceneService.createIndex(INDEX_NAME, REGION_NAME, "text");
@@ -65,5 +102,12 @@ public class LuceneQueriesIntegrationTest extends LuceneIntegrationTest {
}
+ private void verifyQuery(String query, String ... expectedKeys) throws ParseException {
+ final LuceneQuery<Object, Object> queryWithStandardAnalyzer = luceneService.createLuceneQueryFactory().create(
+ INDEX_NAME, REGION_NAME, query);
+
+ verifyQueryKeys(queryWithStandardAnalyzer, expectedKeys);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8d1fa0c3/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
index 61355c4..7a3ef04 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/LuceneTestUtilities.java
@@ -18,13 +18,20 @@
*/
package com.gemstone.gemfire.cache.lucene.test;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
import com.gemstone.gemfire.cache.lucene.LuceneIndex;
+import com.gemstone.gemfire.cache.lucene.LuceneQuery;
+import com.gemstone.gemfire.cache.lucene.LuceneQueryResults;
+import com.gemstone.gemfire.cache.lucene.LuceneResultStruct;
import com.gemstone.gemfire.cache.lucene.LuceneService;
import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider;
import com.gemstone.gemfire.cache.lucene.internal.LuceneIndexForPartitionedRegion;
@@ -61,4 +68,18 @@ public class LuceneTestUtilities {
boolean flushed = index.waitUntilFlushed(60000);
assertTrue(flushed);
}
+
+ /**
+ * Verify that a query returns the expected list of keys. Ordering is ignored.
+ */
+ public static <K> void verifyQueryKeys(LuceneQuery<K,Object> query,K ... expectedKeys) {
+ Set<K> expectedKeySet = new HashSet<>(Arrays.asList(expectedKeys));
+ Set<K> actualKeySet = new HashSet<>(Arrays.asList(expectedKeys));
+ final LuceneQueryResults<K, Object> results = query.search();
+ while(results.hasNextPage()) {
+ results.getNextPage().stream()
+ .forEach(struct -> actualKeySet.add(struct.getKey()));
+ }
+ assertEquals(expectedKeySet, actualKeySet);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8d1fa0c3/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/TestObject.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/TestObject.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/TestObject.java
index 3287b9f..a2b249e 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/TestObject.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/test/TestObject.java
@@ -22,6 +22,31 @@ import java.io.Serializable;
public class TestObject implements Serializable {
- String field1 = "hello world";
- String field2 = "this is a field";
+ private String field1 = "hello world";
+ private String field2 = "this is a field";
+
+ public TestObject() {
+
+ }
+
+ public TestObject(final String field1, final String field2) {
+ this.field1 = field1;
+ this.field2 = field2;
+ }
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(final String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(final String field2) {
+ this.field2 = field2;
+ }
}