Skip to content

Commit 647d5c7

Browse files
Refactor tests to consider verifying every metafields with all index modes
1 parent 494aeb2 commit 647d5c7

File tree

1 file changed

+45
-10
lines changed

1 file changed

+45
-10
lines changed

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

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import org.elasticsearch.common.bytes.BytesReference;
1616
import org.elasticsearch.common.compress.CompressedXContent;
1717
import org.elasticsearch.common.settings.Settings;
18+
import org.elasticsearch.core.CheckedFunction;
1819
import org.elasticsearch.index.IndexMode;
20+
import org.elasticsearch.index.IndexSettings;
1921
import org.elasticsearch.index.IndexVersion;
2022
import org.elasticsearch.index.IndexVersions;
2123
import org.elasticsearch.index.mapper.MapperService.MergeReason;
@@ -27,6 +29,8 @@
2729
import java.io.IOException;
2830
import java.util.List;
2931
import java.util.Map;
32+
import java.util.function.BiFunction;
33+
import java.util.function.Consumer;
3034
import java.util.function.Function;
3135
import java.util.stream.Collectors;
3236
import java.util.stream.StreamSupport;
@@ -305,22 +309,53 @@ public void testMappingRecoverySkipFieldNameLengthLimit() throws Throwable {
305309

306310
public void testIsMetadataField() throws IOException {
307311
IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random());
308-
Settings settings = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, version).build();
309312

310-
MapperService mapperService = createMapperService(settings, mapping(b -> {}));
311-
assertFalse(mapperService.isMetadataField(randomAlphaOfLengthBetween(10, 15)));
313+
CheckedFunction<IndexMode, MapperService, IOException> initMapperService = (indexMode) -> {
314+
Settings.Builder settingsBuilder = Settings.builder()
315+
.put(IndexMetadata.SETTING_VERSION_CREATED, version)
316+
.put(IndexSettings.MODE.getKey(), indexMode);
312317

313-
for (String builtIn : IndicesModule.getBuiltInMetadataFields()) {
314-
if (NestedPathFieldMapper.NAME.equals(builtIn) && version.before(IndexVersions.V_8_0_0)) {
315-
continue; // Nested field does not exist in the 7x line
316-
}
317-
if (mapperService.getIndexSettings().getMode() == IndexMode.STANDARD && (builtIn.equals("_tsid") || builtIn.equals("_ts_routing_hash"))) {
318-
continue; // both these fields are not available in Standard index mode
318+
if (indexMode == IndexMode.TIME_SERIES) {
319+
settingsBuilder.put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "foo");
319320
}
320-
assertTrue("Expected " + builtIn + " to be a metadata field for version " + version, mapperService.isMetadataField(builtIn));
321+
322+
return createMapperService(settingsBuilder.build(), mapping(b -> {}));
323+
};
324+
325+
Consumer<MapperService> assertMapperService = initMapperServiceConsumer(version);
326+
327+
for (IndexMode indexMode : IndexMode.values()) {
328+
MapperService mapperService = initMapperService.apply(indexMode);
329+
assertMapperService.accept(mapperService);
321330
}
322331
}
323332

333+
private static Consumer<MapperService> initMapperServiceConsumer(IndexVersion version) {
334+
BiFunction<String, MapperService, Boolean> shouldSkipField = (field, mapperService) -> {
335+
if (NestedPathFieldMapper.NAME.equals(field) && version.before(IndexVersions.V_8_0_0)) {
336+
return true; // Nested field does not exist in the 7x line
337+
}
338+
339+
boolean isTimeSeriesField = field.equals("_tsid") || field.equals("_ts_routing_hash");
340+
// should only skip for these fields if index mode is set to time_series
341+
return isTimeSeriesField && mapperService.getIndexSettings().getMode().equals(IndexMode.TIME_SERIES) == false;
342+
};
343+
344+
return (mapperService) -> {
345+
assertFalse(mapperService.isMetadataField(randomAlphaOfLengthBetween(10, 15)));
346+
347+
for (String builtIn : IndicesModule.getBuiltInMetadataFields()) {
348+
if (shouldSkipField.apply(builtIn, mapperService)) {
349+
continue;
350+
}
351+
assertTrue(
352+
"Expected " + builtIn + " to be a metadata field for version " + version,
353+
mapperService.isMetadataField(builtIn)
354+
);
355+
}
356+
};
357+
}
358+
324359
public void testMappingUpdateChecks() throws IOException {
325360
MapperService mapperService = createMapperService(fieldMapping(b -> b.field("type", "text")));
326361

0 commit comments

Comments
 (0)