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/09/22 01:46:37 UTC
[3/3] incubator-geode git commit: GEODE-11: Make Lucene Entry objects
DataSerializable
GEODE-11: Make Lucene Entry objects DataSerializable
All Entry related objects (EntryScore, TopEntries, TopEntriesCollector and
CollectorManager) will be sent on wire and need to serialzed.
https://reviews.apache.org/r/38581/
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/74d293d1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/74d293d1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/74d293d1
Branch: refs/heads/feature/GEODE-11
Commit: 74d293d17c79968d98f2bd28066bcd2a56898946
Parents: 5970670
Author: Ashvin Agrawal <as...@apache.org>
Authored: Mon Sep 21 16:40:18 2015 -0700
Committer: Ashvin Agrawal <as...@apache.org>
Committed: Mon Sep 21 16:45:51 2015 -0700
----------------------------------------------------------------------
.../internal/DataSerializableFixedID.java | 3 ++
.../lucene/internal/LuceneServiceImpl.java | 15 +++++++
.../lucene/internal/distributed/EntryScore.java | 47 ++++++++++++++++++--
.../lucene/internal/distributed/TopEntries.java | 44 ++++++++++++++++--
.../distributed/TopEntriesCollector.java | 41 +++++++++++++++--
.../distributed/TopEntriesCollectorManager.java | 2 +-
.../distributed/EntryScoreJUnitTest.java | 21 +++++++++
.../distributed/LuceneFunctionJUnitTest.java | 32 ++++++-------
.../TopEntriesCollectorJUnitTest.java | 26 +++++++----
.../distributed/TopEntriesJUnitTest.java | 29 ++++++++++--
10 files changed, 219 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java
index 645b0af..3a56920 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java
@@ -814,6 +814,9 @@ public interface DataSerializableFixedID extends SerializationVersions {
public static final short LUCENE_FUNCTION_CONTEXT = 2171;
public static final short LUCENE_STRING_QUERY_PROVIDER = 2172;
public static final short LUCENE_TOP_ENTRIES_COLLECTOR_MANAGER = 2173;
+ public static final short LUCENE_ENTRY_SCORE = 2174;
+ public static final short LUCENE_TOP_ENTRIES = 2175;
+ public static final short LUCENE_TOP_ENTRIES_COLLECTOR = 2176;
// NOTE, codes > 65535 will take 4 bytes to serialize
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
index b6cd492..0f10dac 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/LuceneServiceImpl.java
@@ -12,8 +12,11 @@ import com.gemstone.gemfire.cache.execute.FunctionService;
import com.gemstone.gemfire.cache.lucene.LuceneIndex;
import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory;
import com.gemstone.gemfire.cache.lucene.LuceneService;
+import com.gemstone.gemfire.cache.lucene.internal.distributed.EntryScore;
import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunction;
import com.gemstone.gemfire.cache.lucene.internal.distributed.LuceneFunctionContext;
+import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntries;
+import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollector;
import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollectorManager;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.ChunkKey;
import com.gemstone.gemfire.cache.lucene.internal.filesystem.File;
@@ -155,5 +158,17 @@ public class LuceneServiceImpl implements LuceneService, Extension<Cache> {
DSFIDFactory.registerDSFID(
DataSerializableFixedID.LUCENE_TOP_ENTRIES_COLLECTOR_MANAGER,
TopEntriesCollectorManager.class);
+
+ DSFIDFactory.registerDSFID(
+ DataSerializableFixedID.LUCENE_ENTRY_SCORE,
+ EntryScore.class);
+
+ DSFIDFactory.registerDSFID(
+ DataSerializableFixedID.LUCENE_TOP_ENTRIES,
+ TopEntries.class);
+
+ DSFIDFactory.registerDSFID(
+ DataSerializableFixedID.LUCENE_TOP_ENTRIES_COLLECTOR,
+ TopEntriesCollector.class);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScore.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScore.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScore.java
index 6903dce..1c80204 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScore.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScore.java
@@ -1,22 +1,63 @@
package com.gemstone.gemfire.cache.lucene.internal.distributed;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import com.gemstone.gemfire.DataSerializer;
+import com.gemstone.gemfire.internal.DataSerializableFixedID;
+import com.gemstone.gemfire.internal.Version;
+
/**
* Holds one entry matching search query and its metadata
*/
-public class EntryScore {
+public class EntryScore implements DataSerializableFixedID {
// Key of the entry matching search query
- final Object key;
+ private Object key;
// The score of this document for the query.
- final float score;
+ private float score;
+
+ public EntryScore() {
+ }
public EntryScore(Object key, float score) {
this.key = key;
this.score = score;
}
+ public Object getKey() {
+ return key;
+ }
+
+ public float getScore() {
+ return score;
+ }
+
@Override
public String toString() {
return "key=" + key + " score=" + score;
}
+
+ @Override
+ public Version[] getSerializationVersions() {
+ return null;
+ }
+
+ @Override
+ public int getDSFID() {
+ return LUCENE_ENTRY_SCORE;
+ }
+
+ @Override
+ public void toData(DataOutput out) throws IOException {
+ DataSerializer.writeObject(key, out);
+ out.writeFloat(score);
+ }
+
+ @Override
+ public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+ key = DataSerializer.readObject(in);
+ score = in.readFloat();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntries.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntries.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntries.java
index 3a07d3f..3417615 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntries.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntries.java
@@ -1,20 +1,26 @@
package com.gemstone.gemfire.cache.lucene.internal.distributed;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
+import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory;
+import com.gemstone.gemfire.internal.DataSerializableFixedID;
+import com.gemstone.gemfire.internal.Version;
/**
* Holds a ordered collection of entries matching a search query.
*/
-public class TopEntries {
+public class TopEntries implements DataSerializableFixedID {
// ordered collection of entries
- final private List<EntryScore> hits = new ArrayList<>();
+ private List<EntryScore> hits = new ArrayList<>();
// the maximum number of entries stored in this
- final int limit;
+ private int limit;
// comparator to order entryScore instances
final Comparator<EntryScore> comparator = new EntryScoreComparator();
@@ -66,13 +72,43 @@ public class TopEntries {
}
/**
+ * @return The maximum capacity of this collection
+ */
+ public int getLimit() {
+ return limit;
+ }
+
+ /**
* Compares scores of two entries using natural ordering. I.e. it returns -1 if the first entry's score is less than
* the second one.
*/
class EntryScoreComparator implements Comparator<EntryScore> {
@Override
public int compare(EntryScore o1, EntryScore o2) {
- return Float.compare(o1.score, o2.score);
+ return Float.compare(o1.getScore(), o2.getScore());
}
+ }
+
+ @Override
+ public Version[] getSerializationVersions() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int getDSFID() {
+ return LUCENE_TOP_ENTRIES;
+ }
+
+ @Override
+ public void toData(DataOutput out) throws IOException {
+ out.writeInt(limit);
+ DataSerializer.writeObject(hits, out);
+ }
+
+ @Override
+ public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+ limit = in.readInt();
+ hits = DataSerializer.readObject(in);
};
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollector.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollector.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollector.java
index a4b5144..37797d9 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollector.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollector.java
@@ -1,16 +1,27 @@
package com.gemstone.gemfire.cache.lucene.internal.distributed;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexResultCollector;
+import com.gemstone.gemfire.internal.DataSerializableFixedID;
+import com.gemstone.gemfire.internal.Version;
/**
* An implementation of {@link IndexResultCollector} to collect {@link EntryScore}. It is expected that the results will
* be ordered by score of the entry.
*/
-public class TopEntriesCollector implements IndexResultCollector {
- final String name;
+public class TopEntriesCollector implements IndexResultCollector, DataSerializableFixedID {
+ private String name;
+
+ private TopEntries entries;
- private final TopEntries entries;
+ public TopEntriesCollector() {
+ this(null);
+ }
public TopEntriesCollector(String name) {
this(name, LuceneQueryFactory.DEFAULT_LIMIT);
@@ -25,7 +36,7 @@ public class TopEntriesCollector implements IndexResultCollector {
public void collect(Object key, float score) {
collect(new EntryScore(key, score));
}
-
+
public void collect(EntryScore entry) {
entries.addHit(entry);
}
@@ -47,4 +58,26 @@ public class TopEntriesCollector implements IndexResultCollector {
public TopEntries getEntries() {
return entries;
}
+
+ @Override
+ public Version[] getSerializationVersions() {
+ return null;
+ }
+
+ @Override
+ public int getDSFID() {
+ return LUCENE_TOP_ENTRIES_COLLECTOR;
+ }
+
+ @Override
+ public void toData(DataOutput out) throws IOException {
+ DataSerializer.writeString(name, out);
+ DataSerializer.writeObject(entries, out);
+ }
+
+ @Override
+ public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+ name = DataSerializer.readString(in);
+ entries = DataSerializer.readObject(in);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorManager.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorManager.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorManager.java
index 24e75a7..a0a209a 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorManager.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorManager.java
@@ -88,7 +88,7 @@ public class TopEntriesCollectorManager implements CollectorManager<TopEntriesCo
}
}
- logger.debug("Reduced size of {} is {}", mergedResult.name, mergedResult.size());
+ logger.debug("Reduced size of {} is {}", mergedResult.getName(), mergedResult.size());
return mergedResult;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScoreJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScoreJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScoreJUnitTest.java
new file mode 100644
index 0000000..c05fb61
--- /dev/null
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/EntryScoreJUnitTest.java
@@ -0,0 +1,21 @@
+package com.gemstone.gemfire.cache.lucene.internal.distributed;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.CopyHelper;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+@Category(UnitTest.class)
+public class EntryScoreJUnitTest {
+ @Test
+ public void testSerialization() {
+ LuceneServiceImpl.registerDataSerializables();
+ EntryScore entry = new EntryScore("entry", .1f);
+ EntryScore copy = CopyHelper.deepCopy(entry);
+ Assert.assertEquals("entry", copy.getKey());
+ Assert.assertEquals(.1f, copy.getScore(), 0f);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/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 d4d632d..1fcd663 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
@@ -77,9 +77,9 @@ public class LuceneFunctionJUnitTest {
@Override
public Object invoke(Invocation invocation) throws Throwable {
IndexResultCollector collector = (IndexResultCollector) invocation.getParameter(2);
- collector.collect(r1_1.key, r1_1.score);
- collector.collect(r1_2.key, r1_2.score);
- collector.collect(r1_3.key, r1_3.score);
+ collector.collect(r1_1.getKey(), r1_1.getScore());
+ collector.collect(r1_2.getKey(), r1_2.getScore());
+ collector.collect(r1_3.getKey(), r1_3.getScore());
return null;
}
});
@@ -89,8 +89,8 @@ public class LuceneFunctionJUnitTest {
@Override
public Object invoke(Invocation invocation) throws Throwable {
IndexResultCollector collector = (IndexResultCollector) invocation.getParameter(2);
- collector.collect(r2_1.key, r2_1.score);
- collector.collect(r2_2.key, r2_2.score);
+ collector.collect(r2_1.getKey(), r2_1.getScore());
+ collector.collect(r2_2.getKey(), r2_2.getScore());
return null;
}
});
@@ -139,9 +139,9 @@ public class LuceneFunctionJUnitTest {
@Override
public Object invoke(Invocation invocation) throws Throwable {
IndexResultCollector collector = (IndexResultCollector) invocation.getParameter(2);
- collector.collect(r1_1.key, r1_1.score);
- collector.collect(r1_2.key, r1_2.score);
- collector.collect(r1_3.key, r1_3.score);
+ collector.collect(r1_1.getKey(), r1_1.getScore());
+ collector.collect(r1_2.getKey(), r1_2.getScore());
+ collector.collect(r1_3.getKey(), r1_3.getScore());
return null;
}
});
@@ -151,8 +151,8 @@ public class LuceneFunctionJUnitTest {
@Override
public Object invoke(Invocation invocation) throws Throwable {
IndexResultCollector collector = (IndexResultCollector) invocation.getParameter(2);
- collector.collect(r2_1.key, r2_1.score);
- collector.collect(r2_2.key, r2_2.score);
+ collector.collect(r2_1.getKey(), r2_1.getScore());
+ collector.collect(r2_2.getKey(), r2_2.getScore());
return null;
}
});
@@ -214,7 +214,7 @@ public class LuceneFunctionJUnitTest {
@Override
public Object invoke(Invocation invocation) throws Throwable {
IndexResultCollector collector = (IndexResultCollector) invocation.getParameter(2);
- collector.collect(r2_1.key, r2_1.score);
+ collector.collect(r2_1.getKey(), r2_1.getScore());
return null;
}
});
@@ -325,20 +325,20 @@ public class LuceneFunctionJUnitTest {
will(returnValue(mockResultSender));
oneOf(mockContext).getArguments();
will(returnValue(searchArgs));
-
+
oneOf(queryProvider).getQuery();
will(throwException(new QueryException()));
-
+
oneOf(mockResultSender).sendException(with(any(QueryException.class)));
}
});
-
+
LuceneFunction function = new LuceneFunction();
function.setRepositoryManager(mockRepoManager);
-
+
function.execute(mockContext);
}
-
+
@Test
public void testQueryFunctionId() {
String id = new LuceneFunction().getId();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorJUnitTest.java
index 05a20de..50c9f92 100644
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorJUnitTest.java
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesCollectorJUnitTest.java
@@ -10,7 +10,6 @@ import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.CopyHelper;
import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
-import com.gemstone.gemfire.cache.lucene.internal.StringQueryProvider;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
@@ -32,18 +31,18 @@ public class TopEntriesCollectorJUnitTest {
TopEntriesCollectorManager manager = new TopEntriesCollectorManager();
TopEntriesCollector c1 = manager.newCollector("c1");
- c1.collect(r1_1.key, r1_1.score);
- c1.collect(r1_2.key, r1_2.score);
- c1.collect(r1_3.key, r1_3.score);
+ c1.collect(r1_1.getKey(), r1_1.getScore());
+ c1.collect(r1_2.getKey(), r1_2.getScore());
+ c1.collect(r1_3.getKey(), r1_3.getScore());
TopEntriesCollector c2 = manager.newCollector("c2");
- c2.collect(r2_1.key, r2_1.score);
- c2.collect(r2_2.key, r2_2.score);
+ c2.collect(r2_1.getKey(), r2_1.getScore());
+ c2.collect(r2_2.getKey(), r2_2.getScore());
TopEntriesCollector c3 = manager.newCollector("c3");
- c3.collect(r3_1.key, r3_1.score);
- c3.collect(r3_2.key, r3_2.score);
- c3.collect(r3_3.key, r3_3.score);
+ c3.collect(r3_1.getKey(), r3_1.getScore());
+ c3.collect(r3_2.getKey(), r3_2.getScore());
+ c3.collect(r3_3.getKey(), r3_3.getScore());
List<TopEntriesCollector> collectors = new ArrayList<>();
collectors.add(c1);
@@ -70,4 +69,13 @@ public class TopEntriesCollectorJUnitTest {
assertEquals("id", copy.getId());
assertEquals(213, copy.getLimit());
}
+
+ @Test
+ public void testCollectorSerialization() {
+ LuceneServiceImpl.registerDataSerializables();
+ TopEntriesCollector collector = new TopEntriesCollector("collector", 345);
+ TopEntriesCollector copy = CopyHelper.deepCopy(collector);
+ assertEquals("collector", copy.getName());
+ assertEquals(345, copy.getEntries().getLimit());
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/74d293d1/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesJUnitTest.java
index b799a00..6c2e08b 100644
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesJUnitTest.java
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/TopEntriesJUnitTest.java
@@ -14,7 +14,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import com.gemstone.gemfire.CopyHelper;
import com.gemstone.gemfire.cache.lucene.LuceneQueryFactory;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
@@ -53,10 +55,10 @@ public class TopEntriesJUnitTest {
@Test
public void testInitialization() {
TopEntries hits = new TopEntries();
- assertEquals(LuceneQueryFactory.DEFAULT_LIMIT, hits.limit);
+ assertEquals(LuceneQueryFactory.DEFAULT_LIMIT, hits.getLimit());
hits = new TopEntries(123);
- assertEquals(123, hits.limit);
+ assertEquals(123, hits.getLimit());
}
@Test(expected = IllegalArgumentException.class)
@@ -76,6 +78,25 @@ public class TopEntriesJUnitTest {
verifyResultOrder(hits.getHits(), r1_1, r2_1, r1_2);
}
+ @Test
+ public void testSerialization() {
+ LuceneServiceImpl.registerDataSerializables();
+ TopEntries hits = new TopEntries(3);
+
+ TopEntries copy = CopyHelper.deepCopy(hits);
+ assertEquals(3, copy.getLimit());
+ assertEquals(0, copy.getHits().size());
+
+ hits = new TopEntries(3);
+ hits.addHit(r1_1);
+ hits.addHit(r2_1);
+ hits.addHit(r1_2);
+
+ copy = CopyHelper.deepCopy(hits);
+ assertEquals(3, copy.size());
+ verifyResultOrder(copy.getHits(), r1_1, r2_1, r1_2);
+ }
+
public static void verifyResultOrder(Collection<EntryScore> list, EntryScore... expectedEntries) {
Iterator<EntryScore> iter = list.iterator();
for (EntryScore expectedEntry : expectedEntries) {
@@ -83,8 +104,8 @@ public class TopEntriesJUnitTest {
fail();
}
EntryScore toVerify = iter.next();
- assertEquals(expectedEntry.key, toVerify.key);
- assertEquals(expectedEntry.score, toVerify.score, .0f);
+ assertEquals(expectedEntry.getKey(), toVerify.getKey());
+ assertEquals(expectedEntry.getScore(), toVerify.getScore(), .0f);
}
}