11package datadog.smoketest
22
3- import com.fasterxml.jackson.databind.JsonNode
4- import com.fasterxml.jackson.databind.ObjectMapper
3+
54import datadog.trace.api.Config
65import datadog.trace.api.Platform
76import datadog.trace.api.config.CiVisibilityConfig
87import datadog.trace.api.config.GeneralConfig
9- import datadog.trace.civisibility.CiVisibilitySmokeTest
108import datadog.trace.util.Strings
11- import okhttp3.OkHttpClient
12- import okhttp3.Request
13- import okhttp3.Response
14- import org.gradle.internal.impldep.org.apache.commons.io.FileUtils
159import org.gradle.testkit.runner.BuildResult
1610import org.gradle.testkit.runner.GradleRunner
1711import org.gradle.testkit.runner.TaskOutcome
1812import org.gradle.util.DistributionLocator
1913import org.gradle.util.GradleVersion
2014import org.gradle.wrapper.Download
21- import org.gradle.wrapper.GradleUserHomeLookup
2215import org.gradle.wrapper.Install
2316import org.gradle.wrapper.PathAssembler
2417import org.gradle.wrapper.WrapperConfiguration
25- import org.junit.jupiter.api.Assumptions
26- import spock.lang.AutoCleanup
2718import spock.lang.IgnoreIf
2819import spock.lang.Shared
2920import spock.lang.TempDir
30- import spock.util.environment.Jvm
3121
32- import java.nio.file.FileVisitResult
3322import java.nio.file.Files
3423import java.nio.file.Path
35- import java.nio.file.Paths
36- import java.nio.file.SimpleFileVisitor
37- import java.nio.file.attribute.BasicFileAttributes
38-
39- class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
4024
41- private static final String LATEST_GRADLE_VERSION = getLatestGradleVersion()
25+ class GradleDaemonSmokeTest extends AbstractGradleTest {
4226
4327 private static final String TEST_SERVICE_NAME = " test-gradle-service"
4428 private static final String TEST_ENVIRONMENT_NAME = " integration-test"
4529
46- // test resources use this instead of ".gradle" to avoid unwanted evaluation
47- private static final String GRADLE_TEST_RESOURCE_EXTENSION = " .gradleTest"
48- private static final String GRADLE_REGULAR_EXTENSION = " .gradle"
49-
5030 private static final int GRADLE_DISTRIBUTION_NETWORK_TIMEOUT = 30_000 // Gradle's default timeout is 10s
5131
5232 private static final String JACOCO_PLUGIN_VERSION = Config . get(). ciVisibilityJacocoPluginVersion
@@ -58,21 +38,10 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
5838 @TempDir
5939 Path testKitFolder
6040
61- @TempDir
62- Path projectFolder
63-
64- @Shared
65- @AutoCleanup
66- MockBackend mockBackend = new MockBackend ()
67-
6841 def setupSpec () {
6942 givenGradleProperties()
7043 }
7144
72- def setup () {
73- mockBackend. reset()
74- }
75-
7645 @IgnoreIf (reason = " Jacoco plugin does not work with OpenJ9 in older Gradle versions" , value = {
7746 Platform .isJ9()
7847 })
@@ -168,26 +137,6 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
168137 Files . write(testKitFolder. resolve(" gradle.properties" ), gradleProperties. getBytes())
169138 }
170139
171- private void givenGradleProjectFiles (String projectFilesSources ) {
172- def projectResourcesUri = this . getClass(). getClassLoader(). getResource(projectFilesSources). toURI()
173- def projectResourcesPath = Paths . get(projectResourcesUri)
174- FileUtils . copyDirectory(projectResourcesPath. toFile(), projectFolder. toFile())
175-
176- Files . walkFileTree(projectFolder, new SimpleFileVisitor<Path > () {
177- @Override
178- FileVisitResult visitFile (Path file , BasicFileAttributes attrs ) throws IOException {
179- if (file. toString(). endsWith(GRADLE_TEST_RESOURCE_EXTENSION )) {
180- def fileWithFixedExtension = Paths . get(file. toString(). replace(GRADLE_TEST_RESOURCE_EXTENSION , GRADLE_REGULAR_EXTENSION ))
181- Files . move(file, fileWithFixedExtension)
182- }
183- return FileVisitResult . CONTINUE
184- }
185- })
186-
187- // creating empty .git directory so that the tracer could detect projectFolder as repo root
188- Files . createDirectory(projectFolder. resolve(" .git" ))
189- }
190-
191140 private BuildResult runGradleTests (String gradleVersion , boolean successExpected = true , boolean configurationCache = false ) {
192141 def arguments = [" test" , " --stacktrace" ]
193142 if (gradleVersion > " 4.5" ) {
@@ -255,63 +204,4 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
255204 assert task. outcome != TaskOutcome . FAILED
256205 }
257206 }
258-
259- void givenGradleVersionIsCompatibleWithCurrentJvm (String gradleVersion ) {
260- Assumptions . assumeTrue(isSupported(gradleVersion),
261- " Current JVM " + Jvm . current. javaVersion + " does not support Gradle version " + gradleVersion)
262- }
263-
264- private static boolean isSupported (String gradleVersion ) {
265- // https://docs.gradle.org/current/userguide/compatibility.html
266- if (Jvm . current. java21Compatible) {
267- return gradleVersion >= " 8.4"
268- } else if (Jvm . current. java20) {
269- return gradleVersion >= " 8.1"
270- } else if (Jvm . current. java19) {
271- return gradleVersion >= " 7.6"
272- } else if (Jvm . current. java18) {
273- return gradleVersion >= " 7.5"
274- } else if (Jvm . current. java17) {
275- return gradleVersion >= " 7.3"
276- } else if (Jvm . current. java16) {
277- return gradleVersion >= " 7.0"
278- } else if (Jvm . current. java15) {
279- return gradleVersion >= " 6.7"
280- } else if (Jvm . current. java14) {
281- return gradleVersion >= " 6.3"
282- } else if (Jvm . current. java13) {
283- return gradleVersion >= " 6.0"
284- } else if (Jvm . current. java12) {
285- return gradleVersion >= " 5.4"
286- } else if (Jvm . current. java11) {
287- return gradleVersion >= " 5.0"
288- } else if (Jvm . current. java10) {
289- return gradleVersion >= " 4.7"
290- } else if (Jvm . current. java9) {
291- return gradleVersion >= " 4.3"
292- } else if (Jvm . current. java8) {
293- return gradleVersion >= " 2.0"
294- }
295- return false
296- }
297-
298- void givenConfigurationCacheIsCompatibleWithCurrentPlatform (boolean configurationCacheEnabled ) {
299- if (configurationCacheEnabled) {
300- Assumptions . assumeFalse(Platform . isIbm8(), " Configuration cache is not compatible with IBM 8" )
301- }
302- }
303-
304- private static String getLatestGradleVersion () {
305- OkHttpClient client = new OkHttpClient ()
306- Request request = new Request.Builder (). url(" https://services.gradle.org/versions/current" ). build()
307- try (Response response = client. newCall(request). execute()) {
308- if (! response. successful) {
309- return GradleVersion . current(). version
310- }
311- def responseBody = response. body(). string()
312- ObjectMapper mapper = new ObjectMapper ()
313- JsonNode root = mapper. readTree(responseBody)
314- return root. get(" version" ). asText()
315- }
316- }
317207}
0 commit comments