Skip to content

Commit 1f1528f

Browse files
authored
feat(java): support graalvm 17/21/22 (#1845)
## What does this PR do? - Support graalvm 17/21/22 - Add ci for Fury graalvm 17/22 support ## Related issues #1813 ## Does this PR introduce any user-facing change? <!-- If any user-facing interface changes, please [open an issue](https://github.com/apache/fury/issues/new/choose) describing the need to do so and update the document if necessary. --> - [ ] Does this PR introduce any public API change? - [ ] Does this PR introduce any binary protocol compatibility change? ## Benchmark <!-- When the PR has an impact on performance (if you don't know whether the PR will have an impact on performance, you can submit the PR first, and if it will have impact on performance, the code reviewer will explain it), be sure to attach a benchmark data here. -->
1 parent d15c709 commit 1f1528f

File tree

20 files changed

+939
-186
lines changed

20 files changed

+939
-186
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,14 @@ jobs:
8989
graalvm:
9090
name: GraalVM CI
9191
runs-on: ubuntu-latest
92+
strategy:
93+
matrix:
94+
java-version: ["17", "21", "22"]
9295
steps:
9396
- uses: actions/checkout@v4
9497
- uses: graalvm/setup-graalvm@v1
9598
with:
96-
java-version: "21"
99+
java-version: ${{ matrix.java-version }}
97100
distribution: "graalvm"
98101
github-token: ${{ secrets.GITHUB_TOKEN }}
99102
native-image-job-reports: "true"

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ public class CollectionExample {
3232
static Fury fury;
3333

3434
static {
35-
fury = Fury.builder().requireClassRegistration(true).build();
35+
fury =
36+
Fury.builder()
37+
.withName(CollectionExample.class.getName())
38+
.requireClassRegistration(true)
39+
.build();
3640
}
3741

3842
static void test(Fury fury) {

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,27 @@ public class CompatibleExample {
2626
static Fury fury;
2727

2828
static {
29-
fury =
29+
fury = createFury();
30+
}
31+
32+
private static Fury createFury() {
33+
Fury fury =
3034
Fury.builder()
3135
.requireClassRegistration(true)
3236
.withCompatibleMode(CompatibleMode.COMPATIBLE)
3337
.withScopedMetaShare(false)
3438
.build();
3539
// register and generate serializer code.
3640
fury.register(Foo.class, true);
41+
return fury;
3742
}
3843

3944
public static void main(String[] args) {
45+
System.out.println("CompatibleExample started");
46+
Example.test(fury);
47+
System.out.println("CompatibleExample succeed 1/2");
48+
// Test new created Fury at runtime
49+
fury = createFury();
4050
Example.test(fury);
4151
System.out.println("CompatibleExample succeed");
4252
}

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class CompatibleThreadSafeExample {
3333
classLoader -> {
3434
Fury f =
3535
Fury.builder()
36+
.withName(CompatibleThreadSafeExample.class.getName())
3637
.requireClassRegistration(true)
3738
.withCompatibleMode(CompatibleMode.COMPATIBLE)
3839
.build();

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class Example {
2828
static Fury fury;
2929

3030
static {
31-
fury = Fury.builder().requireClassRegistration(true).build();
31+
fury = Fury.builder().withName(Example.class.getName()).requireClassRegistration(true).build();
3232
// register and generate serializer code.
3333
fury.register(Foo.class, true);
3434
}

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static void main(String[] args) throws Throwable {
3131
RecordExample.main(args);
3232
CompatibleRecordExample.main(args);
3333
RecordExample2.main(args);
34+
3435
ThreadSafeExample.main(args);
3536
CompatibleThreadSafeExample.main(args);
3637
ProxyExample.main(args);

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,18 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl
3939
static Fury fury;
4040

4141
static {
42-
fury = Fury.builder().requireClassRegistration(true).build();
42+
fury = createFury();
43+
}
44+
45+
private static Fury createFury() {
46+
Fury fury =
47+
Fury.builder()
48+
.withName(ProxyExample.class.getName())
49+
.requireClassRegistration(true)
50+
.build();
4351
// register and generate serializer code.
4452
fury.register(TestInvocationHandler.class, true);
53+
return fury;
4554
}
4655

4756
public static void main(String[] args) {
@@ -51,6 +60,9 @@ public static void main(String[] args) {
5160
fury.getClassLoader(), new Class[] {Function.class}, new TestInvocationHandler());
5261
Function deserializedFunction = (Function) fury.deserialize(fury.serialize(function));
5362
Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
63+
fury = createFury();
64+
deserializedFunction = (Function) fury.deserialize(fury.serialize(function));
65+
Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
5466
System.out.println("Proxy tests pass");
5567
}
5668
}

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,31 @@
2323
import org.apache.fury.config.CompatibleMode;
2424

2525
public class ScopedCompatibleExample {
26-
static Fury fury;
26+
private static Fury fury;
2727

2828
static {
29-
fury =
29+
fury = createFury();
30+
}
31+
32+
private static Fury createFury() {
33+
Fury fury =
3034
Fury.builder()
35+
.withName(ScopedCompatibleExample.class.getName())
3136
.requireClassRegistration(true)
3237
.withCompatibleMode(CompatibleMode.COMPATIBLE)
3338
.withScopedMetaShare(true)
3439
.build();
3540
// register and generate serializer code.
3641
fury.register(Foo.class, true);
42+
return fury;
3743
}
3844

3945
public static void main(String[] args) {
46+
System.out.println("ScopedCompatibleExample started");
47+
Example.test(fury);
48+
System.out.println("ScopedCompatibleExample succeed 1/2");
49+
fury = createFury();
4050
Example.test(fury);
41-
System.out.println("CompatibleExample succeed");
51+
System.out.println("ScopedCompatibleExample succeed");
4252
}
4353
}

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ public class ThreadSafeExample {
3737
fury =
3838
new ThreadLocalFury(
3939
classLoader -> {
40-
Fury f = Fury.builder().requireClassRegistration(true).build();
40+
Fury f =
41+
Fury.builder()
42+
.withName(ThreadSafeExample.class.getName())
43+
.requireClassRegistration(true)
44+
.build();
4145
// register and generate serializer code.
4246
f.register(Foo.class, true);
4347
return f;

integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,24 @@ public class CompatibleRecordExample {
2626
static Fury fury;
2727

2828
static {
29-
fury =
29+
fury = createFury();
30+
}
31+
32+
private static Fury createFury() {
33+
Fury fury =
3034
Fury.builder()
35+
.withName(CompatibleRecordExample.class.getName())
3136
.requireClassRegistration(true)
3237
.withCompatibleMode(CompatibleMode.COMPATIBLE)
3338
.build();
3439
// register and generate serializer code.
3540
fury.register(RecordExample.Record.class, true);
41+
return fury;
3642
}
3743

3844
public static void main(String[] args) {
45+
RecordExample.test(fury);
46+
fury = createFury();
3947
RecordExample.test(fury);
4048
System.out.println("CompatibleRecordExample succeed");
4149
}

0 commit comments

Comments
 (0)