Skip to content

Commit 338cf41

Browse files
committed
Restore WildcardFieldMapperTests#testBWCIndexVersion
This test has been removed with elastic#112570 but with the coming read-only support for v7 we need it back.
1 parent bdd6da5 commit 338cf41

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapperTests.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.elasticsearch.index.Index;
5252
import org.elasticsearch.index.IndexSettings;
5353
import org.elasticsearch.index.IndexVersion;
54+
import org.elasticsearch.index.IndexVersions;
5455
import org.elasticsearch.index.cache.bitset.BitsetFilterCache;
5556
import org.elasticsearch.index.fielddata.FieldDataContext;
5657
import org.elasticsearch.index.fielddata.IndexFieldData;
@@ -106,6 +107,7 @@ static SearchExecutionContext createMockSearchExecutionContext(boolean allowExpe
106107

107108
static final int MAX_FIELD_LENGTH = 30;
108109
static WildcardFieldMapper wildcardFieldType;
110+
static WildcardFieldMapper wildcardFieldType79;
109111
static KeywordFieldMapper keywordFieldType;
110112
private DirectoryReader rewriteReader;
111113
private BaseDirectoryWrapper rewriteDir;
@@ -127,6 +129,9 @@ public void setUp() throws Exception {
127129
builder.ignoreAbove(MAX_FIELD_LENGTH);
128130
wildcardFieldType = builder.build(MapperBuilderContext.root(false, false));
129131

132+
Builder builder79 = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, IndexVersions.V_7_9_0);
133+
wildcardFieldType79 = builder79.build(MapperBuilderContext.root(false, false));
134+
130135
org.elasticsearch.index.mapper.KeywordFieldMapper.Builder kwBuilder = new KeywordFieldMapper.Builder(
131136
KEYWORD_FIELD_NAME,
132137
IndexVersion.current()
@@ -207,6 +212,37 @@ public void testIgnoreAbove() throws IOException {
207212
assertTrue(fields.stream().anyMatch(field -> "field".equals(field.stringValue())));
208213
}
209214

215+
public void testBWCIndexVersion() throws IOException {
216+
// Create old format index using wildcard ngram analyzer used in 7.9 launch
217+
Directory dir = newDirectory();
218+
IndexWriterConfig iwc = newIndexWriterConfig(WildcardFieldMapper.WILDCARD_ANALYZER_7_9);
219+
iwc.setMergePolicy(newTieredMergePolicy(random()));
220+
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwc);
221+
222+
Document doc = new Document();
223+
LuceneDocument parseDoc = new LuceneDocument();
224+
addFields(parseDoc, doc, "a b");
225+
indexDoc(parseDoc, doc, iw);
226+
227+
iw.forceMerge(1);
228+
DirectoryReader reader = iw.getReader();
229+
IndexSearcher searcher = newSearcher(reader);
230+
iw.close();
231+
232+
// Unnatural circumstance - testing we fail if we were to use the new analyzer on old index
233+
Query oldWildcardFieldQuery = wildcardFieldType.fieldType().wildcardQuery("a b", null, null);
234+
TopDocs oldWildcardFieldTopDocs = searcher.search(oldWildcardFieldQuery, 10, Sort.INDEXORDER);
235+
assertThat(oldWildcardFieldTopDocs.totalHits.value(), equalTo(0L));
236+
237+
// Natural circumstance test we revert to the old analyzer for old indices
238+
Query wildcardFieldQuery = wildcardFieldType79.fieldType().wildcardQuery("a b", null, null);
239+
TopDocs wildcardFieldTopDocs = searcher.search(wildcardFieldQuery, 10, Sort.INDEXORDER);
240+
assertThat(wildcardFieldTopDocs.totalHits.value(), equalTo(1L));
241+
242+
reader.close();
243+
dir.close();
244+
}
245+
210246
// Test long query strings don't cause exceptions
211247
public void testTooBigQueryField() throws IOException {
212248
Directory dir = newDirectory();

0 commit comments

Comments
 (0)