Skip to content

Commit c85cad3

Browse files
authored
Run the automated tests over the native image (#543)
* trying to exclude groovy from classpath * enabling int tests at the ci * enabling int tests * caffeine native image reflection configs * adjusting resources config * adjusting resources include config * add missing graal resources metadata * clean code * flag is now unnecessary * release notes * [Gradle Release Plugin] - new version commit: '3.25.10-snapshot'.
1 parent 398467e commit c85cad3

File tree

11 files changed

+7408
-7
lines changed

11 files changed

+7408
-7
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ jobs:
1111
runs-on: ubuntu-22.04
1212
steps:
1313
- uses: actions/checkout@v3
14+
1415
- name: Set up JDK
1516
uses: graalvm/setup-graalvm@v1
1617
with:
1718
java-version: '21'
18-
# ['version', 'gds-token', 'java-version', 'components', 'github-token', 'set-java-home', 'cache', 'check-for-updates', 'native-image-musl', 'native-image-job-reports', 'native-image-pr-reports']
19+
1920
- name: Build and Tests
20-
run: ./gradlew build test compTest -i
21+
run: ./gradlew build test compTest -i
2122

23+
- name: Native Image Integration Tests
24+
run: ./gradlew build -x check nativeIntTest -i

RELEASE-NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## 3.25.10
22
* Create `IntTests` suite, they are comp tests which can be run within native image, see the docs #480
33
* Upgrading necessary deps
4+
* Fixing Caffeine dep broken dps binary image
45

56
## 3.25.9
67
* Handling and logging fatal errors #480

build.gradle

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ dependencies {
8484

8585
testImplementation("org.junit.jupiter:junit-jupiter:5.10.+")
8686
testImplementation('org.mockito:mockito-junit-jupiter:5.12.+')
87-
testImplementation ('org.hamcrest:hamcrest:3.0')
87+
testImplementation('org.hamcrest:hamcrest:3.0')
8888
testImplementation('io.rest-assured:rest-assured:5.5.0')
8989

9090
}
@@ -192,6 +192,14 @@ shadowJar {
192192
}
193193

194194
graalvmNative {
195+
agent {
196+
defaultMode = "standard"
197+
metadataCopy {
198+
inputTaskNames.add("compTest")
199+
outputDirectories.add("src/main/resources/META-INF/native-image/graal-auto-generated/")
200+
mergeWithExisting = true
201+
}
202+
}
195203
binaries {
196204
main {
197205
javaLauncher = javaToolchains.launcherFor {
@@ -227,10 +235,11 @@ release {
227235

228236
}
229237

230-
def dontCreateTagsAsTheCdWill(){
238+
def dontCreateTagsAsTheCdWill() {
231239
preTagCommit.enabled = false
232240
createReleaseTag.enabled = false
233241
}
242+
234243
dontCreateTagsAsTheCdWill()
235244

236245
tasks.register("updateNewVersion") {

docs/content/4-developing/compiling.en.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,15 @@ $ java -jar dns-proxy-server-*-all.jar
2525

2626
### Native Image
2727

28-
```shell
29-
$ ./gradlew clean build compTest shadowJar nativeCompile
28+
Generated possible necessary metadata
29+
```bash
30+
./gradlew clean -Pagent compTest
31+
./gradlew metadataCopy
32+
```
33+
34+
Generate the binary
35+
```bash
36+
$ ./gradlew -x check clean build nativeIntTest nativeImageJar nativeCompile
3037
$ ./build/native/nativeCompile/dns-proxy-server
3138
```
3239

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=3.25.9-snapshot
1+
version=3.25.10-snapshot
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[
2+
{
3+
"name":"java.lang.Boolean",
4+
"methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
5+
},
6+
{
7+
"name":"sun.instrument.InstrumentationImpl",
8+
"methods":[{"name":"<init>","parameterTypes":["long","boolean","boolean","boolean"] }, {"name":"loadClassAndCallAgentmain","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"loadClassAndCallPremain","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"transform","parameterTypes":["java.lang.Module","java.lang.ClassLoader","java.lang.String","java.lang.Class","java.security.ProtectionDomain","byte[]","boolean"] }]
9+
}
10+
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
{
3+
"type":"agent-extracted",
4+
"classes":[
5+
]
6+
}
7+
]
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
[
2+
{
3+
"interfaces":[]
4+
},
5+
{
6+
"interfaces":["net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase$Executable"]
7+
},
8+
{
9+
"interfaces":["net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$Parameter"]
10+
},
11+
{
12+
"interfaces":["net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$Executable"]
13+
},
14+
{
15+
"interfaces":["net.bytebuddy.description.type.TypeDefinition$Sort$AnnotatedType"]
16+
},
17+
{
18+
"interfaces":["net.bytebuddy.description.type.TypeDescription"]
19+
},
20+
{
21+
"interfaces":["net.bytebuddy.description.type.TypeDescription$ForLoadedType$Dispatcher"]
22+
},
23+
{
24+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic"]
25+
},
26+
{
27+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableExceptionType$Dispatcher"]
28+
},
29+
{
30+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableParameterType$Dispatcher"]
31+
},
32+
{
33+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedField$Dispatcher"]
34+
},
35+
{
36+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedMethodReturnType$Dispatcher"]
37+
},
38+
{
39+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForComponentType$AnnotatedParameterizedType"]
40+
},
41+
{
42+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForTypeArgument$AnnotatedParameterizedType"]
43+
},
44+
{
45+
"interfaces":["net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForWildcardUpperBoundType$AnnotatedWildcardType"]
46+
},
47+
{
48+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher"]
49+
},
50+
{
51+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfClassDesc"]
52+
},
53+
{
54+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDirectMethodHandleDesc"]
55+
},
56+
{
57+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDirectMethodHandleDesc$ForKind"]
58+
},
59+
{
60+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDynamicConstantDesc"]
61+
},
62+
{
63+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfMethodHandleDesc"]
64+
},
65+
{
66+
"interfaces":["net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfMethodTypeDesc"]
67+
},
68+
{
69+
"interfaces":["net.bytebuddy.utility.JavaModule$Module"]
70+
},
71+
{
72+
"interfaces":["net.bytebuddy.utility.JavaModule$Resolver"]
73+
},
74+
{
75+
"interfaces":["org.apache.http.client.methods.CloseableHttpResponse"]
76+
}
77+
]

0 commit comments

Comments
 (0)