Skip to content

Commit b88a798

Browse files
authored
Fix SearchableSnapshotDirectoryTests.testDirectoryReader (#51343)
This commit fixes the SearchableSnapshotDirectoryTests.testDirectoryReader which fails on empty/fully deleted segments. The test now iterates on all LeafReader to verify that they have the same number of docs. It also check all fields within the segment. Closes #51326
1 parent 4c686c1 commit b88a798

File tree

1 file changed

+44
-7
lines changed

1 file changed

+44
-7
lines changed

x-pack/plugin/searchable-snapshots/src/test/java/org/elasticsearch/index/store/SearchableSnapshotDirectoryTests.java

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@
1111
import org.apache.lucene.document.StringField;
1212
import org.apache.lucene.document.TextField;
1313
import org.apache.lucene.index.DirectoryReader;
14+
import org.apache.lucene.index.FieldInfo;
15+
import org.apache.lucene.index.FieldInfos;
1416
import org.apache.lucene.index.IndexCommit;
17+
import org.apache.lucene.index.IndexOptions;
1518
import org.apache.lucene.index.IndexWriter;
1619
import org.apache.lucene.index.IndexWriterConfig;
20+
import org.apache.lucene.index.LeafReader;
1721
import org.apache.lucene.index.SegmentInfos;
1822
import org.apache.lucene.index.Term;
1923
import org.apache.lucene.index.Terms;
@@ -144,13 +148,46 @@ public void testDirectoryReader() throws Exception {
144148
assertThat(snapshotReader.getVersion(), equalTo(reader.getVersion()));
145149
assertThat(snapshotReader.getIndexCommit().getGeneration(), equalTo(reader.getIndexCommit().getGeneration()));
146150

147-
String field = randomFrom("id", "text");
148-
Terms terms = reader.leaves().get(0).reader().terms(field);
149-
Terms snapshotTerms = snapshotReader.leaves().get(0).reader().terms(field);
150-
assertThat(snapshotTerms.size(), equalTo(terms.size()));
151-
assertThat(snapshotTerms.getDocCount(), equalTo(terms.getDocCount()));
152-
assertThat(snapshotTerms.getMin(), equalTo(terms.getMin()));
153-
assertThat(snapshotTerms.getMax(), equalTo(terms.getMax()));
151+
for (int i = 0; i < reader.leaves().size(); i++) {
152+
LeafReader leafReader = reader.leaves().get(i).reader();
153+
LeafReader snapshotLeafReader = snapshotReader.leaves().get(i).reader();
154+
assertThat(snapshotLeafReader.numDocs(), equalTo(leafReader.numDocs()));
155+
assertThat(snapshotLeafReader.numDeletedDocs(), equalTo(leafReader.numDeletedDocs()));
156+
assertThat(snapshotLeafReader.maxDoc(), equalTo(leafReader.maxDoc()));
157+
158+
FieldInfos fieldInfos = leafReader.getFieldInfos();
159+
FieldInfos snapshotFieldInfos = snapshotLeafReader.getFieldInfos();
160+
assertThat(snapshotFieldInfos.size(), equalTo(fieldInfos.size()));
161+
162+
for (int j = 0; j < fieldInfos.size(); j++) {
163+
FieldInfo fieldInfo = fieldInfos.fieldInfo(j);
164+
FieldInfo snapshotFieldInfo = snapshotFieldInfos.fieldInfo(j);
165+
166+
assertThat(snapshotFieldInfo.name, equalTo(fieldInfo.name));
167+
assertThat(snapshotFieldInfo.number, equalTo(fieldInfo.number));
168+
169+
assertThat(snapshotLeafReader.getDocCount(fieldInfo.name), equalTo(leafReader.getDocCount(fieldInfo.name)));
170+
assertThat(snapshotLeafReader.getSumDocFreq(fieldInfo.name), equalTo(leafReader.getSumDocFreq(fieldInfo.name)));
171+
172+
assertThat(snapshotFieldInfo.getDocValuesType(), equalTo(fieldInfo.getDocValuesType()));
173+
assertThat(snapshotFieldInfo.getDocValuesGen(), equalTo(fieldInfo.getDocValuesGen()));
174+
assertThat(snapshotFieldInfo.getPointDataDimensionCount(), equalTo(fieldInfo.getPointDataDimensionCount()));
175+
assertThat(snapshotFieldInfo.getPointIndexDimensionCount(), equalTo(fieldInfo.getPointIndexDimensionCount()));
176+
assertThat(snapshotFieldInfo.getPointNumBytes(), equalTo(fieldInfo.getPointNumBytes()));
177+
178+
if (fieldInfo.getIndexOptions() != IndexOptions.NONE) {
179+
Terms terms = leafReader.terms(fieldInfo.name);
180+
Terms snapshotTerms = snapshotLeafReader.terms(fieldInfo.name);
181+
182+
assertThat(snapshotTerms.size(), equalTo(terms.size()));
183+
assertThat(snapshotTerms.getDocCount(), equalTo(terms.getDocCount()));
184+
assertThat(snapshotTerms.getMin(), equalTo(terms.getMin()));
185+
assertThat(snapshotTerms.getMax(), equalTo(terms.getMax()));
186+
assertThat(snapshotTerms.getSumTotalTermFreq(), equalTo(terms.getSumTotalTermFreq()));
187+
assertThat(snapshotTerms.getSumDocFreq(), equalTo(terms.getSumDocFreq()));
188+
}
189+
}
190+
}
154191
}
155192
}
156193
});

0 commit comments

Comments
 (0)