Skip to content

Commit c14c79f

Browse files
committed
Re-enable VerifyVersionConstantsIT (elastic#125605)
(cherry picked from commit 6575106) # Conflicts: # qa/verify-version-constants/build.gradle
1 parent bb39781 commit c14c79f

File tree

8 files changed

+140
-119
lines changed

8 files changed

+140
-119
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ private static ListMultimap<Class<?>, String> createLegacyRestTestBasePluginUsag
6161
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-with-all-dependencies");
6262
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-plugins");
6363
map.put(LegacyRestTestBasePlugin.class, ":qa:system-indices");
64-
map.put(LegacyRestTestBasePlugin.class, ":qa:verify-version-constants");
6564
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration");
6665
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs");
6766
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity");

docs/build.gradle

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import org.elasticsearch.gradle.Version
2+
import org.elasticsearch.gradle.VersionProperties
23
import org.elasticsearch.gradle.internal.doc.DocSnippetTask
34
import static org.elasticsearch.gradle.testclusters.TestDistribution.DEFAULT
45

@@ -2048,3 +2049,29 @@ setups['setup-snapshots'] = setups['setup-repository'] + '''
20482049
setups['atomic_red_regsvr32'].replace('#atomic_red_data#', events)
20492050
}
20502051
}
2052+
2053+
tasks.register('verifyDocsLuceneVersion') {
2054+
doFirst {
2055+
File docsVersionsFile = file('Versions.asciidoc')
2056+
List<String> versionLines = docsVersionsFile.readLines('UTF-8')
2057+
String docsLuceneVersion = null
2058+
for (String line : versionLines) {
2059+
if (line.startsWith(':lucene_version:')) {
2060+
docsLuceneVersion = line.split()[1]
2061+
}
2062+
}
2063+
if (docsLuceneVersion == null) {
2064+
throw new GradleException('Could not find lucene version in docs version file')
2065+
}
2066+
String expectedLuceneVersion = VersionProperties.lucene
2067+
// remove potential -snapshot-{gitrev} suffix
2068+
expectedLuceneVersion -= ~/-snapshot-[0-9a-f]+$/
2069+
if (docsLuceneVersion != expectedLuceneVersion) {
2070+
throw new GradleException("Lucene version in docs [${docsLuceneVersion}] does not match version.properties [${expectedLuceneVersion}]")
2071+
}
2072+
}
2073+
}
2074+
2075+
tasks.named('check') {
2076+
dependsOn 'verifyDocsLuceneVersion'
2077+
}

qa/verify-version-constants/build.gradle

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,58 +7,14 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
import org.elasticsearch.gradle.VersionProperties
11-
import org.elasticsearch.gradle.internal.info.BuildParams
1210
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
1311

14-
apply plugin: 'elasticsearch.internal-testclusters'
15-
apply plugin: 'elasticsearch.standalone-rest-test'
12+
apply plugin: 'elasticsearch.internal-java-rest-test'
1613
apply plugin: 'elasticsearch.bwc-test'
1714

18-
dependencies {
19-
testImplementation project(':modules:rest-root')
20-
}
21-
2215
buildParams.bwcVersions.withIndexCompatible { bwcVersion, baseName ->
23-
def baseCluster = testClusters.register(baseName) {
24-
version = bwcVersion.toString()
25-
setting 'xpack.security.enabled', 'true'
26-
user username: 'admin', password: 'admin-password', role: 'superuser'
27-
}
28-
29-
tasks.register("${baseName}#integTest", StandaloneRestIntegTestTask) {
30-
useCluster baseCluster
31-
nonInputProperties.systemProperty('tests.rest.cluster', baseCluster.map(c -> c.allHttpSocketURI.join(",")))
32-
nonInputProperties.systemProperty('tests.clustername', "${->baseCluster.get().getName()}")
33-
}
34-
35-
tasks.register(bwcTaskName(bwcVersion)) {
36-
dependsOn "${baseName}#integTest"
16+
tasks.register(bwcTaskName(bwcVersion), StandaloneRestIntegTestTask) {
17+
usesBwcDistribution(bwcVersion)
18+
systemProperty 'tests.cluster_version', bwcVersion
3719
}
3820
}
39-
40-
tasks.register("verifyDocsLuceneVersion") {
41-
doFirst {
42-
File docsVersionsFile = layout.settingsDirectory.file('docs/Versions.asciidoc').asFile
43-
List<String> versionLines = docsVersionsFile.readLines('UTF-8')
44-
String docsLuceneVersion = null
45-
for (String line : versionLines) {
46-
if (line.startsWith(':lucene_version:')) {
47-
docsLuceneVersion = line.split()[1]
48-
}
49-
}
50-
if (docsLuceneVersion == null) {
51-
throw new GradleException('Could not find lucene version in docs version file')
52-
}
53-
String expectedLuceneVersion = VersionProperties.lucene
54-
// remove potential -snapshot-{gitrev} suffix
55-
expectedLuceneVersion -= ~/-snapshot-[0-9a-f]+$/
56-
if (docsLuceneVersion != expectedLuceneVersion) {
57-
throw new GradleException("Lucene version in docs [${docsLuceneVersion}] does not match version.properties [${expectedLuceneVersion}]")
58-
}
59-
}
60-
}
61-
62-
tasks.named("check").configure {
63-
dependsOn "verifyDocsLuceneVersion"
64-
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.qa.verify_version_constants;
11+
12+
import org.elasticsearch.client.Request;
13+
import org.elasticsearch.client.Response;
14+
import org.elasticsearch.index.IndexVersion;
15+
import org.elasticsearch.index.IndexVersions;
16+
import org.elasticsearch.test.cluster.ElasticsearchCluster;
17+
import org.elasticsearch.test.cluster.local.distribution.DistributionType;
18+
import org.elasticsearch.test.rest.ESRestTestCase;
19+
import org.elasticsearch.test.rest.ObjectPath;
20+
import org.hamcrest.Matchers;
21+
import org.junit.ClassRule;
22+
23+
import java.io.IOException;
24+
import java.text.ParseException;
25+
import java.util.Map;
26+
27+
import static org.hamcrest.CoreMatchers.equalTo;
28+
import static org.hamcrest.Matchers.notNullValue;
29+
30+
public class VerifyVersionConstantsIT extends ESRestTestCase {
31+
32+
@ClassRule
33+
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
34+
.distribution(DistributionType.DEFAULT)
35+
.version(System.getProperty("tests.cluster_version"))
36+
.setting("xpack.security.enabled", "false")
37+
.build();
38+
39+
public void testLuceneVersionConstant() throws IOException, ParseException {
40+
Response response = client().performRequest(new Request("GET", "/"));
41+
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
42+
ObjectPath objectPath = ObjectPath.createFromResponse(response);
43+
44+
String luceneVersionString = objectPath.evaluate("version.lucene_version").toString();
45+
org.apache.lucene.util.Version luceneVersion = org.apache.lucene.util.Version.parse(luceneVersionString);
46+
47+
IndexVersion indexVersion = getIndexVersion();
48+
assertThat(indexVersion.luceneVersion(), equalTo(luceneVersion));
49+
}
50+
51+
private IndexVersion getIndexVersion() throws IOException {
52+
IndexVersion indexVersion = null;
53+
54+
Request request = new Request("GET", "_nodes");
55+
request.addParameter("filter_path", "nodes.*.index_version,nodes.*.name");
56+
Response response = client().performRequest(request);
57+
ObjectPath objectPath = ObjectPath.createFromResponse(response);
58+
Map<String, Object> nodeMap = objectPath.evaluate("nodes");
59+
for (String id : nodeMap.keySet()) {
60+
Number ix = objectPath.evaluate("nodes." + id + ".index_version");
61+
IndexVersion version;
62+
if (ix != null) {
63+
version = IndexVersion.fromId(ix.intValue());
64+
} else {
65+
// it doesn't have index version (pre 8.11) - just infer it from the release version
66+
version = parseLegacyVersion(System.getProperty("tests.cluster_version")).map(x -> IndexVersion.fromId(x.id()))
67+
.orElse(IndexVersions.MINIMUM_COMPATIBLE);
68+
}
69+
70+
if (indexVersion == null) {
71+
indexVersion = version;
72+
} else {
73+
String name = objectPath.evaluate("nodes." + id + ".name");
74+
assertThat("Node " + name + " has a different index version to other nodes", version, Matchers.equalTo(indexVersion));
75+
}
76+
}
77+
78+
assertThat("Index version could not be read", indexVersion, notNullValue());
79+
return indexVersion;
80+
}
81+
82+
@Override
83+
public boolean preserveClusterUponCompletion() {
84+
/*
85+
* We don't perform any writes to the cluster so there won't be anything
86+
* to clean up. Also, our cleanup code is really only compatible with
87+
* *write* compatible versions but this runs with *index* compatible
88+
* versions.
89+
*/
90+
return true;
91+
}
92+
93+
@Override
94+
protected String getTestRestCluster() {
95+
return cluster.getHttpAddresses();
96+
}
97+
}

qa/verify-version-constants/src/test/java/org/elasticsearch/qa/verify_version_constants/VerifyVersionConstantsIT.java

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

server/src/main/java/org/elasticsearch/index/IndexVersions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ private static IndexVersion def(int id, Version luceneVersion) {
7777
public static final IndexVersion V_8_3_0 = def(8_03_00_99, Version.LUCENE_9_2_0);
7878
public static final IndexVersion V_8_4_0 = def(8_04_00_99, Version.LUCENE_9_3_0);
7979
public static final IndexVersion V_8_5_0 = def(8_05_00_99, Version.LUCENE_9_4_1);
80+
public static final IndexVersion V_8_5_3 = def(8_05_03_99, Version.LUCENE_9_4_2);
8081
public static final IndexVersion V_8_6_0 = def(8_06_00_99, Version.LUCENE_9_4_2);
8182
public static final IndexVersion V_8_7_0 = def(8_07_00_99, Version.LUCENE_9_5_0);
8283
public static final IndexVersion V_8_8_0 = def(8_08_00_99, Version.LUCENE_9_6_0);

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/AbstractLocalSpecBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,12 @@ public T version(Version version) {
276276
return cast(this);
277277
}
278278

279+
@Override
280+
public T version(String version) {
281+
this.version = Version.fromString(version);
282+
return cast(this);
283+
}
284+
279285
public Version getVersion() {
280286
return inherit(() -> parent.getVersion(), version);
281287
}

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/LocalSpecBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ interface LocalSpecBuilder<T extends LocalSpecBuilder<?>> {
130130
*/
131131
T version(Version version);
132132

133+
/**
134+
* Sets the version of Elasticsearch. Defaults to {@link Version#CURRENT}.
135+
*/
136+
T version(String version);
137+
133138
/**
134139
* Adds a system property to node JVM arguments.
135140
*/

0 commit comments

Comments
 (0)