mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 02:14:54 +00:00
[test] Introduce strict deprecation mode for REST tests (#34338)
#33708 introduced a strict deprecation mode that makes a REST request fail if there is a warning header in the response returned by Elasticsearch (usually a deprecation message signaling that a feature or a field has been deprecated). This change adds the strict deprecation mode into the REST integration tests, and makes the tests fail if a deprecated feature is used. Also any test using a deprecated feature has been modified to pass the build. The YAML integration tests already analyzed HTTP warnings so they do not use this mode, keeping their "expected vs actual" behavior.
This commit is contained in:
parent
76240e6bbe
commit
d5ad3de42e
@ -60,6 +60,7 @@ import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.greaterThan;
|
||||
import static org.hamcrest.Matchers.notNullValue;
|
||||
import static org.hamcrest.Matchers.startsWith;
|
||||
|
||||
/**
|
||||
* Tests to run before and after a full cluster restart. This is run twice,
|
||||
@ -75,7 +76,7 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
|
||||
private String index;
|
||||
|
||||
@Before
|
||||
public void setIndex() {
|
||||
public void setIndex() throws IOException {
|
||||
index = getTestName().toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
@ -283,7 +284,8 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
|
||||
if (isRunningAgainstOldCluster()) {
|
||||
XContentBuilder mappingsAndSettings = jsonBuilder();
|
||||
mappingsAndSettings.startObject();
|
||||
mappingsAndSettings.field("template", index);
|
||||
mappingsAndSettings.field("index_patterns", index);
|
||||
mappingsAndSettings.field("order", "1000");
|
||||
{
|
||||
mappingsAndSettings.startObject("settings");
|
||||
mappingsAndSettings.field("number_of_shards", 1);
|
||||
@ -361,6 +363,7 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
|
||||
client().performRequest(updateSettingsRequest);
|
||||
|
||||
Request shrinkIndexRequest = new Request("PUT", "/" + index + "/_shrink/" + shrunkenIndex);
|
||||
shrinkIndexRequest.addParameter("copy_settings", "true");
|
||||
shrinkIndexRequest.setJsonEntity("{\"settings\": {\"index.number_of_shards\": 1}}");
|
||||
client().performRequest(shrinkIndexRequest);
|
||||
|
||||
@ -844,7 +847,7 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
|
||||
|
||||
// Stick a template into the cluster so we can see it after the restore
|
||||
XContentBuilder templateBuilder = JsonXContent.contentBuilder().startObject();
|
||||
templateBuilder.field("template", "evil_*"); // Don't confuse other tests by applying the template
|
||||
templateBuilder.field("index_patterns", "evil_*"); // Don't confuse other tests by applying the template
|
||||
templateBuilder.startObject("settings"); {
|
||||
templateBuilder.field("number_of_shards", 1);
|
||||
}
|
||||
@ -949,9 +952,23 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
|
||||
assertEquals(singletonList(tookOnVersion.toString()), XContentMapValues.extractValue("snapshots.version", listSnapshotResponse));
|
||||
|
||||
// Remove the routing setting and template so we can test restoring them.
|
||||
Request clearRoutingFromSettings = new Request("PUT", "/_cluster/settings");
|
||||
clearRoutingFromSettings.setJsonEntity("{\"persistent\":{\"cluster.routing.allocation.exclude.test_attr\": null}}");
|
||||
client().performRequest(clearRoutingFromSettings);
|
||||
try {
|
||||
Request clearRoutingFromSettings = new Request("PUT", "/_cluster/settings");
|
||||
clearRoutingFromSettings.setJsonEntity("{\"persistent\":{\"cluster.routing.allocation.exclude.test_attr\": null}}");
|
||||
client().performRequest(clearRoutingFromSettings);
|
||||
} catch (ResponseException e) {
|
||||
if (e.getResponse().hasWarnings()
|
||||
&& (isRunningAgainstOldCluster() == false || getOldClusterVersion().onOrAfter(Version.V_6_5_0))) {
|
||||
e.getResponse().getWarnings().stream().forEach(warning -> {
|
||||
assertThat(warning, containsString(
|
||||
"setting was deprecated in Elasticsearch and will be removed in a future release! "
|
||||
+ "See the breaking changes documentation for the next major version."));
|
||||
assertThat(warning, startsWith("[search.remote."));
|
||||
});
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
client().performRequest(new Request("DELETE", "/_template/test_template"));
|
||||
|
||||
// Restore
|
||||
|
@ -196,7 +196,7 @@ public class QueryBuilderBWCIT extends AbstractFullClusterRestartTestCase {
|
||||
QueryBuilder expectedQueryBuilder = (QueryBuilder) CANDIDATES.get(i)[1];
|
||||
Request request = new Request("GET", "/" + index + "/_search");
|
||||
request.setJsonEntity("{\"query\": {\"ids\": {\"values\": [\"" + Integer.toString(i) + "\"]}}, " +
|
||||
"\"docvalue_fields\" : [\"query.query_builder_field\"]}");
|
||||
"\"docvalue_fields\": [{\"field\":\"query.query_builder_field\", \"format\":\"use_field_mapping\"}]}");
|
||||
Response rsp = client().performRequest(request);
|
||||
assertEquals(200, rsp.getStatusLine().getStatusCode());
|
||||
Map<?, ?> hitRsp = (Map<?, ?>) ((List<?>) ((Map<?, ?>)toMap(rsp).get("hits")).get("hits")).get(0);
|
||||
|
@ -20,12 +20,18 @@ package org.elasticsearch.upgrades;
|
||||
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.elasticsearch.common.Booleans;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.client.Request;
|
||||
import org.elasticsearch.client.Response;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
/**
|
||||
* Basic test that indexed documents survive the rolling restart. See
|
||||
* {@link RecoveryIT} for much more in depth testing of the mechanism
|
||||
@ -60,6 +66,26 @@ public class IndexingIT extends AbstractRollingTestCase {
|
||||
}
|
||||
|
||||
if (CLUSTER_TYPE == ClusterType.OLD) {
|
||||
{
|
||||
Version minimumIndexCompatibilityVersion = Version.CURRENT.minimumIndexCompatibilityVersion();
|
||||
assertThat("this branch is not needed if we aren't compatible with 6.0",
|
||||
minimumIndexCompatibilityVersion.onOrBefore(Version.V_6_0_0), equalTo(true));
|
||||
if (minimumIndexCompatibilityVersion.before(Version.V_7_0_0_alpha1)) {
|
||||
XContentBuilder template = jsonBuilder();
|
||||
template.startObject();
|
||||
{
|
||||
template.field("index_patterns", "*");
|
||||
template.startObject("settings");
|
||||
template.field("number_of_shards", 5);
|
||||
template.endObject();
|
||||
}
|
||||
template.endObject();
|
||||
Request createTemplate = new Request("PUT", "/_template/template");
|
||||
createTemplate.setJsonEntity(Strings.toString(template));
|
||||
client().performRequest(createTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
Request createTestIndex = new Request("PUT", "/test_index");
|
||||
createTestIndex.setJsonEntity("{\"settings\": {\"index.number_of_replicas\": 0}}");
|
||||
client().performRequest(createTestIndex);
|
||||
|
@ -577,9 +577,18 @@ public abstract class ESRestTestCase extends ESTestCase {
|
||||
protected RestClient buildClient(Settings settings, HttpHost[] hosts) throws IOException {
|
||||
RestClientBuilder builder = RestClient.builder(hosts);
|
||||
configureClient(builder, settings);
|
||||
builder.setStrictDeprecationMode(getStrictDeprecationMode());
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the used REST client should return any response containing at
|
||||
* least one warning header as a failure.
|
||||
*/
|
||||
protected boolean getStrictDeprecationMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected static void configureClient(RestClientBuilder builder, Settings settings) throws IOException {
|
||||
String keystorePath = settings.get(TRUSTSTORE_PATH);
|
||||
if (keystorePath != null) {
|
||||
|
@ -408,4 +408,9 @@ public abstract class ESClientYamlSuiteTestCase extends ESRestTestCase {
|
||||
configureClient(builder, restClientSettings());
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean getStrictDeprecationMode() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -20,13 +20,43 @@
|
||||
package org.elasticsearch.upgrades;
|
||||
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.client.Request;
|
||||
import org.elasticsearch.common.Booleans;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.test.rest.ESRestTestCase;
|
||||
import org.junit.Before;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
public abstract class AbstractFullClusterRestartTestCase extends ESRestTestCase {
|
||||
|
||||
private final boolean runningAgainstOldCluster = Booleans.parseBoolean(System.getProperty("tests.is_old_cluster"));
|
||||
|
||||
@Before
|
||||
public void init() throws IOException {
|
||||
assertThat("we don't need this branch if we aren't compatible with 6.0",
|
||||
Version.CURRENT.minimumIndexCompatibilityVersion().onOrBefore(Version.V_6_0_0), equalTo(true));
|
||||
if (isRunningAgainstOldCluster() && getOldClusterVersion().before(Version.V_7_0_0_alpha1)) {
|
||||
XContentBuilder template = jsonBuilder();
|
||||
template.startObject();
|
||||
{
|
||||
template.field("index_patterns", "*");
|
||||
template.field("order", "0");
|
||||
template.startObject("settings");
|
||||
template.field("number_of_shards", 5);
|
||||
template.endObject();
|
||||
}
|
||||
template.endObject();
|
||||
Request createTemplate = new Request("PUT", "/_template/template");
|
||||
createTemplate.setJsonEntity(Strings.toString(template));
|
||||
client().performRequest(createTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
public final boolean isRunningAgainstOldCluster() {
|
||||
return runningAgainstOldCluster;
|
||||
}
|
||||
|
@ -195,7 +195,7 @@ public class PainlessDomainSplitIT extends ESRestTestCase {
|
||||
String mapAsJson = Strings.toString(jsonBuilder().map(params));
|
||||
logger.info("params={}", mapAsJson);
|
||||
|
||||
Request searchRequest = new Request("GET", "/painless/test/_search");
|
||||
Request searchRequest = new Request("GET", "/painless/_search");
|
||||
searchRequest.setJsonEntity(
|
||||
"{\n" +
|
||||
" \"query\" : {\n" +
|
||||
@ -205,7 +205,7 @@ public class PainlessDomainSplitIT extends ESRestTestCase {
|
||||
" \"domain_split\" : {\n" +
|
||||
" \"script\" : {\n" +
|
||||
" \"lang\": \"painless\",\n" +
|
||||
" \"inline\": \"" +
|
||||
" \"source\": \"" +
|
||||
" return domainSplit(params['host']); \",\n" +
|
||||
" \"params\": " + mapAsJson + "\n" +
|
||||
" }\n" +
|
||||
|
@ -7,12 +7,18 @@ package org.elasticsearch.upgrades;
|
||||
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.elasticsearch.common.Booleans;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.client.Request;
|
||||
import org.elasticsearch.client.Response;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
/**
|
||||
* Basic test that indexed documents survive the rolling restart.
|
||||
* <p>
|
||||
@ -45,6 +51,26 @@ public class IndexingIT extends AbstractUpgradeTestCase {
|
||||
}
|
||||
|
||||
if (CLUSTER_TYPE == ClusterType.OLD) {
|
||||
{
|
||||
Version minimumIndexCompatibilityVersion = Version.CURRENT.minimumIndexCompatibilityVersion();
|
||||
assertThat("this branch is not needed if we aren't compatible with 6.0",
|
||||
minimumIndexCompatibilityVersion.onOrBefore(Version.V_6_0_0), equalTo(true));
|
||||
if (minimumIndexCompatibilityVersion.before(Version.V_7_0_0_alpha1)) {
|
||||
XContentBuilder template = jsonBuilder();
|
||||
template.startObject();
|
||||
{
|
||||
template.field("index_patterns", "*");
|
||||
template.startObject("settings");
|
||||
template.field("number_of_shards", 5);
|
||||
template.endObject();
|
||||
}
|
||||
template.endObject();
|
||||
Request createTemplate = new Request("PUT", "/_template/template");
|
||||
createTemplate.setJsonEntity(Strings.toString(template));
|
||||
client().performRequest(createTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
Request createTestIndex = new Request("PUT", "/test_index");
|
||||
createTestIndex.setJsonEntity("{\"settings\": {\"index.number_of_replicas\": 0}}");
|
||||
client().performRequest(createTestIndex);
|
||||
|
@ -13,6 +13,8 @@ import org.elasticsearch.client.RequestOptions;
|
||||
import org.elasticsearch.client.Response;
|
||||
import org.elasticsearch.client.ResponseException;
|
||||
import org.elasticsearch.client.RestClient;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.test.rest.yaml.ObjectPath;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -20,10 +22,33 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
public class TokenBackwardsCompatibilityIT extends AbstractUpgradeTestCase {
|
||||
|
||||
public void testGeneratingTokenInOldCluster() throws Exception {
|
||||
assumeTrue("this test should only run against the old cluster", CLUSTER_TYPE == ClusterType.OLD);
|
||||
{
|
||||
Version minimumIndexCompatibilityVersion = Version.CURRENT.minimumIndexCompatibilityVersion();
|
||||
assertThat("this branch is not needed if we aren't compatible with 6.0",
|
||||
minimumIndexCompatibilityVersion.onOrBefore(Version.V_6_0_0), equalTo(true));
|
||||
if (minimumIndexCompatibilityVersion.before(Version.V_7_0_0_alpha1)) {
|
||||
XContentBuilder template = jsonBuilder();
|
||||
template.startObject();
|
||||
{
|
||||
template.field("index_patterns", "*");
|
||||
template.startObject("settings");
|
||||
template.field("number_of_shards", 5);
|
||||
template.endObject();
|
||||
}
|
||||
template.endObject();
|
||||
Request createTemplate = new Request("PUT", "/_template/template");
|
||||
createTemplate.setJsonEntity(Strings.toString(template));
|
||||
client().performRequest(createTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
Request createTokenRequest = new Request("POST", "_xpack/security/oauth2/token");
|
||||
createTokenRequest.setJsonEntity(
|
||||
"{\n" +
|
||||
|
Loading…
x
Reference in New Issue
Block a user