Skip to content

Commit 6816960

Browse files
committed
add test warmer
1 parent f802515 commit 6816960

File tree

2 files changed

+38
-23
lines changed

2 files changed

+38
-23
lines changed

test/framework/src/main/java/org/elasticsearch/index/engine/EngineTestCase.java

+24-22
Original file line numberDiff line numberDiff line change
@@ -1128,37 +1128,39 @@ public static void assertMaxSeqNoInCommitUserData(Engine engine) throws Exceptio
11281128
}
11291129

11301130
public static void assertAtMostOneLuceneDocumentPerSequenceNumber(Engine engine) throws IOException {
1131-
if (engine.config().getIndexSettings().isSoftDeleteEnabled() == false || engine instanceof InternalEngine == false) {
1132-
return;
1133-
}
11341131
try {
11351132
engine.refresh("test");
11361133
try (Engine.Searcher searcher = engine.acquireSearcher("test")) {
1137-
DirectoryReader reader = Lucene.wrapAllDocsLive(searcher.getDirectoryReader());
1138-
Set<Long> seqNos = new HashSet<>();
1139-
for (LeafReaderContext leaf : reader.leaves()) {
1140-
NumericDocValues primaryTermDocValues = leaf.reader().getNumericDocValues(SeqNoFieldMapper.PRIMARY_TERM_NAME);
1141-
NumericDocValues seqNoDocValues = leaf.reader().getNumericDocValues(SeqNoFieldMapper.NAME);
1142-
int docId;
1143-
while ((docId = seqNoDocValues.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
1144-
assertTrue(seqNoDocValues.advanceExact(docId));
1145-
long seqNo = seqNoDocValues.longValue();
1146-
assertThat(seqNo, greaterThanOrEqualTo(0L));
1147-
if (primaryTermDocValues.advanceExact(docId)) {
1148-
if (seqNos.add(seqNo) == false) {
1149-
final IdOnlyFieldVisitor idFieldVisitor = new IdOnlyFieldVisitor();
1150-
leaf.reader().document(docId, idFieldVisitor);
1151-
throw new AssertionError("found multiple documents for seq=" + seqNo + " id=" + idFieldVisitor.getId());
1152-
}
1153-
}
1154-
}
1155-
}
1134+
assertAtMostOneLuceneDocumentPerSequenceNumber(engine.config().getIndexSettings(), searcher.getDirectoryReader());
11561135
}
11571136
} catch (AlreadyClosedException ignored) {
11581137

11591138
}
11601139
}
11611140

1141+
public static void assertAtMostOneLuceneDocumentPerSequenceNumber(IndexSettings indexSettings,
1142+
DirectoryReader reader) throws IOException {
1143+
Set<Long> seqNos = new HashSet<>();
1144+
final DirectoryReader wrappedReader = indexSettings.isSoftDeleteEnabled() ? Lucene.wrapAllDocsLive(reader) : reader;
1145+
for (LeafReaderContext leaf : wrappedReader.leaves()) {
1146+
NumericDocValues primaryTermDocValues = leaf.reader().getNumericDocValues(SeqNoFieldMapper.PRIMARY_TERM_NAME);
1147+
NumericDocValues seqNoDocValues = leaf.reader().getNumericDocValues(SeqNoFieldMapper.NAME);
1148+
int docId;
1149+
while ((docId = seqNoDocValues.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
1150+
assertTrue(seqNoDocValues.advanceExact(docId));
1151+
long seqNo = seqNoDocValues.longValue();
1152+
assertThat(seqNo, greaterThanOrEqualTo(0L));
1153+
if (primaryTermDocValues.advanceExact(docId)) {
1154+
if (seqNos.add(seqNo) == false) {
1155+
final IdOnlyFieldVisitor idFieldVisitor = new IdOnlyFieldVisitor();
1156+
leaf.reader().document(docId, idFieldVisitor);
1157+
throw new AssertionError("found multiple documents for seq=" + seqNo + " id=" + idFieldVisitor.getId());
1158+
}
1159+
}
1160+
}
1161+
}
1162+
}
1163+
11621164
public static MapperService createMapperService(String type) throws IOException {
11631165
IndexMetaData indexMetaData = IndexMetaData.builder("test")
11641166
.settings(Settings.builder()

test/framework/src/main/java/org/elasticsearch/index/shard/IndexShardTestCase.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ protected IndexShard newShard(ShardRouting routing, ShardPath shardPath, IndexMe
375375
indexSettings.getSettings(), "index");
376376
mapperService.merge(indexMetaData, MapperService.MergeReason.MAPPING_RECOVERY);
377377
SimilarityService similarityService = new SimilarityService(indexSettings, null, Collections.emptyMap());
378-
final Engine.Warmer warmer = reader -> {};
378+
final Engine.Warmer warmer = createTestWarmer(indexSettings);
379379
ClusterSettings clusterSettings = new ClusterSettings(nodeSettings, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS);
380380
CircuitBreakerService breakerService = new HierarchyCircuitBreakerService(nodeSettings, clusterSettings);
381381
indexShard = new IndexShard(
@@ -860,4 +860,17 @@ public static Translog getTranslog(IndexShard shard) {
860860
public static ReplicationTracker getReplicationTracker(IndexShard indexShard) {
861861
return indexShard.getReplicationTracker();
862862
}
863+
864+
public static Engine.Warmer createTestWarmer(IndexSettings indexSettings) {
865+
return reader -> {
866+
// This isn't a warmer but sometimes verify the content in the reader
867+
if (randomBoolean()) {
868+
try {
869+
EngineTestCase.assertAtMostOneLuceneDocumentPerSequenceNumber(indexSettings, reader);
870+
} catch (IOException e) {
871+
throw new AssertionError(e);
872+
}
873+
}
874+
};
875+
}
863876
}

0 commit comments

Comments
 (0)