Skip to content

Commit 22f684c

Browse files
moscheywangd
andauthored
[Test] Separate testAcceptsMismatchedServerlessBuildHash (#122570) (#123487)
This PR moves TransportServiceHandshakeTests.testAcceptsMismatchedServerlessBuildHash to its own test job to ensure the expected system property is always set correctly. Resolves: #122565 (cherry picked from commit 2eb0d00) Co-authored-by: Yang Wang <[email protected]>
1 parent 6defed7 commit 22f684c

File tree

2 files changed

+38
-35
lines changed

2 files changed

+38
-35
lines changed

server/build.gradle

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,30 @@ if (buildParams.isSnapshotBuild() == false) {
146146

147147
tasks.named("test").configure {
148148
systemProperty 'es.insecure_network_trace_enabled', 'true'
149+
filter {
150+
excludeTestsMatching("*.TransportServiceHandshakeTests.testAcceptsMismatchedServerlessBuildHash")
151+
}
149152
excludes << '**/IndexSettingsOverrideTests.class'
150153
}
151154

152-
TaskProvider<Test> indexSettingsOverrideTest = tasks.register("indexSettingsOverrideTest", Test) {
155+
// There are tests rely on system properties to be configured differently. They must run in a separate test job
156+
// since the default does not work for them and configuring the system properties inside the test class/method
157+
// is too late because fields based on the system properties are often initialized statically.
158+
TaskProvider<Test> systemPropertiesOverrideTest = tasks.register("systemPropertiesOverrideTest", Test) {
153159
include '**/IndexSettingsOverrideTests.class'
160+
include '**/TransportServiceHandshakeTests.class'
161+
filter {
162+
includeTestsMatching("*.TransportServiceHandshakeTests.testAcceptsMismatchedServerlessBuildHash")
163+
includeTestsMatching("*.IndexSettingsOverrideTests.*")
164+
}
154165
systemProperty 'es.stateless.allow.index.refresh_interval.override', 'true'
166+
systemProperty 'es.serverless_transport', 'true'
155167
classpath = sourceSets.test.runtimeClasspath
156168
testClassesDirs = sourceSets.test.output.classesDirs
157169
}
158170

159171
tasks.named("check").configure {
160-
dependsOn(indexSettingsOverrideTest)
172+
dependsOn(systemPropertiesOverrideTest)
161173
}
162174

163175
tasks.named("thirdPartyAudit").configure {

server/src/test/java/org/elasticsearch/transport/TransportServiceHandshakeTests.java

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.elasticsearch.common.settings.Settings;
2323
import org.elasticsearch.common.util.PageCacheRecycler;
2424
import org.elasticsearch.core.Releasable;
25-
import org.elasticsearch.core.SuppressForbidden;
2625
import org.elasticsearch.core.TimeValue;
2726
import org.elasticsearch.index.IndexVersion;
2827
import org.elasticsearch.index.IndexVersions;
@@ -373,40 +372,32 @@ public void testRejectsMismatchedBuildHash() {
373372
assertFalse(transportServiceA.nodeConnected(discoveryNode));
374373
}
375374

376-
@SuppressForbidden(reason = "Sets property for testing")
377375
public void testAcceptsMismatchedServerlessBuildHash() {
378376
assumeTrue("Current build needs to be a snapshot", Build.current().isSnapshot());
379-
assumeTrue("Security manager needs to be disabled", System.getSecurityManager() == null);
380-
System.setProperty(TransportService.SERVERLESS_TRANSPORT_SYSTEM_PROPERTY, Boolean.TRUE.toString()); // security manager blocks
381-
// this
382-
try {
383-
final DisruptingTransportInterceptor transportInterceptorA = new DisruptingTransportInterceptor();
384-
final DisruptingTransportInterceptor transportInterceptorB = new DisruptingTransportInterceptor();
385-
transportInterceptorA.setModifyBuildHash(true);
386-
transportInterceptorB.setModifyBuildHash(true);
387-
final Settings settings = Settings.builder()
388-
.put("cluster.name", "a")
389-
.put(IGNORE_DESERIALIZATION_ERRORS_SETTING.getKey(), true) // suppress assertions to test production error-handling
390-
.build();
391-
final TransportService transportServiceA = startServices(
392-
"TS_A",
393-
settings,
394-
TransportVersion.current(),
395-
VersionInformation.CURRENT,
396-
transportInterceptorA
397-
);
398-
final TransportService transportServiceB = startServices(
399-
"TS_B",
400-
settings,
401-
TransportVersion.current(),
402-
VersionInformation.CURRENT,
403-
transportInterceptorB
404-
);
405-
AbstractSimpleTransportTestCase.connectToNode(transportServiceA, transportServiceB.getLocalNode(), TestProfiles.LIGHT_PROFILE);
406-
assertTrue(transportServiceA.nodeConnected(transportServiceB.getLocalNode()));
407-
} finally {
408-
System.clearProperty(TransportService.SERVERLESS_TRANSPORT_SYSTEM_PROPERTY);
409-
}
377+
final DisruptingTransportInterceptor transportInterceptorA = new DisruptingTransportInterceptor();
378+
final DisruptingTransportInterceptor transportInterceptorB = new DisruptingTransportInterceptor();
379+
transportInterceptorA.setModifyBuildHash(true);
380+
transportInterceptorB.setModifyBuildHash(true);
381+
final Settings settings = Settings.builder()
382+
.put("cluster.name", "a")
383+
.put(IGNORE_DESERIALIZATION_ERRORS_SETTING.getKey(), true) // suppress assertions to test production error-handling
384+
.build();
385+
final TransportService transportServiceA = startServices(
386+
"TS_A",
387+
settings,
388+
TransportVersion.current(),
389+
VersionInformation.CURRENT,
390+
transportInterceptorA
391+
);
392+
final TransportService transportServiceB = startServices(
393+
"TS_B",
394+
settings,
395+
TransportVersion.current(),
396+
VersionInformation.CURRENT,
397+
transportInterceptorB
398+
);
399+
AbstractSimpleTransportTestCase.connectToNode(transportServiceA, transportServiceB.getLocalNode(), TestProfiles.LIGHT_PROFILE);
400+
assertTrue(transportServiceA.nodeConnected(transportServiceB.getLocalNode()));
410401
}
411402

412403
public void testAcceptsMismatchedBuildHashFromDifferentVersion() {

0 commit comments

Comments
 (0)