Skip to content

Commit 9495dae

Browse files
committed
Increase test coverage
Signed-off-by: Gao Binlong <gbinlong@amazon.com>
1 parent 456e8ba commit 9495dae

2 files changed

Lines changed: 151 additions & 87 deletions

File tree

server/src/test/java/org/opensearch/index/IndexSettingsTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,16 @@ public void testUnmapFieldsBeyondTotalFieldsLimitSetting() {
805805
);
806806
settings = new IndexSettings(metadata, Settings.EMPTY);
807807
assertTrue(settings.getUnmapFieldsBeyondTotalFieldsLimit());
808+
809+
Settings.Builder newSettings = Settings.builder()
810+
.put(
811+
Settings.builder()
812+
.put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
813+
.put(INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), false)
814+
.build()
815+
);
816+
settings.updateIndexMetadata(newIndexMeta("index", newSettings.build()));
817+
assertFalse(settings.getUnmapFieldsBeyondTotalFieldsLimit());
808818
}
809819

810820
public void testRemoteTranslogStoreDefaultSetting() {

server/src/test/java/org/opensearch/index/mapper/DocumentParserTests.java

Lines changed: 141 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,85 +1201,166 @@ public void testDynamicStrictAllowTemplatesValue() throws Exception {
12011201
}
12021202

12031203
public void testDynamicValueWithUnmapFieldsBeyondTotalLimit() throws Exception {
1204-
Settings settings = Settings.builder()
1205-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1206-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1207-
.build();
1208-
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1209-
b.field("dynamic", "true");
1210-
b.startObject("properties");
1211-
{
1212-
b.startObject("foo");
1213-
b.field("type", "keyword");
1214-
b.endObject();
1215-
b.startObject("bar");
1216-
b.field("type", "keyword");
1217-
b.endObject();
1218-
b.startObject("zoo");
1219-
b.field("type", "keyword");
1204+
{
1205+
Settings settings = Settings.builder()
1206+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1207+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1208+
.build();
1209+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1210+
b.field("dynamic", "true");
1211+
b.startObject("properties");
1212+
{
1213+
b.startObject("foo");
1214+
b.field("type", "keyword");
1215+
b.endObject();
1216+
b.startObject("bar");
1217+
b.field("type", "keyword");
1218+
b.endObject();
1219+
b.startObject("zoo");
1220+
b.field("type", "keyword");
1221+
b.endObject();
1222+
}
12201223
b.endObject();
12211224
}
1222-
b.endObject();
1225+
1226+
), settings);
1227+
1228+
ParsedDocument doc = mapper.parse(source(b -> b.field("test1", "baz")));
1229+
assertEquals(0, doc.rootDoc().getFields("test1").length);
12231230
}
12241231

1225-
), settings);
1232+
{
1233+
Settings settings = Settings.builder()
1234+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1235+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1236+
.build();
1237+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1238+
b.field("dynamic", "true");
1239+
b.startObject("properties");
1240+
{
1241+
b.startObject("foo");
1242+
b.field("type", "keyword");
1243+
b.endObject();
1244+
b.startObject("bar");
1245+
b.field("type", "keyword");
1246+
b.endObject();
1247+
}
1248+
b.endObject();
1249+
}
12261250

1227-
ParsedDocument doc = mapper.parse(source(b -> b.field("test1", "baz")));
1228-
assertEquals(0, doc.rootDoc().getFields("test1").length);
1251+
), settings);
1252+
1253+
// Add a string type field will add two fields into the mapping(text+keyword), so the field `test`
1254+
// will not be added to the mapping because of the total fields limit
1255+
ParsedDocument doc = mapper.parse(source(b -> b.field("test", "baz")));
1256+
assertEquals(0, doc.rootDoc().getFields("test").length);
1257+
}
12291258
}
12301259

12311260
public void testDynamicLongArrayWithUnmapFieldsBeyondTotalLimit() throws Exception {
1232-
Settings settings = Settings.builder()
1233-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1234-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1235-
.build();
1236-
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1237-
b.field("dynamic", "true");
1238-
b.startObject("properties");
1239-
{
1240-
b.startObject("foo");
1241-
b.field("type", "keyword");
1242-
b.endObject();
1243-
b.startObject("bar");
1244-
b.field("type", "keyword");
1261+
{
1262+
Settings settings = Settings.builder()
1263+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1264+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1265+
.build();
1266+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1267+
b.field("dynamic", "true");
1268+
b.startObject("properties");
1269+
{
1270+
b.startObject("foo");
1271+
b.field("type", "keyword");
1272+
b.endObject();
1273+
b.startObject("bar");
1274+
b.field("type", "keyword");
1275+
b.endObject();
1276+
b.startObject("zoo");
1277+
b.field("type", "keyword");
1278+
b.endObject();
1279+
}
12451280
b.endObject();
1246-
b.startObject("zoo");
1247-
b.field("type", "keyword");
1281+
}), settings);
1282+
1283+
ParsedDocument doc = mapper.parse(source(b -> b.startArray("test").value(0).value(1).endArray()));
1284+
assertEquals(0, doc.rootDoc().getFields("test").length);
1285+
}
1286+
1287+
{
1288+
Settings settings = Settings.builder()
1289+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1290+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1291+
.build();
1292+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1293+
b.field("dynamic", "true");
1294+
b.startObject("properties");
1295+
{
1296+
b.startObject("foo");
1297+
b.field("type", "keyword");
1298+
b.endObject();
1299+
b.startObject("bar");
1300+
b.field("type", "keyword");
1301+
b.endObject();
1302+
}
12481303
b.endObject();
1249-
}
1250-
b.endObject();
1251-
}), settings);
1304+
}), settings);
12521305

1253-
ParsedDocument doc = mapper.parse(source(b -> b.startArray("test").value(0).value(1).endArray()));
1254-
assertEquals(0, doc.rootDoc().getFields("test").length);
1306+
ParsedDocument doc = mapper.parse(source(b -> b.startArray("test").value(0).value(1).endArray()));
1307+
assertEquals(2, doc.rootDoc().getFields("test").length);
1308+
}
12551309
}
12561310

12571311
public void testDynamicObjectWithUnmapFieldsBeyondTotalLimit() throws Exception {
1258-
Settings settings = Settings.builder()
1259-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1260-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1261-
.build();
1262-
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1263-
b.field("dynamic", "true");
1264-
b.startObject("properties");
1265-
{
1266-
b.startObject("foo");
1267-
b.field("type", "keyword");
1268-
b.endObject();
1269-
b.startObject("bar");
1270-
b.field("type", "keyword");
1271-
b.endObject();
1272-
b.startObject("zoo");
1273-
b.field("type", "keyword");
1312+
{
1313+
Settings settings = Settings.builder()
1314+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1315+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1316+
.build();
1317+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1318+
b.field("dynamic", "true");
1319+
b.startObject("properties");
1320+
{
1321+
b.startObject("foo");
1322+
b.field("type", "keyword");
1323+
b.endObject();
1324+
b.startObject("bar");
1325+
b.field("type", "keyword");
1326+
b.endObject();
1327+
b.startObject("zoo");
1328+
b.field("type", "keyword");
1329+
b.endObject();
1330+
}
12741331
b.endObject();
12751332
}
1276-
b.endObject();
1333+
1334+
), settings);
1335+
1336+
ParsedDocument doc = mapper.parse(source(b -> b.startObject("test").field("test1", "baz").endObject()));
1337+
assertEquals(0, doc.rootDoc().getFields("test.test1").length);
12771338
}
12781339

1279-
), settings);
1340+
{
1341+
Settings settings = Settings.builder()
1342+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1343+
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1344+
.build();
1345+
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1346+
b.field("dynamic", "true");
1347+
b.startObject("properties");
1348+
{
1349+
b.startObject("foo");
1350+
b.field("type", "keyword");
1351+
b.endObject();
1352+
b.startObject("bar");
1353+
b.field("type", "keyword");
1354+
b.endObject();
1355+
}
1356+
b.endObject();
1357+
}
12801358

1281-
ParsedDocument doc = mapper.parse(source(b -> b.startObject("test").field("test1", "baz").endObject()));
1282-
assertEquals(0, doc.rootDoc().getFields("test.test1").length);
1359+
), settings);
1360+
1361+
ParsedDocument doc = mapper.parse(source(b -> b.startObject("test").field("test1", "baz").endObject()));
1362+
assertEquals(0, doc.rootDoc().getFields("test.test1").length);
1363+
}
12831364
}
12841365

12851366
public void testDynamicStrictAllowTemplatesValueWithUnmapFieldsBeyondTotalLimit() throws Exception {
@@ -1408,33 +1489,6 @@ public void testDynamicStrictAllowTemplatesObjectWithUnmapFieldsBeyondTotalLimit
14081489
assertEquals(0, doc.rootDoc().getFields("test.test1").length);
14091490
}
14101491

1411-
public void testCannotAddNewFieldWithUnmapFieldsBeyondTotalLimit() throws Exception {
1412-
Settings settings = Settings.builder()
1413-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING.getKey(), 3)
1414-
.put(MapperService.INDEX_MAPPING_TOTAL_FIELDS_UNMAP_FIELDS_BEYONGD_LIMIT_SETTING.getKey(), true)
1415-
.build();
1416-
DocumentMapper mapper = createDocumentMapper(topMapping(b -> {
1417-
b.field("dynamic", "true");
1418-
b.startObject("properties");
1419-
{
1420-
b.startObject("foo");
1421-
b.field("type", "keyword");
1422-
b.endObject();
1423-
b.startObject("bar");
1424-
b.field("type", "keyword");
1425-
b.endObject();
1426-
}
1427-
b.endObject();
1428-
}
1429-
1430-
), settings);
1431-
1432-
// Add a string type field will add two fields into the mapping(text+keyword), so the field `test`
1433-
// will not be added to the mapping because of the total fields limit
1434-
ParsedDocument doc = mapper.parse(source(b -> b.field("test", "baz")));
1435-
assertEquals(0, doc.rootDoc().getFields("test").length);
1436-
}
1437-
14381492
public void testDynamicStrictAllowTemplatesNull() throws Exception {
14391493
DocumentMapper mapper = createDocumentMapper(topMapping(b -> b.field("dynamic", "strict_allow_templates")));
14401494
StrictDynamicMappingException exception = expectThrows(

0 commit comments

Comments
 (0)