From b1f529e02f506624ed5f775cbaf8464723f6216d Mon Sep 17 00:00:00 2001 From: Richard Bubel Date: Mon, 22 Jun 2026 19:01:22 +0200 Subject: [PATCH 1/2] Repair keyext.api.client test compilation --- keyext.api.client/build.gradle.kts | 2 ++ .../test/java/edu/kit/keyext/client/RPCLayerTest.java | 2 +- .../src/test/java/edu/kit/keyext/client/Starter.java | 9 ++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/keyext.api.client/build.gradle.kts b/keyext.api.client/build.gradle.kts index c5534d040f..36f5ee2729 100644 --- a/keyext.api.client/build.gradle.kts +++ b/keyext.api.client/build.gradle.kts @@ -19,6 +19,8 @@ dependencies { testCompileOnly("org.projectlombok:lombok:1.18.46") testAnnotationProcessor("org.projectlombok:lombok:1.18.46") + testImplementation("org.junit.jupiter:junit-jupiter:6.0.1") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") } tasks.named("test") { diff --git a/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java b/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java index 6bcc0cd5f1..5226f3446d 100644 --- a/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java +++ b/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java @@ -8,7 +8,7 @@ import java.io.StringWriter; import java.util.concurrent.ArrayBlockingQueue; -import edu.kit.iti.formal.keyextclientjava.rpc.JsonRPC; +import org.key_project.key.api.client.JsonRPC; import org.key_project.key.api.client.RPCLayer; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/keyext.api.client/src/test/java/edu/kit/keyext/client/Starter.java b/keyext.api.client/src/test/java/edu/kit/keyext/client/Starter.java index e2997fe347..f4a5d88609 100644 --- a/keyext.api.client/src/test/java/edu/kit/keyext/client/Starter.java +++ b/keyext.api.client/src/test/java/edu/kit/keyext/client/Starter.java @@ -7,19 +7,26 @@ import org.key_project.key.api.client.BaseRemote; import org.key_project.key.api.client.RPCLayer; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; /** + * Manual integration demo: spawns a built KeY server jar and performs one call. + * Disabled in CI because it needs a freshly built {@code keyext.api} all-in-one + * jar on disk. + * * @author Alexander Weigl * @version 1 (24.11.24) */ public class Starter { @Test + @Disabled("manual integration demo; requires a built keyext.api server jar") void test() throws IOException { var file = "../keyext.api/build/libs/keyext.api-2.12.4-dev-all.jar"; final var rpcLayer = RPCLayer.startWithCLI(file); rpcLayer.start(); var remote = new BaseRemote(rpcLayer); - System.out.println(remote.meta_version()); + String version = remote._call_sync(String.class, "meta/version"); + System.out.println(version); } } From 61e6d2f7096b9dcadc37213c25b3cc4bd0ebdd8f Mon Sep 17 00:00:00 2001 From: Richard Bubel Date: Mon, 22 Jun 2026 20:21:55 +0200 Subject: [PATCH 2/2] Remove racy testLockingAndReleasing that intermittently hangs CI The test pre-loaded a response before the request was registered, so the reader could deliver it before callSync registered its waiting future; the handler then NPE'd and callSync blocked forever (no timeout). It is an artificial scenario and is covered deterministically by the client-stability PR's callSync test. --- .../test/java/edu/kit/keyext/client/RPCLayerTest.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java b/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java index 5226f3446d..76fb5f4898 100644 --- a/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java +++ b/keyext.api.client/src/test/java/edu/kit/keyext/client/RPCLayerTest.java @@ -43,15 +43,4 @@ void testIncoming() throws IOException { String second = listener.readMessage(); Assertions.assertEquals(response, second); } - - - - @Test - void testLockingAndReleasing() throws IOException, InterruptedException { - var response = JsonRPC.addHeader(JsonRPC.createResponse("0", 2)); - var layer = new RPCLayer(new StringReader(response), new StringWriter()); - layer.start(); // starts the thread. - var result = layer.callSync("calc", 1, 1); - System.out.println(result); - } }