99
1010package org.elasticsearch.gradle.internal.toolchain
1111
12+ import spock.util.environment.RestoreSystemProperties
1213
1314import org.gradle.api.services.BuildServiceParameters
1415import org.gradle.jvm.toolchain.JavaLanguageVersion
16+ import org.gradle.jvm.toolchain.JavaToolchainDownload
17+
1518import static org.gradle.jvm.toolchain.JvmVendorSpec.ORACLE
16- import static org.gradle.platform.Architecture.*
19+ import static org.gradle.platform.Architecture.AARCH64
20+ import static org.gradle.platform.Architecture.X86_64
1721import static org.gradle.platform.OperatingSystem.*
1822
1923class OracleOpenJdkToolchainResolverSpec extends AbstractToolchainResolverSpec {
2024
25+
2126 OracleOpenJdkToolchainResolver resolverImplementation () {
2227 var toolChain = new OracleOpenJdkToolchainResolver () {
2328 @Override
2429 BuildServiceParameters.None getParameters () {
2530 return null
2631 }
2732 }
28- toolChain. builds = [
29- new OracleOpenJdkToolchainResolver.ReleasedJdkBuild (JavaLanguageVersion . of(20 ), " 20" , " 36" , " bdc68b4b9cbc4ebcb30745c85038d91d" ),
30- new OracleOpenJdkToolchainResolver.EarlyAccessJdkBuild (JavaLanguageVersion . of(21 ), " 21" , " 6" )
31- ]
33+ toolChain. builds = toolChain. builds. findAll { it instanceof OracleOpenJdkToolchainResolver.EarlyAccessJdkBuild } + [
34+ new OracleOpenJdkToolchainResolver.ReleasedJdkBuild (
35+ JavaLanguageVersion . of(20 ),
36+ " 20" ,
37+ " 36" ,
38+ " bdc68b4b9cbc4ebcb30745c85038d91d"
39+ )]
3240 toolChain
3341 }
3442
@@ -44,23 +52,67 @@ class OracleOpenJdkToolchainResolverSpec extends AbstractToolchainResolverSpec {
4452 [20 , anyVendor(), LINUX , AARCH64 , " https://download.oracle.com/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_linux-aarch64_bin.tar.gz" ],
4553 [20 , anyVendor(), WINDOWS , X86_64 , " https://download.oracle.com/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_windows-x64_bin.zip" ],
4654 // https://download.java.net/java/early_access/jdk23/23/GPL/openjdk-23-ea+23_macos-aarch64_bin.tar.gz
47- [21 , ORACLE , MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-x64_bin.tar.gz" ],
48- [21 , ORACLE , MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-aarch64_bin.tar.gz" ],
49- [21 , ORACLE , LINUX , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-x64_bin.tar.gz" ],
50- [21 , ORACLE , LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-aarch64_bin.tar.gz" ],
51- [21 , ORACLE , WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_windows-x64_bin.zip" ],
52- [21 , anyVendor(), MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-x64_bin.tar.gz" ],
53- [21 , anyVendor(), MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-aarch64_bin.tar.gz" ],
54- [21 , anyVendor(), LINUX , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-x64_bin.tar.gz" ],
55- [21 , anyVendor(), LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-aarch64_bin.tar.gz" ],
56- [21 , anyVendor(), WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_windows-x64_bin.zip" ]
57- ]
55+ [24 , ORACLE , MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-x64_bin.tar.gz" ],
56+ [24 , ORACLE , MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-aarch64_bin.tar.gz" ],
57+ [24 , ORACLE , LINUX , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-x64_bin.tar.gz" ],
58+ [24 , ORACLE , LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-aarch64_bin.tar.gz" ],
59+ [24 , ORACLE , WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_windows-x64_bin.zip" ],
60+ [24 , anyVendor(), MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-x64_bin.tar.gz" ],
61+ [24 , anyVendor(), MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-aarch64_bin.tar.gz" ],
62+ [24 , anyVendor(), LINUX , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-x64_bin.tar.gz" ],
63+ [24 , anyVendor(), LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-aarch64_bin.tar.gz" ],
64+ [24 , anyVendor(), WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_windows-x64_bin.zip" ]]
65+ }
66+
67+ @RestoreSystemProperties
68+ def " can provide build number for ea versions" () {
69+ given :
70+ System . setProperty(' runtime.java.build' , " 42" )
71+ System . setProperty(' runtime.java.25.build' , " 13" )
72+ def resolver = resolverImplementation()
73+
74+ when :
75+ Optional<JavaToolchainDownload > download = resolver. resolve(
76+ request(
77+ JavaLanguageVersion . of(version),
78+ vendor,
79+ platform(os, arch)
80+ )
81+ )
82+
83+ then :
84+ download. get(). uri == URI . create(expectedUrl)
85+
86+ where :
87+ version | vendor | os | arch | expectedUrl
88+ 24 | ORACLE | MAC_OS | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_macos-x64_bin.tar.gz"
89+ 24 | ORACLE | MAC_OS | AARCH64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_macos-aarch64_bin.tar.gz"
90+ 24 | ORACLE | LINUX | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_linux-x64_bin.tar.gz"
91+ 24 | ORACLE | LINUX | AARCH64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_linux-aarch64_bin.tar.gz"
92+ 24 | ORACLE | WINDOWS | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_windows-x64_bin.zip"
93+ 24 | anyVendor() | MAC_OS | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_macos-x64_bin.tar.gz"
94+ 24 | anyVendor() | MAC_OS | AARCH64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_macos-aarch64_bin.tar.gz"
95+ 24 | anyVendor() | LINUX | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_linux-x64_bin.tar.gz"
96+ 24 | anyVendor() | LINUX | AARCH64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_linux-aarch64_bin.tar.gz"
97+ 24 | anyVendor() | WINDOWS | X86_64 | urlPrefix(24 ) + " 42/GPL/openjdk-24-ea+42_windows-x64_bin.zip"
98+ 25 | ORACLE | MAC_OS | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_macos-x64_bin.tar.gz"
99+ 25 | ORACLE | MAC_OS | AARCH64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_macos-aarch64_bin.tar.gz"
100+ 25 | ORACLE | LINUX | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_linux-x64_bin.tar.gz"
101+ 25 | ORACLE | LINUX | AARCH64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_linux-aarch64_bin.tar.gz"
102+ 25 | ORACLE | WINDOWS | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_windows-x64_bin.zip"
103+ 25 | anyVendor() | MAC_OS | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_macos-x64_bin.tar.gz"
104+ 25 | anyVendor() | MAC_OS | AARCH64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_macos-aarch64_bin.tar.gz"
105+ 25 | anyVendor() | LINUX | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_linux-x64_bin.tar.gz"
106+ 25 | anyVendor() | LINUX | AARCH64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_linux-aarch64_bin.tar.gz"
107+ 25 | anyVendor() | WINDOWS | X86_64 | urlPrefix(25 ) + " 13/GPL/openjdk-25-ea+13_windows-x64_bin.zip"
108+ }
109+
110+ private static String urlPrefix (int i ) {
111+ return " https://download.java.net/java/early_access/jdk" + i + " /"
58112 }
59113
60114 def unsupportedRequests () {
61- [
62- [20 , ORACLE , WINDOWS , AARCH64 ]
63- ]
115+ [[20 , ORACLE , WINDOWS , AARCH64 ]]
64116 }
65117
66118}
0 commit comments