Skip to content

Commit

Permalink
Avoid possible flaky builds (#110301)
Browse files Browse the repository at this point in the history
* Segragate sys prop dependent tests by gradle tasks

* Add dependency to gradle check task + style

* Update server/src/test/java/org/elasticsearch/index/IndexSettingsOverrideTests.java

Co-authored-by: Yang Wang <ywangd@gmail.com>

---------

Co-authored-by: Yang Wang <ywangd@gmail.com>
  • Loading branch information
volodk85 and ywangd authored Jul 2, 2024
1 parent 1bbe74f commit 6dbf8d5
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
12 changes: 12 additions & 0 deletions server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,18 @@ if (BuildParams.isSnapshotBuild() == false) {

tasks.named("test").configure {
systemProperty 'es.insecure_network_trace_enabled', 'true'
excludes << '**/IndexSettingsOverrideTests.class'
}

TaskProvider<Test> indexSettingsOverrideTest = tasks.register("indexSettingsOverrideTest", Test) {
include '**/IndexSettingsOverrideTests.class'
systemProperty 'es.stateless.allow.index.refresh_interval.override', 'true'
classpath = sourceSets.test.runtimeClasspath
testClassesDirs = sourceSets.test.output.classesDirs
}

tasks.named("check").configure {
dependsOn(indexSettingsOverrideTest)
}

tasks.named("thirdPartyAudit").configure {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.elasticsearch.common.time.DateUtils;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.common.util.LazyInitializable;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.translog.Translog;
import org.elasticsearch.ingest.IngestService;
Expand Down Expand Up @@ -297,9 +296,8 @@ public final class IndexSettings {
static class RefreshIntervalValidator implements Setting.Validator<TimeValue> {

static final String STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE = "es.stateless.allow.index.refresh_interval.override";

private LazyInitializable<Boolean, RuntimeException> isOverrideAllowed = new LazyInitializable<>(
() -> Boolean.parseBoolean(System.getProperty(STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "false"))
private static final boolean IS_OVERRIDE_ALLOWED = Boolean.parseBoolean(
System.getProperty(STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "false")
);

@Override
Expand All @@ -317,7 +315,7 @@ public void validate(final TimeValue value, final Map<Setting<?>, Object> settin
&& value.compareTo(STATELESS_MIN_NON_FAST_REFRESH_INTERVAL) < 0
&& indexVersion.after(IndexVersions.V_8_10_0)) {

if (isOverrideAllowed.getOrCompute() == false) {
if (IS_OVERRIDE_ALLOWED == false) {
throw new IllegalArgumentException(
"index setting ["
+ IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,12 @@

import org.elasticsearch.cluster.metadata.IndexMetadata;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.SuppressForbidden;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.test.ESTestCase;
import org.junit.AfterClass;
import org.junit.BeforeClass;

import static org.elasticsearch.cluster.metadata.IndexMetadata.SETTING_INDEX_VERSION_CREATED;
import static org.elasticsearch.cluster.routing.allocation.ExistingShardsAllocator.EXISTING_SHARDS_ALLOCATOR_SETTING;

@ESTestCase.WithoutSecurityManager
@SuppressForbidden(reason = "manipulates system properties for testing")
public class IndexSettingsOverrideTests extends ESTestCase {

public static IndexMetadata newIndexMeta(String name, Settings indexSettings) {
Expand All @@ -29,12 +24,13 @@ public static IndexMetadata newIndexMeta(String name, Settings indexSettings) {
.build();
}

@BeforeClass
public static void setSystemProperty() {
System.setProperty(IndexSettings.RefreshIntervalValidator.STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "true");
}

public void testStatelessMinRefreshIntervalOverride() {
assumeTrue(
"This test depends on system property configured in build.gradle",
Boolean.parseBoolean(
System.getProperty(IndexSettings.RefreshIntervalValidator.STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "false")
)
);
IndexMetadata metadata = newIndexMeta(
"index",
Settings.builder()
Expand All @@ -47,9 +43,4 @@ public void testStatelessMinRefreshIntervalOverride() {
IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY);
assertEquals(TimeValue.timeValueSeconds(1), settings.getRefreshInterval());
}

@AfterClass
public static void clearSystemProperty() {
System.clearProperty(IndexSettings.RefreshIntervalValidator.STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE);
}
}

0 comments on commit 6dbf8d5

Please sign in to comment.