Skip to content

Commit 53e4b72

Browse files
committed
Change RuntimeFieldSourceProviderOptimizationTests to no longer test block loading, but field data loading instead. In the latter case, the optimization that this test is testing will remain.
1 parent 21d47f9 commit 53e4b72

File tree

1 file changed

+22
-54
lines changed

1 file changed

+22
-54
lines changed

server/src/test/java/org/elasticsearch/index/mapper/RuntimeFieldSourceProviderOptimizationTests.java

Lines changed: 22 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,15 @@
1717
import org.apache.lucene.store.Directory;
1818
import org.elasticsearch.common.bytes.BytesArray;
1919
import org.elasticsearch.common.settings.Settings;
20-
import org.elasticsearch.index.IndexSettings;
20+
import org.elasticsearch.index.fielddata.LongScriptDocValues;
21+
import org.elasticsearch.index.fielddata.LongScriptFieldData;
2122
import org.elasticsearch.script.LongFieldScript;
22-
import org.elasticsearch.search.lookup.SearchLookup;
2323
import org.elasticsearch.test.ESSingleNodeTestCase;
2424
import org.elasticsearch.xcontent.XContentType;
2525

2626
import java.io.IOException;
2727
import java.util.Locale;
2828
import java.util.Map;
29-
import java.util.Set;
3029

3130
import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder;
3231
import static org.hamcrest.Matchers.equalTo;
@@ -41,7 +40,8 @@ public void testWithSourceProviderOptimization() throws IOException {
4140
var mapping = jsonBuilder().startObject().startObject("runtime").startObject("field");
4241
mapping.field("type", "long");
4342
mapping.endObject().endObject().endObject();
44-
var indexService = createIndex("test-index", Settings.builder().put("index.mapping.source.mode", "synthetic").build(), mapping);
43+
var settings = Settings.builder().put("index.mapping.source.mode", "synthetic").build();
44+
var indexService = createIndex("test-index", settings, mapping);
4545

4646
int numDocs = 256;
4747
try (Directory directory = newDirectory(); IndexWriter iw = new IndexWriter(directory, new IndexWriterConfig())) {
@@ -77,12 +77,15 @@ public void testWithSourceProviderOptimization() throws IOException {
7777
var termQuery = fieldType.termQuery(32, context);
7878
assertThat(searcher.count(termQuery), equalTo(1));
7979

80-
// Test that runtime based block loader works as expected with the optimization:
81-
var blockLoader = fieldType.blockLoader(blContext(context.lookup()));
82-
var columnReader = blockLoader.columnAtATimeReader(leafReaderContext);
83-
var block = (TestBlock) columnReader.read(TestBlock.factory(), TestBlock.docs(leafReaderContext), 0, false);
84-
for (int i = 0; i < block.size(); i++) {
85-
assertThat(block.get(i), equalTo((long) i));
80+
// Test that script runtime field data works as expected with the optimization:
81+
var fieldData = (LongScriptFieldData) context.getForField(fieldType, MappedFieldType.FielddataOperation.SCRIPT);
82+
var leafFieldData = fieldData.load(leafReaderContext);
83+
var sortedNumericDocValues = (LongScriptDocValues) leafFieldData.getLongValues();
84+
for (int i = 0; i < 256; i++) {
85+
boolean result = sortedNumericDocValues.advanceExact(i);
86+
assertThat(result, equalTo(true));
87+
assertThat(sortedNumericDocValues.docValueCount(), equalTo(1));
88+
assertThat(sortedNumericDocValues.nextValue(), equalTo((long) i));
8689
}
8790
}
8891
}
@@ -125,53 +128,18 @@ public void testWithoutSourceProviderOptimization() throws IOException {
125128
var termQuery = fieldType.termQuery(32, context);
126129
assertThat(searcher.count(termQuery), equalTo(1));
127130

128-
// Test that runtime based block loader works as expected with the optimization:
129-
var blockLoader = fieldType.blockLoader(blContext(context.lookup()));
130-
var columnReader = blockLoader.columnAtATimeReader(leafReaderContext);
131-
var block = (TestBlock) columnReader.read(TestBlock.factory(), TestBlock.docs(leafReaderContext), 0, false);
132-
for (int i = 0; i < block.size(); i++) {
133-
assertThat(block.get(i), equalTo((long) i));
131+
// Test that script runtime field data works as expected with the optimization:
132+
var fieldData = (LongScriptFieldData) context.getForField(fieldType, MappedFieldType.FielddataOperation.SCRIPT);
133+
var leafFieldData = fieldData.load(leafReaderContext);
134+
var sortedNumericDocValues = (LongScriptDocValues) leafFieldData.getLongValues();
135+
for (int i = 0; i < 256; i++) {
136+
boolean result = sortedNumericDocValues.advanceExact(i);
137+
assertThat(result, equalTo(true));
138+
assertThat(sortedNumericDocValues.docValueCount(), equalTo(1));
139+
assertThat(sortedNumericDocValues.nextValue(), equalTo((long) i));
134140
}
135141
}
136142
}
137143
}
138144

139-
static MappedFieldType.BlockLoaderContext blContext(SearchLookup lookup) {
140-
return new MappedFieldType.BlockLoaderContext() {
141-
@Override
142-
public String indexName() {
143-
throw new UnsupportedOperationException();
144-
}
145-
146-
@Override
147-
public IndexSettings indexSettings() {
148-
throw new UnsupportedOperationException();
149-
}
150-
151-
@Override
152-
public MappedFieldType.FieldExtractPreference fieldExtractPreference() {
153-
return MappedFieldType.FieldExtractPreference.NONE;
154-
}
155-
156-
@Override
157-
public SearchLookup lookup() {
158-
return lookup;
159-
}
160-
161-
@Override
162-
public Set<String> sourcePaths(String name) {
163-
throw new UnsupportedOperationException();
164-
}
165-
166-
@Override
167-
public String parentField(String field) {
168-
throw new UnsupportedOperationException();
169-
}
170-
171-
@Override
172-
public FieldNamesFieldMapper.FieldNamesFieldType fieldNames() {
173-
return FieldNamesFieldMapper.FieldNamesFieldType.get(true);
174-
}
175-
};
176-
}
177145
}

0 commit comments

Comments
 (0)