1
1
package datadog.smoketest
2
2
3
- import com.fasterxml.jackson.databind.JsonNode
4
- import com.fasterxml.jackson.databind.ObjectMapper
3
+
5
4
import datadog.trace.api.Config
6
5
import datadog.trace.api.Platform
7
6
import datadog.trace.api.config.CiVisibilityConfig
8
7
import datadog.trace.api.config.GeneralConfig
9
- import datadog.trace.civisibility.CiVisibilitySmokeTest
10
8
import 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
15
9
import org.gradle.testkit.runner.BuildResult
16
10
import org.gradle.testkit.runner.GradleRunner
17
11
import org.gradle.testkit.runner.TaskOutcome
18
12
import org.gradle.util.DistributionLocator
19
13
import org.gradle.util.GradleVersion
20
14
import org.gradle.wrapper.Download
21
- import org.gradle.wrapper.GradleUserHomeLookup
22
15
import org.gradle.wrapper.Install
23
16
import org.gradle.wrapper.PathAssembler
24
17
import org.gradle.wrapper.WrapperConfiguration
25
- import org.junit.jupiter.api.Assumptions
26
- import spock.lang.AutoCleanup
27
18
import spock.lang.IgnoreIf
28
19
import spock.lang.Shared
29
20
import spock.lang.TempDir
30
- import spock.util.environment.Jvm
31
21
32
- import java.nio.file.FileVisitResult
33
22
import java.nio.file.Files
34
23
import 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 {
40
24
41
- private static final String LATEST_GRADLE_VERSION = getLatestGradleVersion()
25
+ class GradleDaemonSmokeTest extends AbstractGradleTest {
42
26
43
27
private static final String TEST_SERVICE_NAME = " test-gradle-service"
44
28
private static final String TEST_ENVIRONMENT_NAME = " integration-test"
45
29
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
-
50
30
private static final int GRADLE_DISTRIBUTION_NETWORK_TIMEOUT = 30_000 // Gradle's default timeout is 10s
51
31
52
32
private static final String JACOCO_PLUGIN_VERSION = Config . get(). ciVisibilityJacocoPluginVersion
@@ -58,21 +38,10 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
58
38
@TempDir
59
39
Path testKitFolder
60
40
61
- @TempDir
62
- Path projectFolder
63
-
64
- @Shared
65
- @AutoCleanup
66
- MockBackend mockBackend = new MockBackend ()
67
-
68
41
def setupSpec () {
69
42
givenGradleProperties()
70
43
}
71
44
72
- def setup () {
73
- mockBackend. reset()
74
- }
75
-
76
45
@IgnoreIf (reason = " Jacoco plugin does not work with OpenJ9 in older Gradle versions" , value = {
77
46
Platform .isJ9()
78
47
})
@@ -168,26 +137,6 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
168
137
Files . write(testKitFolder. resolve(" gradle.properties" ), gradleProperties. getBytes())
169
138
}
170
139
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
-
191
140
private BuildResult runGradleTests (String gradleVersion , boolean successExpected = true , boolean configurationCache = false ) {
192
141
def arguments = [" test" , " --stacktrace" ]
193
142
if (gradleVersion > " 4.5" ) {
@@ -255,63 +204,4 @@ class GradleDaemonSmokeTest extends CiVisibilitySmokeTest {
255
204
assert task. outcome != TaskOutcome . FAILED
256
205
}
257
206
}
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
- }
317
207
}
0 commit comments