Skip to content

Commit 02879cb

Browse files
retashiv0408
authored andcommitted
Update to Gradle 8.1 (opensearch-project#6792)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io> Signed-off-by: Shivansh Arora <hishiv@amazon.com>
1 parent cb3618c commit 02879cb

File tree

15 files changed

+165
-15
lines changed

15 files changed

+165
-15
lines changed

buildSrc/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Properties props = VersionPropertiesLoader.loadBuildSrcVersion(project.file('ver
6161
version = props.getProperty("opensearch")
6262

6363
def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) {
64-
outputFile = "${buildDir}/version.properties"
64+
destinationFile = file("${buildDir}/version.properties")
6565
comment = 'Generated version properties'
6666
properties(props)
6767
}

buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin;
3636
import org.opensearch.gradle.info.BuildParams;
3737
import org.opensearch.gradle.info.GlobalBuildInfoPlugin;
38+
import org.opensearch.gradle.jvm.JvmTestSuiteHelper;
3839
import org.opensearch.gradle.test.ErrorReportingTestListener;
3940
import org.opensearch.gradle.util.Util;
4041
import org.gradle.api.Action;
@@ -223,7 +224,15 @@ public void execute(Task t) {
223224
// Add the shadow JAR artifact itself
224225
FileCollection shadowJar = project.files(project.getTasks().named("shadowJar"));
225226

226-
test.setClasspath(test.getClasspath().minus(mainRuntime).plus(shadowConfig).plus(shadowJar));
227+
// See please https://docs.gradle.org/8.1/userguide/upgrading_version_8.html#test_task_default_classpath
228+
test.setClasspath(
229+
JvmTestSuiteHelper.getDefaultTestSuite(project)
230+
.map(suite -> suite.getSources().getRuntimeClasspath())
231+
.orElseGet(() -> test.getClasspath())
232+
.minus(mainRuntime)
233+
.plus(shadowConfig)
234+
.plus(shadowJar)
235+
);
227236
});
228237
});
229238
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.gradle.jvm;
10+
11+
import org.gradle.api.Project;
12+
import org.gradle.api.plugins.JvmTestSuitePlugin;
13+
import org.gradle.api.plugins.jvm.JvmTestSuite;
14+
import org.gradle.testing.base.TestSuite;
15+
import org.gradle.testing.base.TestingExtension;
16+
17+
import java.util.Optional;
18+
19+
public final class JvmTestSuiteHelper {
20+
private JvmTestSuiteHelper() {}
21+
22+
/**
23+
* Gets the default test suite. This method assumes the Java plugin is applied,
24+
* adapted from {@link org.gradle.api.plugins.internal.JavaPluginHelper} since it is not
25+
* available in Gradle releases predated 8.1.
26+
*/
27+
public static Optional<JvmTestSuite> getDefaultTestSuite(Project project) {
28+
TestingExtension testing = project.getExtensions().findByType(TestingExtension.class);
29+
if (testing == null) {
30+
return Optional.empty();
31+
}
32+
33+
TestSuite defaultTestSuite = testing.getSuites().findByName(JvmTestSuitePlugin.DEFAULT_TEST_SUITE_NAME);
34+
if (!(defaultTestSuite instanceof JvmTestSuite)) {
35+
return Optional.empty();
36+
}
37+
38+
return Optional.of((JvmTestSuite) defaultTestSuite);
39+
}
40+
}

buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,26 @@
3232
package org.opensearch.gradle.precommit;
3333

3434
import groovy.lang.Closure;
35+
36+
import org.opensearch.gradle.jvm.JvmTestSuiteHelper;
3537
import org.opensearch.gradle.util.GradleUtils;
3638
import org.opensearch.gradle.util.Util;
3739
import org.gradle.api.DefaultTask;
3840
import org.gradle.api.NamedDomainObjectContainer;
3941
import org.gradle.api.Task;
4042
import org.gradle.api.file.FileCollection;
4143
import org.gradle.api.file.FileTree;
44+
import org.gradle.api.plugins.jvm.JvmTestSuite;
4245
import org.gradle.api.tasks.Classpath;
4346
import org.gradle.api.tasks.Input;
4447
import org.gradle.api.tasks.OutputFile;
4548
import org.gradle.api.tasks.SourceSet;
4649
import org.gradle.api.tasks.SourceSetContainer;
4750
import org.gradle.api.tasks.TaskAction;
4851
import org.gradle.api.tasks.testing.Test;
52+
import org.gradle.api.tasks.util.PatternFilterable;
53+
import org.gradle.api.tasks.util.PatternSet;
54+
import org.gradle.internal.Factory;
4955

5056
import java.io.File;
5157
import java.io.IOException;
@@ -70,6 +76,8 @@
7076
import java.util.stream.Collectors;
7177
import java.util.stream.Stream;
7278

79+
import javax.inject.Inject;
80+
7381
public class TestingConventionsTasks extends DefaultTask {
7482

7583
private static final String TEST_METHOD_PREFIX = "test";
@@ -85,13 +93,39 @@ public TestingConventionsTasks() {
8593
naming = getProject().container(TestingConventionRule.class);
8694
}
8795

96+
@Inject
97+
protected Factory<PatternSet> getPatternSetFactory() {
98+
throw new UnsupportedOperationException();
99+
}
100+
88101
@Input
89102
public Map<String, Set<File>> getClassFilesPerEnabledTask() {
90103
return getProject().getTasks()
91104
.withType(Test.class)
92105
.stream()
93106
.filter(Task::getEnabled)
94-
.collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles()));
107+
.collect(Collectors.toMap(Task::getPath, task -> {
108+
// See please https://docs.gradle.org/8.1/userguide/upgrading_version_8.html#test_task_default_classpath
109+
final JvmTestSuite jvmTestSuite = JvmTestSuiteHelper.getDefaultTestSuite(getProject()).orElse(null);
110+
if (jvmTestSuite != null) {
111+
final PatternFilterable patternSet = getPatternSetFactory().create()
112+
.include(task.getIncludes())
113+
.exclude(task.getExcludes());
114+
115+
final Set<File> files = jvmTestSuite.getSources()
116+
.getOutput()
117+
.getClassesDirs()
118+
.getAsFileTree()
119+
.matching(patternSet)
120+
.getFiles();
121+
122+
if (!files.isEmpty()) {
123+
return files;
124+
}
125+
}
126+
127+
return task.getCandidateClassFiles().getFiles();
128+
}));
95129
}
96130

97131
@Input

buildSrc/src/main/java/org/opensearch/gradle/test/RestIntegTestTask.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
package org.opensearch.gradle.test;
3434

3535
import org.opensearch.gradle.testclusters.StandaloneRestIntegTestTask;
36+
37+
import groovy.lang.Closure;
38+
39+
import org.gradle.api.Task;
3640
import org.gradle.api.tasks.CacheableTask;
3741

3842
/**
@@ -41,4 +45,12 @@
4145
* conventional configured tasks of {@link RestIntegTestTask}
4246
*/
4347
@CacheableTask
44-
public class RestIntegTestTask extends StandaloneRestIntegTestTask {}
48+
public class RestIntegTestTask extends StandaloneRestIntegTestTask implements TestSuiteConventionMappings {
49+
@SuppressWarnings("rawtypes")
50+
@Override
51+
public Task configure(Closure closure) {
52+
final Task t = super.configure(closure);
53+
applyConventionMapping(getProject(), getConventionMapping());
54+
return t;
55+
}
56+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.gradle.test;
10+
11+
import org.gradle.api.Project;
12+
import org.gradle.api.internal.ConventionMapping;
13+
import org.opensearch.gradle.jvm.JvmTestSuiteHelper;
14+
15+
// Temporary workaround for https://docs.gradle.org/8.1/userguide/upgrading_version_8.html#test_task_default_classpath
16+
interface TestSuiteConventionMappings {
17+
default void applyConventionMapping(Project project, ConventionMapping conventionMapping) {
18+
JvmTestSuiteHelper.getDefaultTestSuite(project).ifPresent(defaultTestSuite -> {
19+
conventionMapping.map("testClassesDirs", () -> { return defaultTestSuite.getSources().getOutput().getClassesDirs(); });
20+
21+
conventionMapping.map("classpath", () -> { return defaultTestSuite.getSources().getRuntimeClasspath(); });
22+
});
23+
}
24+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.gradle.test;
10+
11+
import groovy.lang.Closure;
12+
13+
import org.gradle.api.Task;
14+
import org.gradle.api.tasks.CacheableTask;
15+
import org.gradle.api.tasks.testing.Test;
16+
17+
@CacheableTask
18+
public class TestTask extends Test implements TestSuiteConventionMappings {
19+
@SuppressWarnings("rawtypes")
20+
@Override
21+
public Task configure(Closure closure) {
22+
final Task t = super.configure(closure);
23+
applyConventionMapping(getProject(), getConventionMapping());
24+
return t;
25+
}
26+
}

gradle/code-coverage.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ repositories {
1919

2020
allprojects {
2121
plugins.withId('jacoco') {
22-
jacoco.toolVersion = '0.8.8'
22+
jacoco.toolVersion = '0.8.9'
2323
}
2424
}
2525

gradle/wrapper/gradle-wrapper.jar

468 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
distributionBase=GRADLE_USER_HOME
1313
distributionPath=wrapper/dists
14-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip
14+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-all.zip
1515
zipStoreBase=GRADLE_USER_HOME
1616
zipStorePath=wrapper/dists
17-
distributionSha256Sum=47a5bfed9ef814f90f8debcbbb315e8e7c654109acd224595ea39fca95c5d4da
17+
distributionSha256Sum=2cbafcd2c47a101cb2165f636b4677fac0b954949c9429c1c988da399defe6a9

gradlew

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ done
8585
APP_BASE_NAME=${0##*/}
8686
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
8787

88-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89-
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90-
9188
# Use the maximum available, or set MAX_FD != -1 to use that value.
9289
MAX_FD=maximum
9390

@@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then
197194
done
198195
fi
199196

197+
198+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
199+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
200+
200201
# Collect all arguments for the java command;
201202
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
202203
# shell script including quotes and variable substitutions, so put them in

modules/transport-netty4/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import org.opensearch.gradle.info.BuildParams
3333
import org.opensearch.gradle.test.RestIntegTestTask
34+
import org.opensearch.gradle.test.TestTask
3435
import org.opensearch.gradle.test.rest.JavaRestTestPlugin
3536
import org.opensearch.gradle.test.InternalClusterTestPlugin
3637

@@ -92,13 +93,13 @@ javaRestTest {
9293
systemProperty 'opensearch.set.netty.runtime.available.processors', 'false'
9394
}
9495

95-
TaskProvider<Test> pooledTest = tasks.register("pooledTest", Test) {
96+
TaskProvider<Test> pooledTest = tasks.register("pooledTest", TestTask) {
9697
include '**/*Tests.class'
9798
systemProperty 'opensearch.set.netty.runtime.available.processors', 'false'
9899
systemProperty 'opensearch.use_unpooled_allocator', 'false'
99100
}
100101

101-
TaskProvider<Test> pooledInternalClusterTest = tasks.register("pooledInternalClusterTest", Test) {
102+
TaskProvider<Test> pooledInternalClusterTest = tasks.register("pooledInternalClusterTest", TestTask) {
102103
include '**/*IT.class'
103104
systemProperty 'opensearch.set.netty.runtime.available.processors', 'false'
104105
systemProperty 'opensearch.use_unpooled_allocator', 'false'

plugins/repository-hdfs/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ for (String integTestTaskName : ['integTestHa', 'integTestSecure', 'integTestSec
227227
.resolve("ports")
228228
}
229229
nonInputProperties.systemProperty "test.hdfs-fixture.ports", file("$portsFileDir/ports")
230-
classpath += files(portsFileDir)
230+
// See please https://docs.gradle.org/8.1/userguide/upgrading_version_8.html#test_task_default_classpath
231+
classpath = testing.suites.test.sources.runtimeClasspath + files(portsFileDir)
231232
// Copy ports file to separate location which is placed on the test classpath
232233
doFirst {
233234
mkdir(portsFileDir)

plugins/repository-s3/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.opensearch.gradle.MavenFilteringHack
3232
import org.opensearch.gradle.info.BuildParams
3333
import org.opensearch.gradle.test.RestIntegTestTask
34+
import org.opensearch.gradle.test.TestTask
3435
import org.opensearch.gradle.test.rest.YamlRestTestPlugin
3536
import org.opensearch.gradle.test.InternalClusterTestPlugin
3637

@@ -86,7 +87,7 @@ bundlePlugin {
8687
}
8788
}
8889

89-
task testRepositoryCreds(type: Test) {
90+
task testRepositoryCreds(type: TestTask) {
9091
include '**/RepositoryCredentialsTests.class'
9192
systemProperty 'opensearch.allow_insecure_settings', 'true'
9293
}

qa/wildfly/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import org.opensearch.gradle.Architecture
3232
import org.opensearch.gradle.VersionProperties
33+
import org.opensearch.gradle.test.TestTask
3334

3435
apply plugin: 'war'
3536
apply plugin: 'opensearch.build'
@@ -81,7 +82,7 @@ dockerCompose {
8182
useComposeFiles = ['docker-compose.yml']
8283
}
8384

84-
tasks.register("integTest", Test) {
85+
tasks.register("integTest", TestTask) {
8586
outputs.doNotCacheIf('Build cache is disabled for Docker tests') { true }
8687
maxParallelForks = '1'
8788
include '**/*IT.class'

0 commit comments

Comments
 (0)