diff --git a/build.gradle b/build.gradle index 6c5885a295c1e..ac9474f64559c 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ plugins { id 'opensearch.docker-support' id 'opensearch.global-build-info' id "com.diffplug.spotless" version "6.17.0" apply false - id "org.gradle.test-retry" version "1.5.1" apply false + id "org.gradle.test-retry" version "1.5.2" apply false id "test-report-aggregation" id 'jacoco-report-aggregation' } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 21070972d2a23..a0ae3b7ebc4ad 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -61,7 +61,7 @@ Properties props = VersionPropertiesLoader.loadBuildSrcVersion(project.file('ver version = props.getProperty("opensearch") def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { - outputFile = "${buildDir}/version.properties" + destinationFile = file("${buildDir}/version.properties") comment = 'Generated version properties' properties(props) } @@ -115,7 +115,7 @@ dependencies { api 'org.jdom:jdom2:2.0.6.1' api "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${props.getProperty('kotlin')}" api 'de.thetaphi:forbiddenapis:3.4' - api 'com.avast.gradle:gradle-docker-compose-plugin:0.16.11' + api 'com.avast.gradle:gradle-docker-compose-plugin:0.16.12' api "org.yaml:snakeyaml:${props.getProperty('snakeyaml')}" api 'org.apache.maven:maven-model:3.9.1' api 'com.networknt:json-schema-validator:1.0.78' diff --git a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java index cdf22407f6076..974e928aea771 100644 --- a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java +++ b/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java @@ -38,15 +38,20 @@ import org.opensearch.gradle.test.ErrorReportingTestListener; import org.opensearch.gradle.util.Util; import org.gradle.api.Action; +import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.file.FileCollection; +import org.gradle.api.plugins.JvmTestSuitePlugin; +import org.gradle.api.plugins.jvm.JvmTestSuite; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.testing.Test; +import org.gradle.testing.base.TestingExtension; +import org.gradle.testing.base.TestSuite; import java.io.File; import java.util.HashMap; @@ -223,7 +228,24 @@ public void execute(Task t) { // Add the shadow JAR artifact itself FileCollection shadowJar = project.files(project.getTasks().named("shadowJar")); - test.setClasspath(test.getClasspath().minus(mainRuntime).plus(shadowConfig).plus(shadowJar)); + // See please https://docs.gradle.org/8.1-rc-1/userguide/upgrading_version_8.html#test_task_default_classpath + boolean isClasspathSet = false; + final TestingExtension testing = project.getExtensions().findByType(TestingExtension.class); + if (testing != null) { + final ExtensiblePolymorphicDomainObjectContainer testSuites = testing.getSuites(); + final TestSuite suite = testSuites.findByName(JvmTestSuitePlugin.DEFAULT_TEST_SUITE_NAME); + if (suite != null && suite instanceof JvmTestSuite) { + final JvmTestSuite jvmTestSuite = (JvmTestSuite) suite; + test.setClasspath( + jvmTestSuite.getSources().getRuntimeClasspath().minus(mainRuntime).plus(shadowConfig).plus(shadowJar) + ); + isClasspathSet = true; + } + } + + if (!isClasspathSet) { + test.setClasspath(test.getClasspath().minus(mainRuntime).plus(shadowConfig).plus(shadowJar)); + } }); }); } diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java index 5e42cc99dd79e..caa16b62b1925 100644 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java +++ b/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java @@ -35,10 +35,13 @@ import org.opensearch.gradle.util.GradleUtils; import org.opensearch.gradle.util.Util; import org.gradle.api.DefaultTask; +import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Task; import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileTree; +import org.gradle.api.plugins.JvmTestSuitePlugin; +import org.gradle.api.plugins.jvm.JvmTestSuite; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.OutputFile; @@ -46,6 +49,11 @@ import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.testing.Test; +import org.gradle.api.tasks.util.PatternFilterable; +import org.gradle.api.tasks.util.PatternSet; +import org.gradle.internal.Factory; +import org.gradle.testing.base.TestSuite; +import org.gradle.testing.base.TestingExtension; import java.io.File; import java.io.IOException; @@ -70,6 +78,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.inject.Inject; + public class TestingConventionsTasks extends DefaultTask { private static final String TEST_METHOD_PREFIX = "test"; @@ -85,13 +95,42 @@ public TestingConventionsTasks() { naming = getProject().container(TestingConventionRule.class); } + @Inject + protected Factory getPatternSetFactory() { + throw new UnsupportedOperationException(); + } + @Input public Map> getClassFilesPerEnabledTask() { return getProject().getTasks() .withType(Test.class) .stream() .filter(Task::getEnabled) - .collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles())); + .collect(Collectors.toMap(Task::getPath, task -> { + // See please https://docs.gradle.org/8.1-rc-1/userguide/upgrading_version_8.html#test_task_default_classpath + final TestingExtension testing = task.getProject().getExtensions().findByType(TestingExtension.class); + if (testing != null) { + final ExtensiblePolymorphicDomainObjectContainer testSuites = testing.getSuites(); + final TestSuite suite = testSuites.findByName(JvmTestSuitePlugin.DEFAULT_TEST_SUITE_NAME); + if (suite != null && suite instanceof JvmTestSuite) { + final JvmTestSuite jvmTestSuite = (JvmTestSuite) suite; + final PatternFilterable patternSet = getPatternSetFactory().create() + .include(task.getIncludes()) + .exclude(task.getExcludes()); + final Set files = jvmTestSuite.getSources() + .getOutput() + .getClassesDirs() + .getAsFileTree() + .matching(patternSet) + .getFiles(); + if (!files.isEmpty()) { + return files; + } + } + } + + return task.getCandidateClassFiles().getFiles(); + })); } @Input diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba7710dea..c1962a79e29d3 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 21b7e71e15d65..713f8ce5bfc33 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -11,7 +11,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-rc-2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionSha256Sum=47a5bfed9ef814f90f8debcbbb315e8e7c654109acd224595ea39fca95c5d4da +distributionSha256Sum=fd27a72140d0cc8cbf70f337d59e4c39da117edbc1b15f3847c0c419aff11ff3 diff --git a/gradlew b/gradlew index 79a61d421cc4e..aeb74cbb43e39 100755 --- a/gradlew +++ b/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/plugins/repository-hdfs/build.gradle b/plugins/repository-hdfs/build.gradle index 05b992904e6dd..3e80ce1ff00a1 100644 --- a/plugins/repository-hdfs/build.gradle +++ b/plugins/repository-hdfs/build.gradle @@ -227,7 +227,8 @@ for (String integTestTaskName : ['integTestHa', 'integTestSecure', 'integTestSec .resolve("ports") } nonInputProperties.systemProperty "test.hdfs-fixture.ports", file("$portsFileDir/ports") - classpath += files(portsFileDir) + // See please https://docs.gradle.org/8.1-rc-1/userguide/upgrading_version_8.html#test_task_default_classpath + classpath = testing.suites.test.sources.runtimeClasspath + files(portsFileDir) // Copy ports file to separate location which is placed on the test classpath doFirst { mkdir(portsFileDir)