Skip to content

Commit 71a39d1

Browse files
authored
Make sure that BWC tests run successfully, even with types deprecation messages. (#36511)
1 parent 9ac7359 commit 71a39d1

File tree

9 files changed

+78
-96
lines changed

9 files changed

+78
-96
lines changed

qa/full-cluster-restart/src/test/java/org/elasticsearch/upgrades/FullClusterRestartIT.java

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import org.apache.http.util.EntityUtils;
2323
import org.elasticsearch.Version;
2424
import org.elasticsearch.client.Request;
25-
import org.elasticsearch.client.RequestOptions;
2625
import org.elasticsearch.client.Response;
2726
import org.elasticsearch.client.ResponseException;
2827
import org.elasticsearch.client.RestClient;
29-
import org.elasticsearch.test.rest.TypesRemovalWarningsHandler;
28+
import org.elasticsearch.rest.action.document.RestGetAction;
29+
import org.elasticsearch.rest.action.search.RestExplainAction;
3030
import org.elasticsearch.cluster.metadata.IndexMetaData;
3131
import org.elasticsearch.common.Booleans;
3232
import org.elasticsearch.common.CheckedFunction;
@@ -82,7 +82,6 @@ public void setIndex() throws IOException {
8282
index = getTestName().toLowerCase(Locale.ROOT);
8383
}
8484

85-
8685
public void testSearch() throws Exception {
8786
int count;
8887
if (isRunningAgainstOldCluster()) {
@@ -96,7 +95,7 @@ public void testSearch() throws Exception {
9695
}
9796
{
9897
mappingsAndSettings.startObject("mappings");
99-
mappingsAndSettings.startObject("_doc");
98+
mappingsAndSettings.startObject("doc");
10099
mappingsAndSettings.startObject("properties");
101100
{
102101
mappingsAndSettings.startObject("string");
@@ -162,7 +161,7 @@ public void testNewReplicasWork() throws Exception {
162161
}
163162
{
164163
mappingsAndSettings.startObject("mappings");
165-
mappingsAndSettings.startObject("_doc");
164+
mappingsAndSettings.startObject("doc");
166165
mappingsAndSettings.startObject("properties");
167166
{
168167
mappingsAndSettings.startObject("field");
@@ -233,7 +232,7 @@ public void testAliasWithBadName() throws Exception {
233232
}
234233
{
235234
mappingsAndSettings.startObject("mappings");
236-
mappingsAndSettings.startObject("_doc");
235+
mappingsAndSettings.startObject("doc");
237236
mappingsAndSettings.startObject("properties");
238237
{
239238
mappingsAndSettings.startObject("key");
@@ -336,7 +335,7 @@ public void testShrink() throws IOException {
336335
mappingsAndSettings.startObject();
337336
{
338337
mappingsAndSettings.startObject("mappings");
339-
mappingsAndSettings.startObject("_doc");
338+
mappingsAndSettings.startObject("doc");
340339
mappingsAndSettings.startObject("properties");
341340
{
342341
mappingsAndSettings.startObject("field");
@@ -404,7 +403,7 @@ public void testShrinkAfterUpgrade() throws IOException {
404403
mappingsAndSettings.startObject();
405404
{
406405
mappingsAndSettings.startObject("mappings");
407-
mappingsAndSettings.startObject("_doc");
406+
mappingsAndSettings.startObject("doc");
408407
mappingsAndSettings.startObject("properties");
409408
{
410409
mappingsAndSettings.startObject("field");
@@ -492,7 +491,7 @@ public void testRollover() throws IOException {
492491
bulk.append("{\"index\":{}}\n");
493492
bulk.append("{\"test\":\"test\"}\n");
494493
}
495-
Request bulkRequest = new Request("POST", "/" + index + "_write/_doc/_bulk");
494+
Request bulkRequest = new Request("POST", "/" + index + "_write/doc/_bulk");
496495
bulkRequest.setJsonEntity(bulk.toString());
497496
bulkRequest.addParameter("refresh", "");
498497
assertThat(EntityUtils.toString(client().performRequest(bulkRequest).getEntity()), containsString("\"errors\":false"));
@@ -571,19 +570,15 @@ void assertAllSearchWorks(int count) throws IOException {
571570
String type = (String) bestHit.get("_type");
572571
String id = (String) bestHit.get("_id");
573572

574-
Request explanationRequest = new Request("GET", "/" + index + "/" + type + "/" + id + "/_explain");
575-
explanationRequest.setJsonEntity("{ \"query\": { \"match_all\" : {} }}");
576-
577-
RequestOptions.Builder explanationOptions = RequestOptions.DEFAULT.toBuilder();
578-
explanationOptions.setWarningsHandler(TypesRemovalWarningsHandler.INSTANCE);
579-
explanationRequest.setOptions(explanationOptions);
580-
581-
String explanation = toStr(client().performRequest(explanationRequest));
573+
Request explainRequest = new Request("GET", "/" + index + "/" + type + "/" + id + "/_explain");
574+
explainRequest.setJsonEntity("{ \"query\": { \"match_all\" : {} }}");
575+
explainRequest.setOptions(expectWarnings(RestExplainAction.TYPES_DEPRECATION_MESSAGE));
576+
String explanation = toStr(client().performRequest(explainRequest));
582577
assertFalse("Could not find payload boost in explanation\n" + explanation, explanation.contains("payloadBoost"));
583578

584579
// Make sure the query can run on the whole index
585580
Request searchRequest = new Request("GET", "/" + index + "/_search");
586-
searchRequest.setEntity(explanationRequest.getEntity());
581+
searchRequest.setEntity(explainRequest.getEntity());
587582
searchRequest.addParameter("explain", "true");
588583
Map<?, ?> matchAllResponse = entityAsMap(client().performRequest(searchRequest));
589584
assertNoFailures(matchAllResponse);
@@ -628,11 +623,13 @@ void assertRealtimeGetWorks() throws IOException {
628623
Map<?, ?> hit = (Map<?, ?>) ((List<?>)(XContentMapValues.extractValue("hits.hits", searchResponse))).get(0);
629624
String docId = (String) hit.get("_id");
630625

631-
Request updateRequest = new Request("POST", "/" + index + "/_doc/" + docId + "/_update");
626+
Request updateRequest = new Request("POST", "/" + index + "/doc/" + docId + "/_update");
632627
updateRequest.setJsonEntity("{ \"doc\" : { \"foo\": \"bar\"}}");
633628
client().performRequest(updateRequest);
634629

635-
Map<String, Object> getRsp = entityAsMap(client().performRequest(new Request("GET", "/" + index + "/_doc/" + docId)));
630+
Request getRequest = new Request("GET", "/" + index + "/doc/" + docId);
631+
getRequest.setOptions(expectWarnings(RestGetAction.TYPES_DEPRECATION_MESSAGE));
632+
Map<String, Object> getRsp = entityAsMap(client().performRequest(getRequest));
636633
Map<?, ?> source = (Map<?, ?>) getRsp.get("_source");
637634
assertTrue("doc does not contain 'foo' key: " + source, source.containsKey("foo"));
638635

@@ -685,7 +682,7 @@ int extractTotalHits(Map<?, ?> response) {
685682
* Tests that a single document survives. Super basic smoke test.
686683
*/
687684
public void testSingleDoc() throws IOException {
688-
String docLocation = "/" + index + "/_doc/1";
685+
String docLocation = "/" + index + "/doc/1";
689686
String doc = "{\"test\": \"test\"}";
690687

691688
if (isRunningAgainstOldCluster()) {
@@ -694,7 +691,10 @@ public void testSingleDoc() throws IOException {
694691
client().performRequest(createDoc);
695692
}
696693

697-
assertThat(toStr(client().performRequest(new Request("GET", docLocation))), containsString(doc));
694+
695+
Request request = new Request("GET", docLocation);
696+
request.setOptions(expectWarnings(RestGetAction.TYPES_DEPRECATION_MESSAGE));
697+
assertThat(toStr(client().performRequest(request)), containsString(doc));
698698
}
699699

700700
/**
@@ -872,7 +872,7 @@ public void testSnapshotRestore() throws IOException {
872872
}
873873
templateBuilder.endObject();
874874
templateBuilder.startObject("mappings"); {
875-
templateBuilder.startObject("_doc"); {
875+
templateBuilder.startObject("doc"); {
876876
templateBuilder.startObject("_source"); {
877877
templateBuilder.field("enabled", true);
878878
}
@@ -982,7 +982,7 @@ public void testSoftDeletes() throws Exception {
982982
int numDocs = between(10, 100);
983983
for (int i = 0; i < numDocs; i++) {
984984
String doc = Strings.toString(JsonXContent.contentBuilder().startObject().field("field", "v1").endObject());
985-
Request request = new Request("POST", "/" + index + "/_doc/" + i);
985+
Request request = new Request("POST", "/" + index + "/doc/" + i);
986986
request.setJsonEntity(doc);
987987
client().performRequest(request);
988988
if (rarely()) {
@@ -995,11 +995,11 @@ public void testSoftDeletes() throws Exception {
995995
for (int i = 0; i < numDocs; i++) {
996996
if (randomBoolean()) {
997997
String doc = Strings.toString(JsonXContent.contentBuilder().startObject().field("field", "v2").endObject());
998-
Request request = new Request("POST", "/" + index + "/_doc/" + i);
998+
Request request = new Request("POST", "/" + index + "/doc/" + i);
999999
request.setJsonEntity(doc);
10001000
client().performRequest(request);
10011001
} else if (randomBoolean()) {
1002-
client().performRequest(new Request("DELETE", "/" + index + "/_doc/" + i));
1002+
client().performRequest(new Request("DELETE", "/" + index + "/doc/" + i));
10031003
liveDocs--;
10041004
}
10051005
}
@@ -1065,7 +1065,7 @@ private void checkSnapshot(String snapshotName, int count, Version tookOnVersion
10651065
bulk.append("{\"index\":{\"_id\":\"").append(count + i).append("\"}}\n");
10661066
bulk.append("{\"test\":\"test\"}\n");
10671067
}
1068-
Request writeToRestoredRequest = new Request("POST", "/restored_" + index + "/_doc/_bulk");
1068+
Request writeToRestoredRequest = new Request("POST", "/restored_" + index + "/doc/_bulk");
10691069
writeToRestoredRequest.addParameter("refresh", "true");
10701070
writeToRestoredRequest.setJsonEntity(bulk.toString());
10711071
assertThat(EntityUtils.toString(client().performRequest(writeToRestoredRequest).getEntity()), containsString("\"errors\":false"));
@@ -1097,7 +1097,7 @@ private void checkSnapshot(String snapshotName, int count, Version tookOnVersion
10971097
expectedTemplate.put("index_patterns", singletonList("evil_*"));
10981098
}
10991099
expectedTemplate.put("settings", singletonMap("index", singletonMap("number_of_shards", "1")));
1100-
expectedTemplate.put("mappings", singletonMap("_doc", singletonMap("_source", singletonMap("enabled", true))));
1100+
expectedTemplate.put("mappings", singletonMap("doc", singletonMap("_source", singletonMap("enabled", true))));
11011101
expectedTemplate.put("order", 0);
11021102
Map<String, Object> aliases = new HashMap<>();
11031103
aliases.put("alias1", emptyMap());
@@ -1118,7 +1118,7 @@ private void indexRandomDocuments(int count, boolean flushAllowed, boolean saveI
11181118
logger.info("Indexing {} random documents", count);
11191119
for (int i = 0; i < count; i++) {
11201120
logger.debug("Indexing document [{}]", i);
1121-
Request createDocument = new Request("POST", "/" + index + "/_doc/" + i);
1121+
Request createDocument = new Request("POST", "/" + index + "/doc/" + i);
11221122
createDocument.setJsonEntity(Strings.toString(docSupplier.apply(i)));
11231123
client().performRequest(createDocument);
11241124
if (rarely()) {
@@ -1143,15 +1143,16 @@ private void saveInfoDocument(String type, String value) throws IOException {
11431143
infoDoc.field("value", value);
11441144
infoDoc.endObject();
11451145
// Only create the first version so we know how many documents are created when the index is first created
1146-
Request request = new Request("PUT", "/info/_doc/" + index + "_" + type);
1146+
Request request = new Request("PUT", "/info/doc/" + index + "_" + type);
11471147
request.addParameter("op_type", "create");
11481148
request.setJsonEntity(Strings.toString(infoDoc));
11491149
client().performRequest(request);
11501150
}
11511151

11521152
private String loadInfoDocument(String type) throws IOException {
1153-
Request request = new Request("GET", "/info/_doc/" + index + "_" + type);
1153+
Request request = new Request("GET", "/info/doc/" + index + "_" + type);
11541154
request.addParameter("filter_path", "_source");
1155+
request.setOptions(expectWarnings(RestGetAction.TYPES_DEPRECATION_MESSAGE));
11551156
String doc = toStr(client().performRequest(request));
11561157
Matcher m = Pattern.compile("\"value\":\"(.+)\"").matcher(doc);
11571158
assertTrue(doc, m.find());

qa/mixed-cluster/src/test/java/org/elasticsearch/backwards/IndexingIT.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.elasticsearch.common.settings.Settings;
2929
import org.elasticsearch.common.xcontent.json.JsonXContent;
3030
import org.elasticsearch.index.seqno.SeqNoStats;
31+
import org.elasticsearch.rest.action.document.RestGetAction;
3132
import org.elasticsearch.test.rest.ESRestTestCase;
3233
import org.elasticsearch.test.rest.yaml.ObjectPath;
3334

@@ -45,7 +46,7 @@ public class IndexingIT extends ESRestTestCase {
4546
private int indexDocs(String index, final int idStart, final int numDocs) throws IOException {
4647
for (int i = 0; i < numDocs; i++) {
4748
final int id = idStart + i;
48-
Request request = new Request("PUT", index + "/_doc/" + id);
49+
Request request = new Request("PUT", index + "/doc/" + id);
4950
request.setJsonEntity("{\"test\": \"test_" + randomAlphaOfLength(2) + "\"}");
5051
assertOK(client().performRequest(request));
5152
}
@@ -284,8 +285,10 @@ private void assertCount(final String index, final String preference, final int
284285
}
285286

286287
private void assertVersion(final String index, final int docId, final String preference, final int expectedVersion) throws IOException {
287-
Request request = new Request("GET", index + "/_doc/" + docId);
288+
Request request = new Request("GET", index + "/doc/" + docId);
288289
request.addParameter("preference", preference);
290+
request.setOptions(expectWarnings(RestGetAction.TYPES_DEPRECATION_MESSAGE));
291+
289292
final Response response = client().performRequest(request);
290293
assertOK(response);
291294
final int actualVersion = Integer.parseInt(ObjectPath.createFromResponse(response).evaluate("_version").toString());

server/src/main/java/org/elasticsearch/rest/action/document/RestGetAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
public class RestGetAction extends BaseRestHandler {
4747
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(
4848
LogManager.getLogger(RestGetAction.class));
49-
static final String TYPES_DEPRECATION_MESSAGE = "[types removal] Specifying types in " +
49+
public static final String TYPES_DEPRECATION_MESSAGE = "[types removal] Specifying types in " +
5050
"document get requests is deprecated, use the /{index}/_doc/{id} endpoint instead.";
5151

5252
public RestGetAction(final Settings settings, final RestController controller) {

server/src/main/java/org/elasticsearch/rest/action/search/RestExplainAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
public class RestExplainAction extends BaseRestHandler {
4545
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(
4646
LogManager.getLogger(RestExplainAction.class));
47-
static final String TYPES_DEPRECATION_MESSAGE = "[types removal] " +
47+
public static final String TYPES_DEPRECATION_MESSAGE = "[types removal] " +
4848
"Specifying a type in explain requests is deprecated.";
4949

5050
public RestExplainAction(Settings settings, RestController controller) {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ public void testTermsQuery() throws Exception {
8383
assertEquals(new MatchNoDocsQuery(), query);
8484
}
8585

86-
8786
static DirectoryReader openReaderWithNewType(String type, IndexWriter writer) throws IOException {
8887
Document doc = new Document();
8988
StringField typeField = new StringField(TypeFieldMapper.NAME, type, Store.NO);

test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,18 @@ public static RequestOptions expectVersionSpecificWarnings(Consumer<VersionSensi
245245
expectationsSetter.accept(warningsHandler);
246246
builder.setWarningsHandler(warningsHandler);
247247
return builder.build();
248-
}
248+
}
249+
250+
/**
251+
* Creates request options designed to be used when making a call that can return warnings, for example a
252+
* deprecated request. The options will ensure that the given warnings are returned if all nodes are on
253+
* {@link Version#CURRENT} and will allow (but not require) the warnings if any node is running an older version.
254+
*
255+
* @param warnings The expected warnings.
256+
*/
257+
public static RequestOptions expectWarnings(String... warnings) {
258+
return expectVersionSpecificWarnings(consumer -> consumer.current(warnings));
259+
}
249260

250261
/**
251262
* Construct an HttpHost from the given host and port

test/framework/src/main/java/org/elasticsearch/test/rest/TypesRemovalWarningsHandler.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)