Skip to content

Commit 1782030

Browse files
GEODE-3242: Adding lucene serializer to describe command
Printing the lucene index's serializer in the output of describe index.
1 parent ef7c2d9 commit 1782030

File tree

4 files changed

+62
-15
lines changed

4 files changed

+62
-15
lines changed

geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommands.java

+1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ protected Result toTabularResult(final List<LuceneIndexDetails> indexDetailsList
139139
indexData.accumulate("Server Name", indexDetails.getServerName());
140140
indexData.accumulate("Indexed Fields", indexDetails.getSearchableFieldNamesString());
141141
indexData.accumulate("Field Analyzer", indexDetails.getFieldAnalyzersString());
142+
indexData.accumulate("Serializer", indexDetails.getSerializerString());
142143
indexData.accumulate("Status", indexDetails.getInitialized() ? "Initialized" : "Defined");
143144

144145
if (stats) {

geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexDetails.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
import java.util.Map;
2121
import java.util.Map.Entry;
2222

23+
import org.apache.geode.cache.lucene.LuceneSerializer;
2324
import org.apache.geode.cache.lucene.internal.LuceneIndexCreationProfile;
2425
import org.apache.geode.cache.lucene.internal.LuceneIndexImpl;
2526
import org.apache.geode.cache.lucene.internal.LuceneIndexStats;
27+
import org.apache.geode.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer;
2628

2729
import org.apache.lucene.analysis.Analyzer;
2830

@@ -34,27 +36,32 @@ public class LuceneIndexDetails extends LuceneFunctionSerializable
3436
private Map<String, String> fieldAnalyzers = null;
3537
private final Map<String, Integer> indexStats;
3638
private boolean initialized;
39+
private String serializer;
3740

3841
public LuceneIndexDetails(final String indexName, final String regionPath,
3942
final String[] searchableFieldNames, final Map<String, Analyzer> fieldAnalyzers,
40-
LuceneIndexStats indexStats, boolean initialized, final String serverName) {
43+
LuceneIndexStats indexStats, boolean initialized, final String serverName,
44+
LuceneSerializer serializer) {
4145
super(indexName, regionPath);
4246
this.serverName = serverName;
4347
this.searchableFieldNames = searchableFieldNames;
4448
this.fieldAnalyzers = getFieldAnalyzerStrings(fieldAnalyzers);
4549
this.indexStats = getIndexStatsMap(indexStats);
4650
this.initialized = initialized;
51+
this.serializer = serializer != null ? serializer.getClass().getSimpleName()
52+
: HeterogeneousLuceneSerializer.class.getSimpleName();
4753
}
4854

4955
public LuceneIndexDetails(LuceneIndexImpl index, final String serverName) {
5056
this(index.getName(), index.getRegionPath(), index.getFieldNames(), index.getFieldAnalyzers(),
51-
index.getIndexStats(), true, serverName);
57+
index.getIndexStats(), true, serverName, index.getLuceneSerializer());
5258
}
5359

5460
public LuceneIndexDetails(LuceneIndexCreationProfile indexProfile, final String serverName) {
5561
this(indexProfile.getIndexName(), indexProfile.getRegionPath(), indexProfile.getFieldNames(),
56-
null, null, false, serverName);
62+
null, null, false, serverName, null);
5763
this.fieldAnalyzers = getFieldAnalyzerStringsFromProfile(indexProfile.getFieldAnalyzers());
64+
this.serializer = indexProfile.getSerializerClass();
5865
}
5966

6067
public Map<String, Integer> getIndexStats() {
@@ -114,18 +121,22 @@ public String getSearchableFieldNamesString() {
114121
return Arrays.asList(searchableFieldNames).toString();
115122
}
116123

117-
118124
public String getFieldAnalyzersString() {
119125
return fieldAnalyzers.toString();
120126
}
121127

128+
public String getSerializerString() {
129+
return this.serializer;
130+
}
131+
122132
@Override
123133
public String toString() {
124134
final StringBuffer buffer = new StringBuffer();
125135
buffer.append("{\n\tIndex Name = " + indexName);
126136
buffer.append(",\tRegion Path = " + regionPath);
127137
buffer.append(",\tIndexed Fields = " + getSearchableFieldNamesString());
128138
buffer.append(",\tField Analyzer = " + getFieldAnalyzersString());
139+
buffer.append(",\tSerializer = " + getSerializerString());
129140
buffer.append(",\tStatus =\n\t" + getInitialized());
130141
buffer.append(",\tIndex Statistics =\n\t" + getIndexStatsString());
131142
buffer.append("\n}\n");

geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsDUnitTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,30 @@ public void describeIndexShouldReturnExistingIndex() throws Exception {
416416
assertTrue(resultAsString.contains(INDEX_NAME));
417417
}
418418

419+
@Test
420+
public void describeIndexShouldShowSerializer() throws Exception {
421+
final VM vm1 = Host.getHost(0).getVM(1);
422+
423+
vm1.invoke(() -> {
424+
getCache();
425+
});
426+
CommandStringBuilder csb = new CommandStringBuilder(LuceneCliStrings.LUCENE_CREATE_INDEX);
427+
csb.addOption(LuceneCliStrings.LUCENE__INDEX_NAME, INDEX_NAME);
428+
csb.addOption(LuceneCliStrings.LUCENE__REGION_PATH, REGION_NAME);
429+
csb.addOption(LuceneCliStrings.LUCENE_CREATE_INDEX__FIELD, "field1,field2,field3");
430+
csb.addOption(LuceneCliStrings.LUCENE_CREATE_INDEX__SERIALIZER,
431+
PrimitiveSerializer.class.getCanonicalName());
432+
433+
String resultAsString = executeCommandAndLogResult(csb);
434+
vm1.invoke(() -> createRegion());
435+
436+
csb = new CommandStringBuilder(LuceneCliStrings.LUCENE_DESCRIBE_INDEX);
437+
csb.addOption(LuceneCliStrings.LUCENE__INDEX_NAME, INDEX_NAME);
438+
csb.addOption(LuceneCliStrings.LUCENE__REGION_PATH, REGION_NAME);
439+
resultAsString = executeCommandAndLogResult(csb);
440+
assertThat(resultAsString).contains(PrimitiveSerializer.class.getSimpleName());
441+
}
442+
419443
@Test
420444
public void describeIndexShouldNotReturnResultWhenIndexNotFound() throws Exception {
421445
final VM vm1 = Host.getHost(0).getVM(1);

geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/cli/LuceneIndexCommandsJUnitTest.java

+22-11
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,13 @@
5151

5252
import org.apache.geode.cache.execute.Execution;
5353
import org.apache.geode.cache.execute.ResultCollector;
54+
import org.apache.geode.cache.lucene.LuceneSerializer;
5455
import org.apache.geode.cache.lucene.internal.LuceneIndexStats;
5556
import org.apache.geode.cache.lucene.internal.cli.functions.LuceneCreateIndexFunction;
5657
import org.apache.geode.cache.lucene.internal.cli.functions.LuceneDescribeIndexFunction;
5758
import org.apache.geode.cache.lucene.internal.cli.functions.LuceneDestroyIndexFunction;
5859
import org.apache.geode.cache.lucene.internal.cli.functions.LuceneListIndexFunction;
60+
import org.apache.geode.cache.lucene.internal.repository.serializer.HeterogeneousLuceneSerializer;
5961
import org.apache.geode.cache.lucene.internal.repository.serializer.PrimitiveSerializer;
6062
import org.apache.geode.distributed.DistributedMember;
6163
import org.apache.geode.internal.cache.InternalCache;
@@ -109,12 +111,13 @@ public void testListIndexWithoutStats() throws Exception {
109111
fieldAnalyzers.put("field1", new StandardAnalyzer());
110112
fieldAnalyzers.put("field2", new KeywordAnalyzer());
111113
fieldAnalyzers.put("field3", null);
114+
LuceneSerializer serializer = new HeterogeneousLuceneSerializer();
112115
final LuceneIndexDetails indexDetails1 = createIndexDetails("memberFive", "/Employees",
113-
searchableFields, fieldAnalyzers, true, serverName);
116+
searchableFields, fieldAnalyzers, true, serverName, serializer);
114117
final LuceneIndexDetails indexDetails2 = createIndexDetails("memberSix", "/Employees",
115-
searchableFields, fieldAnalyzers, false, serverName);
118+
searchableFields, fieldAnalyzers, false, serverName, serializer);
116119
final LuceneIndexDetails indexDetails3 = createIndexDetails("memberTen", "/Employees",
117-
searchableFields, fieldAnalyzers, true, serverName);
120+
searchableFields, fieldAnalyzers, true, serverName, serializer);
118121

119122
final List<Set<LuceneIndexDetails>> results = new ArrayList<>();
120123

@@ -157,12 +160,13 @@ public void testListIndexWithStats() throws Exception {
157160
fieldAnalyzers.put("field1", new StandardAnalyzer());
158161
fieldAnalyzers.put("field2", new KeywordAnalyzer());
159162
fieldAnalyzers.put("field3", null);
163+
LuceneSerializer serializer = new HeterogeneousLuceneSerializer();
160164
final LuceneIndexDetails indexDetails1 = createIndexDetails("memberFive", "/Employees",
161-
searchableFields, fieldAnalyzers, mockIndexStats1, true, serverName);
165+
searchableFields, fieldAnalyzers, mockIndexStats1, true, serverName, serializer);
162166
final LuceneIndexDetails indexDetails2 = createIndexDetails("memberSix", "/Employees",
163-
searchableFields, fieldAnalyzers, mockIndexStats2, true, serverName);
167+
searchableFields, fieldAnalyzers, mockIndexStats2, true, serverName, serializer);
164168
final LuceneIndexDetails indexDetails3 = createIndexDetails("memberTen", "/Employees",
165-
searchableFields, fieldAnalyzers, mockIndexStats3, true, serverName);
169+
searchableFields, fieldAnalyzers, mockIndexStats3, true, serverName, serializer);
166170

167171
final List<Set<LuceneIndexDetails>> results = new ArrayList<>();
168172

@@ -191,6 +195,11 @@ public void testListIndexWithStats() throws Exception {
191195
assertEquals(Arrays.asList("10", "20", "30"), data.retrieveAllValues("Commits"));
192196
assertEquals(Arrays.asList("5", "10", "15"), data.retrieveAllValues("Updates"));
193197
assertEquals(Arrays.asList("1", "2", "3"), data.retrieveAllValues("Documents"));
198+
assertEquals(
199+
Arrays.asList(HeterogeneousLuceneSerializer.class.getSimpleName(),
200+
HeterogeneousLuceneSerializer.class.getSimpleName(),
201+
HeterogeneousLuceneSerializer.class.getSimpleName()),
202+
data.retrieveAllValues("Serializer"));
194203
}
195204

196205
@Test
@@ -237,8 +246,9 @@ public void testDescribeIndex() throws Exception {
237246
fieldAnalyzers.put("field3", null);
238247
final LuceneIndexStats mockIndexStats = getMockIndexStats(1, 10, 5, 1);
239248
final List<LuceneIndexDetails> indexDetails = new ArrayList<>();
249+
LuceneSerializer serializer = new HeterogeneousLuceneSerializer();
240250
indexDetails.add(createIndexDetails("memberFive", "/Employees", searchableFields,
241-
fieldAnalyzers, mockIndexStats, true, serverName));
251+
fieldAnalyzers, mockIndexStats, true, serverName, serializer));
242252

243253
doReturn(mockResultCollector).when(commands).executeFunctionOnRegion(
244254
isA(LuceneDescribeIndexFunction.class), any(LuceneIndexInfo.class), eq(true));
@@ -619,16 +629,17 @@ private LuceneIndexCommands createIndexCommands(final InternalCache cache,
619629

620630
private LuceneIndexDetails createIndexDetails(final String indexName, final String regionPath,
621631
final String[] searchableFields, final Map<String, Analyzer> fieldAnalyzers,
622-
LuceneIndexStats indexStats, boolean status, final String serverName) {
632+
LuceneIndexStats indexStats, boolean status, final String serverName,
633+
LuceneSerializer serializer) {
623634
return new LuceneIndexDetails(indexName, regionPath, searchableFields, fieldAnalyzers,
624-
indexStats, status, serverName);
635+
indexStats, status, serverName, serializer);
625636
}
626637

627638
private LuceneIndexDetails createIndexDetails(final String indexName, final String regionPath,
628639
final String[] searchableFields, final Map<String, Analyzer> fieldAnalyzers, boolean status,
629-
final String serverName) {
640+
final String serverName, LuceneSerializer serializer) {
630641
return new LuceneIndexDetails(indexName, regionPath, searchableFields, fieldAnalyzers, null,
631-
status, serverName);
642+
status, serverName, serializer);
632643
}
633644

634645
private LuceneSearchResults createQueryResults(final String key, final String value,

0 commit comments

Comments
 (0)