diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 81e8782..dfe6611 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -13,9 +13,11 @@ jobs:
strategy:
matrix:
java:
- - '8'
- - '11'
- #- '17'
+ # Java LTS versions
+ - '8' # 2030/12
+ - '11' # 2032/01
+ - '17' # 2029/09
+ - '21' # 2031/09
name: Java ${{ matrix.Java }} sample
steps:
- uses: actions/checkout@v2
diff --git a/pom.xml b/pom.xml
index 57fe027..bf1e992 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
UTF-8
- 1.35
+ 1.37
@@ -61,8 +61,6 @@
maven-surefire-plugin
2.22.2
-
-
10
-Xms1g -Xmx1g
@@ -107,6 +105,43 @@
+
+
+ java-12-plus-reflection
+
+ [12,)
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ --add-opens java.base/java.nio=ALL-UNNAMED
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ run-benchmarks
+
+
+ --add-opens=java.base/java.nio=ALL-UNNAMED
+ -classpath
+
+ org.openjdk.jmh.Main
+
+
+
+
+
+
+
+
+
no.fiken.oss.junixsocket
@@ -119,21 +154,18 @@
1.0.2
-
net.java.dev.jna
jna
- 5.12.1
+ 5.18.1
-
net.java.dev.jna
jna-platform
- 5.12.1
+ 5.18.1
-
junit
junit
@@ -141,23 +173,20 @@
test
-
org.mockito
mockito-core
- 3.12.4
+ 4.11.0
test
-
org.assertj
assertj-core
- 3.23.1
+ 3.27.6
test
-
org.openjdk.jmh
jmh-core
diff --git a/src/main/java/bwapi/UnsafeTools.java b/src/main/java/bwapi/UnsafeTools.java
index ec04219..cd3e73a 100644
--- a/src/main/java/bwapi/UnsafeTools.java
+++ b/src/main/java/bwapi/UnsafeTools.java
@@ -21,9 +21,7 @@ private static Object getOrCrash(final Class> className, final Object object,
return result;
} catch (final Exception e) { // or crash...
- e.printStackTrace();
- System.exit(-1);
- return null;
+ throw new RuntimeException(e);
}
}
diff --git a/src/test/java/bwapi/ClientDataBenchmark.java b/src/test/java/bwapi/ClientDataBenchmark.java
index 2734b4e..52c9859 100644
--- a/src/test/java/bwapi/ClientDataBenchmark.java
+++ b/src/test/java/bwapi/ClientDataBenchmark.java
@@ -18,11 +18,12 @@ public static class EmptyState {
@Setup(Level.Invocation)
public void setup() {
+ WrappedBuffer wrappedBuffer = new WrappedBuffer(ClientData.GameData.SIZE);
game = new Game();
- game.botClientData().setBuffer(new WrappedBuffer(ClientData.GameData.SIZE));
+ game.botClientData().setBuffer(wrappedBuffer);
+ client = new Client(wrappedBuffer);
strings = buildStrings();
}
-
}
@State(Scope.Thread)
@@ -33,9 +34,11 @@ public static class FilledWithStrings {
@Setup(Level.Invocation)
public void setup() {
- data = client.liveClientData().gameData();
+ WrappedBuffer wrappedBuffer = new WrappedBuffer(ClientData.GameData.SIZE);
game = new Game();
- game.botClientData().setBuffer(new WrappedBuffer(ClientData.GameData.SIZE));
+ game.botClientData().setBuffer(wrappedBuffer);
+ client = new Client(wrappedBuffer);
+ data = game.botClientData().gameData();
String[] strings = buildStrings();
for (String s : strings) {
GameDataUtils.addString(client.liveClientData().gameData(), s);