Skip to content

Commit 29e80ee

Browse files
authored
Remove index.mapping.single_type=false from core/tests (#25331)
This change cleans up core tests to not use `index.mapping.single_type=false` but instead where applicable use a single type or markt the index as created with a pre 6.x version. Relates to #24961
1 parent 343e757 commit 29e80ee

28 files changed

+514
-198
lines changed

core/src/test/java/org/elasticsearch/action/bulk/BulkWithUpdatesIT.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.elasticsearch.action.bulk;
2121

22+
import org.elasticsearch.Version;
2223
import org.elasticsearch.action.DocWriteResponse;
2324
import org.elasticsearch.action.admin.indices.alias.Alias;
2425
import org.elasticsearch.action.delete.DeleteRequest;
@@ -42,6 +43,7 @@
4243
import org.elasticsearch.test.ESIntegTestCase;
4344

4445
import java.util.ArrayList;
46+
import java.util.Arrays;
4547
import java.util.Collection;
4648
import java.util.Collections;
4749
import java.util.HashMap;
@@ -53,6 +55,8 @@
5355
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
5456

5557
import org.elasticsearch.script.ScriptType;
58+
import org.elasticsearch.test.InternalSettingsPlugin;
59+
5660
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
5761
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
5862
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
@@ -66,7 +70,7 @@ public class BulkWithUpdatesIT extends ESIntegTestCase {
6670

6771
@Override
6872
protected Collection<Class<? extends Plugin>> nodePlugins() {
69-
return Collections.singleton(CustomScriptPlugin.class);
73+
return Arrays.asList(InternalSettingsPlugin.class, CustomScriptPlugin.class);
7074
}
7175

7276
public static class CustomScriptPlugin extends MockScriptPlugin {
@@ -457,7 +461,7 @@ public void testBulkIndexingWhileInitializing() throws Exception {
457461
*/
458462
public void testBulkUpdateChildMissingParentRouting() throws Exception {
459463
assertAcked(prepareCreate("test")
460-
.setSettings("index.mapping.single_type", false)
464+
.setSettings("index.version.created", Version.V_5_6_0.id) // allows for multiple types
461465
.addMapping("parent", "{\"parent\":{}}", XContentType.JSON)
462466
.addMapping("child", "{\"child\": {\"_parent\": {\"type\": \"parent\"}}}", XContentType.JSON));
463467
ensureGreen();

core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataMappingServiceTests.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.cluster.metadata;
2020

21+
import org.elasticsearch.Version;
2122
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingClusterStateUpdateRequest;
2223
import org.elasticsearch.cluster.ClusterState;
2324
import org.elasticsearch.cluster.service.ClusterService;
@@ -27,15 +28,23 @@
2728
import org.elasticsearch.index.IndexService;
2829
import org.elasticsearch.index.mapper.DocumentMapper;
2930
import org.elasticsearch.index.mapper.MapperParsingException;
31+
import org.elasticsearch.plugins.Plugin;
3032
import org.elasticsearch.test.ESSingleNodeTestCase;
33+
import org.elasticsearch.test.InternalSettingsPlugin;
3134

35+
import java.util.Collection;
3236
import java.util.Collections;
3337

3438
import static org.hamcrest.Matchers.equalTo;
3539
import static org.hamcrest.Matchers.is;
3640

3741
public class MetaDataMappingServiceTests extends ESSingleNodeTestCase {
3842

43+
@Override
44+
protected Collection<Class<? extends Plugin>> getPlugins() {
45+
return Collections.singleton(InternalSettingsPlugin.class);
46+
}
47+
3948
// Tests _parent meta field logic, because part of the validation is in MetaDataMappingService
4049
public void testAddChildTypePointingToAlreadyExistingType() throws Exception {
4150
createIndex("test", Settings.EMPTY, "type", "field", "type=keyword");
@@ -54,7 +63,7 @@ public void testAddChildTypePointingToAlreadyExistingType() throws Exception {
5463
// Tests _parent meta field logic, because part of the validation is in MetaDataMappingService
5564
public void testAddExtraChildTypePointingToAlreadyParentExistingType() throws Exception {
5665
IndexService indexService = createIndex("test", client().admin().indices().prepareCreate("test")
57-
.setSettings("index.mapping.single_type", false)
66+
.setSettings("index.version.created", Version.V_5_6_0.id)
5867
.addMapping("parent")
5968
.addMapping("child1", "_parent", "type=parent")
6069
);

core/src/test/java/org/elasticsearch/gateway/RecoveryFromGatewayIT.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ public void testLatestVersionLoaded() throws Exception {
318318
// clean two nodes
319319
internalCluster().startNodes(2, Settings.builder().put("gateway.recover_after_nodes", 2).build());
320320

321-
assertAcked(client().admin().indices().prepareCreate("test").setSettings("index.mapping.single_type", false));
321+
assertAcked(client().admin().indices().prepareCreate("test"));
322322
client().prepareIndex("test", "type1", "1").setSource(jsonBuilder().startObject().field("field", "value1").endObject()).execute().actionGet();
323323
client().admin().indices().prepareFlush().execute().actionGet();
324324
client().prepareIndex("test", "type1", "2").setSource(jsonBuilder().startObject().field("field", "value2").endObject()).execute().actionGet();
@@ -350,10 +350,7 @@ public void testLatestVersionLoaded() throws Exception {
350350
assertHitCount(client().prepareSearch().setSize(0).setQuery(matchAllQuery()).execute().actionGet(), 3);
351351
}
352352

353-
logger.info("--> add some metadata, additional type and template");
354-
client().admin().indices().preparePutMapping("test").setType("type2")
355-
.setSource(jsonBuilder().startObject().startObject("type2").endObject().endObject())
356-
.execute().actionGet();
353+
logger.info("--> add some metadata and additional template");
357354
client().admin().indices().preparePutTemplate("template_1")
358355
.setTemplate("te*")
359356
.setOrder(0)
@@ -381,7 +378,6 @@ public void testLatestVersionLoaded() throws Exception {
381378
}
382379

383380
ClusterState state = client().admin().cluster().prepareState().execute().actionGet().getState();
384-
assertThat(state.metaData().index("test").mapping("type2"), notNullValue());
385381
assertThat(state.metaData().templates().get("template_1").patterns(), equalTo(Collections.singletonList("te*")));
386382
assertThat(state.metaData().index("test").getAliases().get("test_alias"), notNullValue());
387383
assertThat(state.metaData().index("test").getAliases().get("test_alias").filter(), notNullValue());

core/src/test/java/org/elasticsearch/get/GetActionIT.java

Lines changed: 96 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.elasticsearch.get;
2121

2222
import org.elasticsearch.ElasticsearchException;
23+
import org.elasticsearch.Version;
2324
import org.elasticsearch.action.DocWriteResponse;
2425
import org.elasticsearch.action.ShardOperationFailedException;
2526
import org.elasticsearch.action.admin.indices.alias.Alias;
@@ -38,9 +39,12 @@
3839
import org.elasticsearch.common.xcontent.XContentFactory;
3940
import org.elasticsearch.common.xcontent.XContentType;
4041
import org.elasticsearch.index.engine.VersionConflictEngineException;
42+
import org.elasticsearch.plugins.Plugin;
4143
import org.elasticsearch.test.ESIntegTestCase;
44+
import org.elasticsearch.test.InternalSettingsPlugin;
4245

4346
import java.io.IOException;
47+
import java.util.Collection;
4448
import java.util.Collections;
4549
import java.util.HashSet;
4650
import java.util.Set;
@@ -58,6 +62,11 @@
5862

5963
public class GetActionIT extends ESIntegTestCase {
6064

65+
@Override
66+
protected Collection<Class<? extends Plugin>> nodePlugins() {
67+
return Collections.singleton(InternalSettingsPlugin.class);
68+
}
69+
6170
public void testSimpleGet() {
6271
assertAcked(prepareCreate("test")
6372
.addMapping("type1", "field1", "type=keyword,store=true", "field2", "type=keyword,store=true")
@@ -246,15 +255,55 @@ public void testGetDocWithMultivaluedFields() throws Exception {
246255
.startObject("field").field("type", "text").field("store", true).endObject()
247256
.endObject()
248257
.endObject().endObject().string();
258+
assertAcked(prepareCreate("test")
259+
.addMapping("type1", mapping1, XContentType.JSON));
260+
ensureGreen();
261+
262+
GetResponse response = client().prepareGet("test", "type1", "1").get();
263+
assertThat(response.isExists(), equalTo(false));
264+
assertThat(response.isExists(), equalTo(false));
265+
266+
client().prepareIndex("test", "type1", "1")
267+
.setSource(jsonBuilder().startObject().array("field", "1", "2").endObject()).get();
268+
269+
response = client().prepareGet("test", "type1", "1").setStoredFields("field").get();
270+
assertThat(response.isExists(), equalTo(true));
271+
assertThat(response.getId(), equalTo("1"));
272+
assertThat(response.getType(), equalTo("type1"));
273+
Set<String> fields = new HashSet<>(response.getFields().keySet());
274+
assertThat(fields, equalTo(singleton("field")));
275+
assertThat(response.getFields().get("field").getValues().size(), equalTo(2));
276+
assertThat(response.getFields().get("field").getValues().get(0).toString(), equalTo("1"));
277+
assertThat(response.getFields().get("field").getValues().get(1).toString(), equalTo("2"));
278+
279+
// Now test values being fetched from stored fields.
280+
refresh();
281+
response = client().prepareGet("test", "type1", "1").setStoredFields("field").get();
282+
assertThat(response.isExists(), equalTo(true));
283+
assertThat(response.getId(), equalTo("1"));
284+
fields = new HashSet<>(response.getFields().keySet());
285+
assertThat(fields, equalTo(singleton("field")));
286+
assertThat(response.getFields().get("field").getValues().size(), equalTo(2));
287+
assertThat(response.getFields().get("field").getValues().get(0).toString(), equalTo("1"));
288+
assertThat(response.getFields().get("field").getValues().get(1).toString(), equalTo("2"));
289+
}
290+
291+
public void testGetDocWithMultivaluedFieldsMultiTypeBWC() throws Exception {
292+
assertTrue("remove this multi type test", Version.CURRENT.before(Version.fromString("7.0.0")));
293+
String mapping1 = XContentFactory.jsonBuilder().startObject().startObject("type1")
294+
.startObject("properties")
295+
.startObject("field").field("type", "text").field("store", true).endObject()
296+
.endObject()
297+
.endObject().endObject().string();
249298
String mapping2 = XContentFactory.jsonBuilder().startObject().startObject("type2")
250-
.startObject("properties")
251-
.startObject("field").field("type", "text").field("store", true).endObject()
252-
.endObject()
253-
.endObject().endObject().string();
299+
.startObject("properties")
300+
.startObject("field").field("type", "text").field("store", true).endObject()
301+
.endObject()
302+
.endObject().endObject().string();
254303
assertAcked(prepareCreate("test")
255-
.addMapping("type1", mapping1, XContentType.JSON)
256-
.addMapping("type2", mapping2, XContentType.JSON)
257-
.setSettings("index.refresh_interval", -1, "index.mapping.single_type", false));
304+
.addMapping("type1", mapping1, XContentType.JSON)
305+
.addMapping("type2", mapping2, XContentType.JSON)
306+
.setSettings("index.refresh_interval", -1, "index.version.created", Version.V_5_6_0.id)); // multi types in 5.6
258307
ensureGreen();
259308

260309
GetResponse response = client().prepareGet("test", "type1", "1").get();
@@ -263,10 +312,10 @@ public void testGetDocWithMultivaluedFields() throws Exception {
263312
assertThat(response.isExists(), equalTo(false));
264313

265314
client().prepareIndex("test", "type1", "1")
266-
.setSource(jsonBuilder().startObject().array("field", "1", "2").endObject()).get();
315+
.setSource(jsonBuilder().startObject().array("field", "1", "2").endObject()).get();
267316

268317
client().prepareIndex("test", "type2", "1")
269-
.setSource(jsonBuilder().startObject().array("field", "1", "2").endObject()).get();
318+
.setSource(jsonBuilder().startObject().array("field", "1", "2").endObject()).get();
270319

271320
response = client().prepareGet("test", "type1", "1").setStoredFields("field").get();
272321
assertThat(response.isExists(), equalTo(true));
@@ -524,12 +573,47 @@ public void testMultiGetWithVersion() throws Exception {
524573
assertThat(response.getResponses()[2].getResponse().getSourceAsMap().get("field").toString(), equalTo("value2"));
525574
}
526575

527-
public void testGetFieldsMetaData() throws Exception {
576+
public void testGetFieldsMetaDataWithRouting() throws Exception {
577+
assertAcked(prepareCreate("test")
578+
.addMapping("doc", "field1", "type=keyword,store=true")
579+
.addAlias(new Alias("alias"))
580+
.setSettings("index.refresh_interval", -1, "index.version.created", Version.V_5_6_0.id)); // multi types in 5.6
581+
582+
client().prepareIndex("test", "doc", "1")
583+
.setRouting("1")
584+
.setSource(jsonBuilder().startObject().field("field1", "value").endObject())
585+
.get();
586+
587+
GetResponse getResponse = client().prepareGet(indexOrAlias(), "doc", "1")
588+
.setRouting("1")
589+
.setStoredFields("field1")
590+
.get();
591+
assertThat(getResponse.isExists(), equalTo(true));
592+
assertThat(getResponse.getField("field1").isMetadataField(), equalTo(false));
593+
assertThat(getResponse.getField("field1").getValue().toString(), equalTo("value"));
594+
assertThat(getResponse.getField("_routing").isMetadataField(), equalTo(true));
595+
assertThat(getResponse.getField("_routing").getValue().toString(), equalTo("1"));
596+
597+
flush();
598+
599+
getResponse = client().prepareGet(indexOrAlias(), "doc", "1")
600+
.setStoredFields("field1")
601+
.setRouting("1")
602+
.get();
603+
assertThat(getResponse.isExists(), equalTo(true));
604+
assertThat(getResponse.getField("field1").isMetadataField(), equalTo(false));
605+
assertThat(getResponse.getField("field1").getValue().toString(), equalTo("value"));
606+
assertThat(getResponse.getField("_routing").isMetadataField(), equalTo(true));
607+
assertThat(getResponse.getField("_routing").getValue().toString(), equalTo("1"));
608+
}
609+
610+
public void testGetFieldsMetaDataWithParentChild() throws Exception {
611+
assertTrue("remove this multi type test", Version.CURRENT.before(Version.fromString("7.0.0")));
528612
assertAcked(prepareCreate("test")
529613
.addMapping("parent")
530614
.addMapping("my-type1", "_parent", "type=parent", "field1", "type=keyword,store=true")
531615
.addAlias(new Alias("alias"))
532-
.setSettings("index.refresh_interval", -1, "index.mapping.single_type", false));
616+
.setSettings("index.refresh_interval", -1, "index.version.created", Version.V_5_6_0.id)); // multi types in 5.6
533617

534618
client().prepareIndex("test", "my-type1", "1")
535619
.setRouting("1")
@@ -593,7 +677,7 @@ public void testGetFieldsNonLeafField() throws Exception {
593677

594678
public void testGetFieldsComplexField() throws Exception {
595679
assertAcked(prepareCreate("my-index")
596-
.setSettings("index.refresh_interval", -1, "index.mapping.single_type", false)
680+
.setSettings("index.refresh_interval", -1, "index.version.created", Version.V_5_6_0.id) // multi types in 5.6
597681
.addMapping("my-type2", jsonBuilder().startObject().startObject("my-type2").startObject("properties")
598682
.startObject("field1").field("type", "object").startObject("properties")
599683
.startObject("field2").field("type", "object").startObject("properties")

core/src/test/java/org/elasticsearch/index/mapper/DocumentParserTests.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,10 @@ public void testDotsWithDynamicNestedMapper() throws Exception {
151151

152152
public void testNestedHaveIdAndTypeFields() throws Exception {
153153
DocumentMapperParser mapperParser1 = createIndex("index1", Settings.builder()
154-
.put("index.mapping.single_type", false).build()
155-
).mapperService().documentMapperParser();
156-
DocumentMapperParser mapperParser2 = createIndex("index2", Settings.builder()
157-
.put("index.mapping.single_type", true).build()
154+
.put("index.version.created", Version.V_5_6_0) // allows for multiple types
155+
.build()
158156
).mapperService().documentMapperParser();
157+
DocumentMapperParser mapperParser2 = createIndex("index2").mapperService().documentMapperParser();
159158

160159
XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties");
161160
{

core/src/test/java/org/elasticsearch/index/mapper/DynamicMappingIT.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.index.mapper;
2020

21+
import org.elasticsearch.Version;
2122
import org.elasticsearch.action.DocWriteResponse;
2223
import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
2324
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
@@ -28,9 +29,12 @@
2829
import org.elasticsearch.common.collect.ImmutableOpenMap;
2930
import org.elasticsearch.common.settings.Settings;
3031
import org.elasticsearch.indices.TypeMissingException;
32+
import org.elasticsearch.plugins.Plugin;
3133
import org.elasticsearch.test.ESIntegTestCase;
34+
import org.elasticsearch.test.InternalSettingsPlugin;
3235

3336
import java.io.IOException;
37+
import java.util.Collection;
3438
import java.util.Collections;
3539
import java.util.Map;
3640
import java.util.concurrent.CountDownLatch;
@@ -42,6 +46,11 @@
4246

4347
public class DynamicMappingIT extends ESIntegTestCase {
4448

49+
@Override
50+
protected Collection<Class<? extends Plugin>> nodePlugins() {
51+
return Collections.singleton(InternalSettingsPlugin.class);
52+
}
53+
4554
public void testConflictingDynamicMappings() {
4655
// we don't use indexRandom because the order of requests is important here
4756
createIndex("index");
@@ -75,7 +84,21 @@ private static void assertMappingsHaveField(GetMappingsResponse mappings, String
7584
}
7685

7786
public void testMappingsPropagatedToMasterNodeImmediately() throws IOException {
78-
assertAcked(prepareCreate("index").setSettings("index.mapping.single_type", false));
87+
assertAcked(prepareCreate("index"));
88+
89+
// works when the type has been dynamically created
90+
client().prepareIndex("index", "type", "1").setSource("foo", 3).get();
91+
GetMappingsResponse mappings = client().admin().indices().prepareGetMappings("index").setTypes("type").get();
92+
assertMappingsHaveField(mappings, "index", "type", "foo");
93+
94+
// works if the type already existed
95+
client().prepareIndex("index", "type", "1").setSource("bar", "baz").get();
96+
mappings = client().admin().indices().prepareGetMappings("index").setTypes("type").get();
97+
assertMappingsHaveField(mappings, "index", "type", "bar");
98+
}
99+
100+
public void testMappingsPropagatedToMasterNodeImmediatelyMultiType() throws IOException {
101+
assertAcked(prepareCreate("index").setSettings("index.version.created", Version.V_5_6_0.id)); // allows for multiple types
79102

80103
// works when the type has been dynamically created
81104
client().prepareIndex("index", "type", "1").setSource("foo", 3).get();

0 commit comments

Comments
 (0)