mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-06-28 01:22:26 -04:00
Re-enable VerifyVersionConstantsIT (#125605)
This commit is contained in:
parent
a6f685cc2a
commit
65751062f7
8 changed files with 140 additions and 118 deletions
|
@ -61,7 +61,6 @@ public abstract class RestrictedBuildApiService implements BuildService<Restrict
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-with-all-dependencies");
|
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-with-all-dependencies");
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-plugins");
|
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-plugins");
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":qa:system-indices");
|
map.put(LegacyRestTestBasePlugin.class, ":qa:system-indices");
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":qa:verify-version-constants");
|
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration");
|
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration");
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs");
|
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs");
|
||||||
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity");
|
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity");
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import org.elasticsearch.gradle.Version
|
import org.elasticsearch.gradle.Version
|
||||||
|
import org.elasticsearch.gradle.VersionProperties
|
||||||
import org.elasticsearch.gradle.internal.doc.DocSnippetTask
|
import org.elasticsearch.gradle.internal.doc.DocSnippetTask
|
||||||
import static org.elasticsearch.gradle.testclusters.TestDistribution.DEFAULT
|
import static org.elasticsearch.gradle.testclusters.TestDistribution.DEFAULT
|
||||||
|
|
||||||
|
@ -2059,3 +2060,29 @@ setups['setup-snapshots'] = setups['setup-repository'] + '''
|
||||||
setups['atomic_red_regsvr32'].replace('#atomic_red_data#', events)
|
setups['atomic_red_regsvr32'].replace('#atomic_red_data#', events)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.register('verifyDocsLuceneVersion') {
|
||||||
|
doFirst {
|
||||||
|
File docsVersionsFile = file('Versions.asciidoc')
|
||||||
|
List<String> versionLines = docsVersionsFile.readLines('UTF-8')
|
||||||
|
String docsLuceneVersion = null
|
||||||
|
for (String line : versionLines) {
|
||||||
|
if (line.startsWith(':lucene_version:')) {
|
||||||
|
docsLuceneVersion = line.split()[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (docsLuceneVersion == null) {
|
||||||
|
throw new GradleException('Could not find lucene version in docs version file')
|
||||||
|
}
|
||||||
|
String expectedLuceneVersion = VersionProperties.lucene
|
||||||
|
// remove potential -snapshot-{gitrev} suffix
|
||||||
|
expectedLuceneVersion -= ~/-snapshot-[0-9a-f]+$/
|
||||||
|
if (docsLuceneVersion != expectedLuceneVersion) {
|
||||||
|
throw new GradleException("Lucene version in docs [${docsLuceneVersion}] does not match version.properties [${expectedLuceneVersion}]")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named('check') {
|
||||||
|
dependsOn 'verifyDocsLuceneVersion'
|
||||||
|
}
|
||||||
|
|
|
@ -7,57 +7,14 @@
|
||||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.elasticsearch.gradle.VersionProperties
|
|
||||||
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
|
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
|
||||||
|
|
||||||
apply plugin: 'elasticsearch.internal-testclusters'
|
apply plugin: 'elasticsearch.internal-java-rest-test'
|
||||||
apply plugin: 'elasticsearch.standalone-rest-test'
|
|
||||||
apply plugin: 'elasticsearch.bwc-test'
|
apply plugin: 'elasticsearch.bwc-test'
|
||||||
|
|
||||||
dependencies {
|
|
||||||
testImplementation project(':modules:rest-root')
|
|
||||||
}
|
|
||||||
|
|
||||||
buildParams.bwcVersions.withIndexCompatible { bwcVersion, baseName ->
|
buildParams.bwcVersions.withIndexCompatible { bwcVersion, baseName ->
|
||||||
def baseCluster = testClusters.register(baseName) {
|
tasks.register(bwcTaskName(bwcVersion), StandaloneRestIntegTestTask) {
|
||||||
version = bwcVersion.toString()
|
usesBwcDistribution(bwcVersion)
|
||||||
setting 'xpack.security.enabled', 'true'
|
systemProperty 'tests.cluster_version', bwcVersion
|
||||||
user username: 'admin', password: 'admin-password', role: 'superuser'
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.register("${baseName}#integTest", StandaloneRestIntegTestTask) {
|
|
||||||
useCluster baseCluster
|
|
||||||
nonInputProperties.systemProperty('tests.rest.cluster', baseCluster.map(c -> c.allHttpSocketURI.join(",")))
|
|
||||||
nonInputProperties.systemProperty('tests.clustername', "${->baseCluster.get().getName()}")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.register(bwcTaskName(bwcVersion)) {
|
|
||||||
dependsOn "${baseName}#integTest"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("verifyDocsLuceneVersion") {
|
|
||||||
doFirst {
|
|
||||||
File docsVersionsFile = layout.settingsDirectory.file('docs/Versions.asciidoc').asFile
|
|
||||||
List<String> versionLines = docsVersionsFile.readLines('UTF-8')
|
|
||||||
String docsLuceneVersion = null
|
|
||||||
for (String line : versionLines) {
|
|
||||||
if (line.startsWith(':lucene_version:')) {
|
|
||||||
docsLuceneVersion = line.split()[1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (docsLuceneVersion == null) {
|
|
||||||
throw new GradleException('Could not find lucene version in docs version file')
|
|
||||||
}
|
|
||||||
String expectedLuceneVersion = VersionProperties.lucene
|
|
||||||
// remove potential -snapshot-{gitrev} suffix
|
|
||||||
expectedLuceneVersion -= ~/-snapshot-[0-9a-f]+$/
|
|
||||||
if (docsLuceneVersion != expectedLuceneVersion) {
|
|
||||||
throw new GradleException("Lucene version in docs [${docsLuceneVersion}] does not match version.properties [${expectedLuceneVersion}]")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.named("check").configure {
|
|
||||||
dependsOn "verifyDocsLuceneVersion"
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the "Elastic License
|
||||||
|
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
||||||
|
* Public License v 1"; you may not use this file except in compliance with, at
|
||||||
|
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
||||||
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.elasticsearch.qa.verify_version_constants;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.Request;
|
||||||
|
import org.elasticsearch.client.Response;
|
||||||
|
import org.elasticsearch.index.IndexVersion;
|
||||||
|
import org.elasticsearch.index.IndexVersions;
|
||||||
|
import org.elasticsearch.test.cluster.ElasticsearchCluster;
|
||||||
|
import org.elasticsearch.test.cluster.local.distribution.DistributionType;
|
||||||
|
import org.elasticsearch.test.rest.ESRestTestCase;
|
||||||
|
import org.elasticsearch.test.rest.ObjectPath;
|
||||||
|
import org.hamcrest.Matchers;
|
||||||
|
import org.junit.ClassRule;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.equalTo;
|
||||||
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
|
|
||||||
|
public class VerifyVersionConstantsIT extends ESRestTestCase {
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
|
||||||
|
.distribution(DistributionType.DEFAULT)
|
||||||
|
.version(System.getProperty("tests.cluster_version"))
|
||||||
|
.setting("xpack.security.enabled", "false")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
public void testLuceneVersionConstant() throws IOException, ParseException {
|
||||||
|
Response response = client().performRequest(new Request("GET", "/"));
|
||||||
|
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
||||||
|
ObjectPath objectPath = ObjectPath.createFromResponse(response);
|
||||||
|
|
||||||
|
String luceneVersionString = objectPath.evaluate("version.lucene_version").toString();
|
||||||
|
org.apache.lucene.util.Version luceneVersion = org.apache.lucene.util.Version.parse(luceneVersionString);
|
||||||
|
|
||||||
|
IndexVersion indexVersion = getIndexVersion();
|
||||||
|
assertThat(indexVersion.luceneVersion(), equalTo(luceneVersion));
|
||||||
|
}
|
||||||
|
|
||||||
|
private IndexVersion getIndexVersion() throws IOException {
|
||||||
|
IndexVersion indexVersion = null;
|
||||||
|
|
||||||
|
Request request = new Request("GET", "_nodes");
|
||||||
|
request.addParameter("filter_path", "nodes.*.index_version,nodes.*.name");
|
||||||
|
Response response = client().performRequest(request);
|
||||||
|
ObjectPath objectPath = ObjectPath.createFromResponse(response);
|
||||||
|
Map<String, Object> nodeMap = objectPath.evaluate("nodes");
|
||||||
|
for (String id : nodeMap.keySet()) {
|
||||||
|
Number ix = objectPath.evaluate("nodes." + id + ".index_version");
|
||||||
|
IndexVersion version;
|
||||||
|
if (ix != null) {
|
||||||
|
version = IndexVersion.fromId(ix.intValue());
|
||||||
|
} else {
|
||||||
|
// it doesn't have index version (pre 8.11) - just infer it from the release version
|
||||||
|
version = parseLegacyVersion(System.getProperty("tests.cluster_version")).map(x -> IndexVersion.fromId(x.id()))
|
||||||
|
.orElse(IndexVersions.MINIMUM_COMPATIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (indexVersion == null) {
|
||||||
|
indexVersion = version;
|
||||||
|
} else {
|
||||||
|
String name = objectPath.evaluate("nodes." + id + ".name");
|
||||||
|
assertThat("Node " + name + " has a different index version to other nodes", version, Matchers.equalTo(indexVersion));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertThat("Index version could not be read", indexVersion, notNullValue());
|
||||||
|
return indexVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean preserveClusterUponCompletion() {
|
||||||
|
/*
|
||||||
|
* We don't perform any writes to the cluster so there won't be anything
|
||||||
|
* to clean up. Also, our cleanup code is really only compatible with
|
||||||
|
* *write* compatible versions but this runs with *index* compatible
|
||||||
|
* versions.
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTestRestCluster() {
|
||||||
|
return cluster.getHttpAddresses();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,70 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
||||||
* or more contributor license agreements. Licensed under the "Elastic License
|
|
||||||
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
|
||||||
* Public License v 1"; you may not use this file except in compliance with, at
|
|
||||||
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
|
||||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.qa.verify_version_constants;
|
|
||||||
|
|
||||||
import org.apache.lucene.tests.util.LuceneTestCase;
|
|
||||||
import org.elasticsearch.Version;
|
|
||||||
import org.elasticsearch.client.Request;
|
|
||||||
import org.elasticsearch.client.Response;
|
|
||||||
import org.elasticsearch.common.settings.SecureString;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.common.util.concurrent.ThreadContext;
|
|
||||||
import org.elasticsearch.index.IndexVersion;
|
|
||||||
import org.elasticsearch.test.rest.ESRestTestCase;
|
|
||||||
import org.elasticsearch.test.rest.ObjectPath;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.text.ParseException;
|
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.equalTo;
|
|
||||||
import static org.hamcrest.Matchers.lessThan;
|
|
||||||
|
|
||||||
@LuceneTestCase.AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/97736")
|
|
||||||
public class VerifyVersionConstantsIT extends ESRestTestCase {
|
|
||||||
|
|
||||||
public void testLuceneVersionConstant() throws IOException, ParseException {
|
|
||||||
Response response = client().performRequest(new Request("GET", "/"));
|
|
||||||
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
|
||||||
ObjectPath objectPath = ObjectPath.createFromResponse(response);
|
|
||||||
|
|
||||||
String luceneVersionString = objectPath.evaluate("version.lucene_version").toString();
|
|
||||||
org.apache.lucene.util.Version luceneVersion = org.apache.lucene.util.Version.parse(luceneVersionString);
|
|
||||||
|
|
||||||
IndexVersion indexVersion;
|
|
||||||
Object indexVersionString = objectPath.evaluate("version.index_version");
|
|
||||||
if (indexVersionString != null) {
|
|
||||||
indexVersion = IndexVersion.fromId(Integer.parseInt(indexVersionString.toString()));
|
|
||||||
} else {
|
|
||||||
String elasticsearchVersionString = objectPath.evaluate("version.number").toString();
|
|
||||||
Version elasticsearchVersion = Version.fromString(elasticsearchVersionString.replace("-SNAPSHOT", ""));
|
|
||||||
assertThat(elasticsearchVersion, lessThan(Version.V_8_10_0));
|
|
||||||
indexVersion = IndexVersion.fromId(elasticsearchVersion.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
assertThat(indexVersion.luceneVersion(), equalTo(luceneVersion));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean preserveClusterUponCompletion() {
|
|
||||||
/*
|
|
||||||
* We don't perform any writes to the cluster so there won't be anything
|
|
||||||
* to clean up. Also, our cleanup code is really only compatible with
|
|
||||||
* *write* compatible versions but this runs with *index* compatible
|
|
||||||
* versions.
|
|
||||||
*/
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Settings restClientSettings() {
|
|
||||||
String token = basicAuthHeaderValue("admin", new SecureString("admin-password".toCharArray()));
|
|
||||||
return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", token).build();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -85,6 +85,7 @@ public class IndexVersions {
|
||||||
public static final IndexVersion V_8_3_0 = def(8_03_00_99, Version.LUCENE_9_2_0);
|
public static final IndexVersion V_8_3_0 = def(8_03_00_99, Version.LUCENE_9_2_0);
|
||||||
public static final IndexVersion V_8_4_0 = def(8_04_00_99, Version.LUCENE_9_3_0);
|
public static final IndexVersion V_8_4_0 = def(8_04_00_99, Version.LUCENE_9_3_0);
|
||||||
public static final IndexVersion V_8_5_0 = def(8_05_00_99, Version.LUCENE_9_4_1);
|
public static final IndexVersion V_8_5_0 = def(8_05_00_99, Version.LUCENE_9_4_1);
|
||||||
|
public static final IndexVersion V_8_5_3 = def(8_05_03_99, Version.LUCENE_9_4_2);
|
||||||
public static final IndexVersion V_8_6_0 = def(8_06_00_99, Version.LUCENE_9_4_2);
|
public static final IndexVersion V_8_6_0 = def(8_06_00_99, Version.LUCENE_9_4_2);
|
||||||
public static final IndexVersion V_8_7_0 = def(8_07_00_99, Version.LUCENE_9_5_0);
|
public static final IndexVersion V_8_7_0 = def(8_07_00_99, Version.LUCENE_9_5_0);
|
||||||
public static final IndexVersion V_8_8_0 = def(8_08_00_99, Version.LUCENE_9_6_0);
|
public static final IndexVersion V_8_8_0 = def(8_08_00_99, Version.LUCENE_9_6_0);
|
||||||
|
|
|
@ -288,6 +288,12 @@ public abstract class AbstractLocalSpecBuilder<T extends LocalSpecBuilder<?>> im
|
||||||
return cast(this);
|
return cast(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T version(String version) {
|
||||||
|
this.version = Version.fromString(version);
|
||||||
|
return cast(this);
|
||||||
|
}
|
||||||
|
|
||||||
public Version getVersion() {
|
public Version getVersion() {
|
||||||
return inherit(() -> parent.getVersion(), version);
|
return inherit(() -> parent.getVersion(), version);
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,11 @@ interface LocalSpecBuilder<T extends LocalSpecBuilder<?>> {
|
||||||
*/
|
*/
|
||||||
T version(Version version);
|
T version(Version version);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the version of Elasticsearch. Defaults to {@link Version#CURRENT}.
|
||||||
|
*/
|
||||||
|
T version(String version);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a system property to node JVM arguments.
|
* Adds a system property to node JVM arguments.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue