diff --git a/pom.xml b/pom.xml
index f051be0..eefac53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,9 @@
3.6.0
2.44.3
3.14.0
+ ${maven.compiler.version}
3.5.2
+ ${surefire-plugin.version}
5.12.0
@@ -50,6 +52,7 @@
quarkus-bom
io.quarkus.platform
3.19.3
+ 3.21.0
@@ -204,4 +207,20 @@
+
+
+
+
+
+ jdk-17-and-newer
+
+ [17,)
+
+
+ proxy-wasm-jaxrs-quarkus
+ proxy-wasm-jaxrs-quarkus-example
+
+
+
+
diff --git a/proxy-wasm-java-host/pom.xml b/proxy-wasm-java-host/pom.xml
index 3692360..e14447e 100644
--- a/proxy-wasm-java-host/pom.xml
+++ b/proxy-wasm-java-host/pom.xml
@@ -8,9 +8,9 @@
1.0-SNAPSHOT
../pom.xml
+
proxy-wasm-java-host
jar
-
proxy-wasm-java-host
diff --git a/proxy-wasm-jaxrs-quarkus-example/.gitignore b/proxy-wasm-jaxrs-quarkus-example/.gitignore
new file mode 100644
index 0000000..91a800a
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus-example/.gitignore
@@ -0,0 +1,45 @@
+#Maven
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+release.properties
+.flattened-pom.xml
+
+# Eclipse
+.project
+.classpath
+.settings/
+bin/
+
+# IntelliJ
+.idea
+*.ipr
+*.iml
+*.iws
+
+# NetBeans
+nb-configuration.xml
+
+# Visual Studio Code
+.vscode
+.factorypath
+
+# OSX
+.DS_Store
+
+# Vim
+*.swp
+*.swo
+
+# patch
+*.orig
+*.rej
+
+# Local environment
+.env
+
+# Plugin directory
+/.quarkus/cli/plugins/
+# TLS Certificates
+.certs/
diff --git a/proxy-wasm-jaxrs-quarkus-example/pom.xml b/proxy-wasm-jaxrs-quarkus-example/pom.xml
new file mode 100644
index 0000000..cd61f09
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus-example/pom.xml
@@ -0,0 +1,122 @@
+
+
+ 4.0.0
+
+
+ io.roastedroot
+ proxy-wasm-java-host-parent
+ 1.0-SNAPSHOT
+ ../pom.xml
+
+
+ proxy-wasm-jaxrs-quarkus-example
+ jar
+ proxy-wasm-jaxrs-quarkus-example
+
+
+
+
+ ${quarkus.platform.group-id}
+ ${quarkus.platform.artifact-id}
+ ${quarkus.platform.version}
+ pom
+ import
+
+
+
+
+
+
+ io.quarkus
+ quarkus-arc
+ true
+
+
+ io.quarkus
+ quarkus-rest-jackson
+
+
+ io.roastedroot
+ proxy-wasm-jaxrs-quarkus
+ ${project.version}
+
+
+
+
+ io.quarkus
+ quarkus-junit5
+ test
+
+
+ io.rest-assured
+ rest-assured
+ test
+
+
+
+
+
+
+ ${quarkus.platform.group-id}
+ quarkus-maven-plugin
+ ${quarkus.platform.version}
+ true
+
+
+
+ build
+ generate-code
+ generate-code-tests
+ native-image-agent
+
+
+
+
+
+ maven-failsafe-plugin
+ ${surefire-plugin.version}
+
+
+ ${project.build.directory}/${project.build.finalName}-runner
+ org.jboss.logmanager.LogManager
+ ${maven.home}
+
+
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+ maven-surefire-plugin
+ ${surefire-plugin.version}
+
+
+ org.jboss.logmanager.LogManager
+ ${maven.home}
+
+
+
+
+
+
+
+
+ native
+
+
+ native
+
+
+
+ false
+ true
+
+
+
+
+
diff --git a/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/App.java b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/App.java
new file mode 100644
index 0000000..4176ece
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/App.java
@@ -0,0 +1,52 @@
+package io.roastedroot.proxywasm.jaxrs.example;
+
+import com.dylibso.chicory.wasm.Parser;
+import com.dylibso.chicory.wasm.WasmModule;
+import io.roastedroot.proxywasm.StartException;
+import io.roastedroot.proxywasm.jaxrs.WasmPlugin;
+import io.roastedroot.proxywasm.jaxrs.WasmPluginFactory;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Produces;
+import java.nio.file.Path;
+import java.util.Map;
+
+@ApplicationScoped
+public class App {
+
+ public static final String EXAMPLES_DIR = "../proxy-wasm-java-host/src/test";
+
+ public static WasmModule parseTestModule(String file) {
+ return Parser.parse(Path.of(EXAMPLES_DIR + file));
+ }
+
+ @Produces
+ public WasmPluginFactory foreignCallOnTickTest() throws StartException {
+ return () ->
+ WasmPlugin.builder()
+ .withName("foreignCallOnTickTest")
+ .withLogger(new MockLogger())
+ .withMinTickPeriodMilliseconds(
+ 100) // plugin wants a tick every 1 ms, that's too often
+ .withForeignFunctions(Map.of("compress", data -> data))
+ .build(parseTestModule("/go-examples/foreign_call_on_tick/main.wasm"));
+ }
+
+ @Produces
+ public WasmPluginFactory notSharedHttpHeaders() throws StartException {
+ return () ->
+ WasmPlugin.builder()
+ .withName("notSharedHttpHeaders")
+ .withShared(false)
+ .withPluginConfig("{\"header\": \"x-wasm-header\", \"value\": \"foo\"}")
+ .build(parseTestModule("/go-examples/http_headers/main.wasm"));
+ }
+
+ @Produces
+ public WasmPluginFactory httpHeaders() throws StartException {
+ return () ->
+ WasmPlugin.builder()
+ .withName("httpHeaders")
+ .withPluginConfig("{\"header\": \"x-wasm-header\", \"value\": \"foo\"}")
+ .build(parseTestModule("/go-examples/http_headers/main.wasm"));
+ }
+}
diff --git a/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/MockLogger.java b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/MockLogger.java
new file mode 100644
index 0000000..21f3b52
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/MockLogger.java
@@ -0,0 +1,29 @@
+package io.roastedroot.proxywasm.jaxrs.example;
+
+import io.roastedroot.proxywasm.LogLevel;
+import io.roastedroot.proxywasm.jaxrs.Logger;
+import java.util.ArrayList;
+
+public class MockLogger implements Logger {
+
+ static final boolean DEBUG = "true".equals(System.getenv("DEBUG"));
+
+ final ArrayList loggedMessages = new ArrayList<>();
+
+ @Override
+ public synchronized void log(LogLevel level, String message) {
+ if (DEBUG) {
+ System.out.println(level + ": " + message);
+ }
+ loggedMessages.add(message);
+ }
+
+ @Override
+ public synchronized LogLevel getLogLevel() {
+ return LogLevel.TRACE;
+ }
+
+ public synchronized ArrayList loggedMessages() {
+ return new ArrayList<>(loggedMessages);
+ }
+}
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/Resources.java b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/Resources.java
similarity index 79%
rename from proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/Resources.java
rename to proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/Resources.java
index 017ddf0..dae22da 100644
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/Resources.java
+++ b/proxy-wasm-jaxrs-quarkus-example/src/main/java/io/roastedroot/proxywasm/jaxrs/example/Resources.java
@@ -1,5 +1,6 @@
-package io.roastedroot.proxywasm.jaxrs;
+package io.roastedroot.proxywasm.jaxrs.example;
+import io.roastedroot.proxywasm.jaxrs.NamedWasmPlugin;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
diff --git a/proxy-wasm-jaxrs/src/test/resources/application.properties b/proxy-wasm-jaxrs-quarkus-example/src/main/resources/application.properties
similarity index 100%
rename from proxy-wasm-jaxrs/src/test/resources/application.properties
rename to proxy-wasm-jaxrs-quarkus-example/src/main/resources/application.properties
diff --git a/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/ForeignCallOnTickTest.java b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/ForeignCallOnTickTest.java
new file mode 100644
index 0000000..4d1ecda
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/ForeignCallOnTickTest.java
@@ -0,0 +1,41 @@
+package io.roastedroot.proxywasm.jaxrs.example;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.roastedroot.proxywasm.StartException;
+import io.roastedroot.proxywasm.jaxrs.WasmPlugin;
+import io.roastedroot.proxywasm.jaxrs.WasmPluginFeature;
+import jakarta.inject.Inject;
+import java.util.ArrayList;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+public class ForeignCallOnTickTest {
+
+ @Inject WasmPluginFeature feature;
+
+ @Test
+ public void testRequest() throws InterruptedException, StartException {
+ WasmPlugin plugin = feature.pool("foreignCallOnTickTest").borrow();
+ assertNotNull(plugin);
+
+ var logger = (MockLogger) plugin.logger();
+ Thread.sleep(200);
+ assertLogsContain(
+ logger.loggedMessages(),
+ String.format(
+ "foreign function (compress) called: %d, result: %s",
+ 1, "68656c6c6f20776f726c6421"));
+ plugin.close(); // so that the ticks don't keep running in the background.
+ }
+
+ public synchronized void assertLogsContain(
+ ArrayList loggedMessages, String... message) {
+ for (String m : message) {
+ Assertions.assertTrue(
+ loggedMessages.contains(m), "logged messages does not contain: " + m);
+ }
+ }
+}
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersNotSharedTest.java b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersNotSharedTest.java
similarity index 53%
rename from proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersNotSharedTest.java
rename to proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersNotSharedTest.java
index c2425bb..15439bd 100644
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersNotSharedTest.java
+++ b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersNotSharedTest.java
@@ -1,26 +1,14 @@
-package io.roastedroot.proxywasm.jaxrs;
+package io.roastedroot.proxywasm.jaxrs.example;
import static io.restassured.RestAssured.given;
-import static io.roastedroot.proxywasm.jaxrs.TestHelpers.parseTestModule;
+import static org.hamcrest.Matchers.equalTo;
import io.quarkus.test.junit.QuarkusTest;
-import io.roastedroot.proxywasm.StartException;
-import jakarta.enterprise.inject.Produces;
import org.junit.jupiter.api.Test;
@QuarkusTest
public class HttpHeadersNotSharedTest {
- @Produces
- public WasmPluginFactory create() throws StartException {
- return () ->
- WasmPlugin.builder()
- .withName("notSharedHttpHeaders")
- .withShared(false)
- .withPluginConfig("{\"header\": \"x-wasm-header\", \"value\": \"foo\"}")
- .build(parseTestModule("/go-examples/http_headers/main.wasm"));
- }
-
@Test
public void testRequest() {
@@ -30,12 +18,14 @@ public void testRequest() {
.get("/test/notSharedHttpHeaders")
.then()
.statusCode(200)
+ .body(equalTo("hello world"))
.header("x-proxy-wasm-counter", "1");
given().when()
.get("/test/notSharedHttpHeaders")
.then()
.statusCode(200)
+ .body(equalTo("hello world"))
.header("x-proxy-wasm-counter", "1");
}
}
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersTest.java b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersTest.java
similarity index 60%
rename from proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersTest.java
rename to proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersTest.java
index a5dd861..7d56a90 100644
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/HttpHeadersTest.java
+++ b/proxy-wasm-jaxrs-quarkus-example/src/test/java/io/roastedroot/proxywasm/jaxrs/example/HttpHeadersTest.java
@@ -1,27 +1,14 @@
-package io.roastedroot.proxywasm.jaxrs;
+package io.roastedroot.proxywasm.jaxrs.example;
import static io.restassured.RestAssured.given;
-import static io.roastedroot.proxywasm.jaxrs.TestHelpers.parseTestModule;
import static org.hamcrest.Matchers.equalTo;
import io.quarkus.test.junit.QuarkusTest;
-import io.roastedroot.proxywasm.StartException;
-import jakarta.enterprise.inject.Produces;
import org.junit.jupiter.api.Test;
@QuarkusTest
public class HttpHeadersTest {
- @Produces
- public WasmPluginFactory create() throws StartException {
- return () ->
- WasmPlugin.builder()
- .withName("httpHeaders")
- .withShared(true)
- .withPluginConfig("{\"header\": \"x-wasm-header\", \"value\": \"foo\"}")
- .build(parseTestModule("/go-examples/http_headers/main.wasm"));
- }
-
@Test
public void testRequest() {
given().when()
diff --git a/proxy-wasm-jaxrs-quarkus/pom.xml b/proxy-wasm-jaxrs-quarkus/pom.xml
new file mode 100644
index 0000000..7fa2311
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus/pom.xml
@@ -0,0 +1,105 @@
+
+
+ 4.0.0
+
+
+ io.roastedroot
+ proxy-wasm-java-host-parent
+ 1.0-SNAPSHOT
+ ../pom.xml
+
+
+ proxy-wasm-jaxrs-quarkus
+ jar
+ proxy-wasm-jaxrs-quarkus
+
+
+ 17
+
+
+
+
+
+ io.quarkus
+ quarkus-bom
+ ${quarkus.version}
+ pom
+ import
+
+
+
+
+
+
+ io.quarkus
+ quarkus-arc-deployment
+
+
+ io.quarkus
+ quarkus-jaxrs-spi-deployment
+
+
+
+ io.roastedroot
+ proxy-wasm-jaxrs
+ ${project.version}
+
+
+ io.quarkus
+ quarkus-junit5-internal
+ test
+
+
+
+
+
+
+
+
+ io.quarkus
+ quarkus-maven-plugin
+ ${quarkus.version}
+
+
+ maven-compiler-plugin
+
+
+ default-compile
+
+
+
+ io.quarkus
+ quarkus-extension-processor
+ ${quarkus.version}
+
+
+
+
+
+
+
+ maven-failsafe-plugin
+ ${failsafe-plugin.version}
+
+
+ org.jboss.logmanager.LogManager
+ ${maven.home}
+ ${settings.localRepository}
+
+
+
+
+ maven-surefire-plugin
+ ${surefire-plugin.version}
+
+
+ org.jboss.logmanager.LogManager
+ ${maven.home}
+ ${settings.localRepository}
+
+
+
+
+
+
+
diff --git a/proxy-wasm-jaxrs-quarkus/src/main/java/io/roastedroot/proxywasm/jaxrs/quarkus/deployment/ProxyWasmJaxrsQuarkusProcessor.java b/proxy-wasm-jaxrs-quarkus/src/main/java/io/roastedroot/proxywasm/jaxrs/quarkus/deployment/ProxyWasmJaxrsQuarkusProcessor.java
new file mode 100644
index 0000000..8b9b31d
--- /dev/null
+++ b/proxy-wasm-jaxrs-quarkus/src/main/java/io/roastedroot/proxywasm/jaxrs/quarkus/deployment/ProxyWasmJaxrsQuarkusProcessor.java
@@ -0,0 +1,29 @@
+package io.roastedroot.proxywasm.jaxrs.quarkus.deployment;
+
+import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.jaxrs.spi.deployment.AdditionalJaxRsResourceMethodAnnotationsBuildItem;
+import io.roastedroot.proxywasm.jaxrs.NamedWasmPlugin;
+import io.roastedroot.proxywasm.jaxrs.WasmPluginFeature;
+import java.util.List;
+import org.jboss.jandex.DotName;
+
+class ProxyWasmJaxrsQuarkusProcessor {
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem("proxy-wasm-jaxrs-quarkus");
+ }
+
+ @BuildStep
+ AdditionalBeanBuildItem resources() {
+ return new AdditionalBeanBuildItem(WasmPluginFeature.class);
+ }
+
+ @BuildStep
+ public AdditionalJaxRsResourceMethodAnnotationsBuildItem annotations() {
+ return new AdditionalJaxRsResourceMethodAnnotationsBuildItem(
+ List.of(DotName.createSimple(NamedWasmPlugin.class.getName())));
+ }
+}
diff --git a/proxy-wasm-jaxrs/pom.xml b/proxy-wasm-jaxrs/pom.xml
index 0c8a4c0..4bd3778 100644
--- a/proxy-wasm-jaxrs/pom.xml
+++ b/proxy-wasm-jaxrs/pom.xml
@@ -26,16 +26,36 @@
+
+ com.dylibso.chicory
+ aot-experimental
+ ${chicory.version}
+
+
+ com.dylibso.chicory
+ host-module-annotations-experimental
+ ${chicory.version}
+
+
+ com.dylibso.chicory
+ runtime
+ ${chicory.version}
+
+
+ com.dylibso.chicory
+ wasi
+ ${chicory.version}
+
+
io.quarkus
quarkus-arc
true
-
io.roastedroot
proxy-wasm-java-host
- 1.0-SNAPSHOT
+ ${project.version}
@@ -84,87 +104,22 @@
-
-
-
-
- jdk-lower-than-17
-
- (,17]
-
-
- true
- true
-
-
-
-
-
- jdk-17-and-newer
-
- [17,)
-
-
-
-
- ${quarkus.platform.group-id}
- quarkus-maven-plugin
- ${quarkus.platform.version}
- true
-
-
-
- generate-code
- generate-code-tests
-
-
-
-
-
- maven-failsafe-plugin
- ${surefire-plugin.version}
-
-
- ${project.build.directory}/${project.build.finalName}-runner
- org.jboss.logmanager.LogManager
- ${maven.home}
-
-
-
-
-
- integration-test
- verify
-
-
-
-
-
- maven-surefire-plugin
- ${surefire-plugin.version}
-
-
- org.jboss.logmanager.LogManager
- ${maven.home}
-
-
-
-
-
-
-
-
- native
-
-
- native
-
-
-
- false
- true
-
-
-
+
+
+
+ io.smallrye
+ jandex-maven-plugin
+ 3.2.7
+
+
+ make-index
+
+ jandex
+
+
+
+
+
+
diff --git a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPlugin.java b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPlugin.java
index 11fe92c..6a16ca1 100644
--- a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPlugin.java
+++ b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPlugin.java
@@ -21,6 +21,10 @@ public class WasmPlugin {
final ProxyWasm wasm;
HttpServer httpServer;
+ public Logger logger() {
+ return handler.logger;
+ }
+
private WasmPlugin(ProxyWasm proxyWasm, PluginHandler handler, boolean shared) {
Objects.requireNonNull(proxyWasm);
Objects.requireNonNull(handler);
diff --git a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginFeature.java b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginFeature.java
index 579cb54..ac120bf 100644
--- a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginFeature.java
+++ b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginFeature.java
@@ -45,7 +45,7 @@ public Collection getPluginPools() {
return pluginPools.values();
}
- WasmPluginPool pool(String name) {
+ public WasmPluginPool pool(String name) {
return pluginPools.get(name);
}
diff --git a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginPool.java b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginPool.java
index 7f60bd1..4f4003e 100644
--- a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginPool.java
+++ b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/WasmPluginPool.java
@@ -5,7 +5,7 @@
import java.util.Collection;
import java.util.List;
-interface WasmPluginPool {
+public interface WasmPluginPool {
WasmPlugin borrow() throws StartException;
diff --git a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/servlet/ServletHttpServerRequest.java b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/servlet/ServletHttpServerRequest.java
index 6d56106..4ca8495 100644
--- a/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/servlet/ServletHttpServerRequest.java
+++ b/proxy-wasm-jaxrs/src/main/java/io/roastedroot/proxywasm/jaxrs/servlet/ServletHttpServerRequest.java
@@ -6,15 +6,12 @@
import jakarta.enterprise.inject.Instance;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.core.Context;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
@Alternative
@Priority(100)
public class ServletHttpServerRequest implements HttpServerRequest {
private final HttpServletRequest request;
- ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
public ServletHttpServerRequest(@Context Instance request) {
this.request = request.get();
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/ForeignCallOnTickTest.java b/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/ForeignCallOnTickTest.java
deleted file mode 100644
index 3962461..0000000
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/ForeignCallOnTickTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package io.roastedroot.proxywasm.jaxrs;
-
-import static io.roastedroot.proxywasm.jaxrs.TestHelpers.parseTestModule;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.roastedroot.proxywasm.StartException;
-import jakarta.enterprise.inject.Produces;
-import jakarta.inject.Inject;
-import java.util.Map;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-public class ForeignCallOnTickTest {
-
- @Produces
- public WasmPluginFactory create() throws StartException {
- return () ->
- WasmPlugin.builder()
- .withName("foreignCallOnTickTest")
- .withLogger(new MockLogger())
- .withMinTickPeriodMilliseconds(
- 100) // plugin wants a tick every 1 ms, that's too often
- .withForeignFunctions(Map.of("compress", data -> data))
- .build(parseTestModule("/go-examples/foreign_call_on_tick/main.wasm"));
- }
-
- @Inject WasmPluginFeature feature;
-
- @Test
- public void testRequest() throws InterruptedException, StartException {
- WasmPlugin plugin = feature.pool("foreignCallOnTickTest").borrow();
- assertNotNull(plugin);
- assertEquals(1, plugin.handler.getTickPeriodMilliseconds());
-
- var logger = (MockLogger) plugin.handler.logger;
- Thread.sleep(200);
- logger.assertLogsContain(
- String.format(
- "foreign function (compress) called: %d, result: %s",
- 1, "68656c6c6f20776f726c6421"));
- plugin.handler.logger = null;
- plugin.close(); // so that the ticks don't keep running in the background.
- }
-}
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/MockLogger.java b/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/MockLogger.java
deleted file mode 100644
index d65d8de..0000000
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/MockLogger.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package io.roastedroot.proxywasm.jaxrs;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import io.roastedroot.proxywasm.LogLevel;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-public class MockLogger implements Logger {
-
- static final boolean DEBUG = "true".equals(System.getenv("DEBUG"));
-
- final ArrayList loggedMessages = new ArrayList<>();
-
- @Override
- public synchronized void log(LogLevel level, String message) {
- if (DEBUG) {
- System.out.println(level + ": " + message);
- }
- loggedMessages.add(message);
- }
-
- @Override
- public synchronized LogLevel getLogLevel() {
- return LogLevel.TRACE;
- }
-
- public synchronized ArrayList loggedMessages() {
- return new ArrayList<>(loggedMessages);
- }
-
- public synchronized void assertLogsEqual(String... messages) {
- assertEquals(List.of(messages), loggedMessages());
- }
-
- public synchronized void assertSortedLogsEqual(String... messages) {
- assertEquals(
- Stream.of(messages).sorted().collect(Collectors.toList()),
- loggedMessages().stream().sorted().collect(Collectors.toList()));
- }
-
- public synchronized void assertLogsContain(String... message) {
- for (String m : message) {
- assertTrue(loggedMessages().contains(m), "logged messages does not contain: " + m);
- }
- }
-
- public synchronized void assertLogsDoNotContain(String... message) {
- for (String log : loggedMessages()) {
- for (String m : message) {
- assertFalse(log.contains(m), "logged messages contains: " + m);
- }
- }
- }
-}
diff --git a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/TestHelpers.java b/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/TestHelpers.java
deleted file mode 100644
index 0661609..0000000
--- a/proxy-wasm-jaxrs/src/test/java/io/roastedroot/proxywasm/jaxrs/TestHelpers.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.roastedroot.proxywasm.jaxrs;
-
-import com.dylibso.chicory.wasm.Parser;
-import com.dylibso.chicory.wasm.WasmModule;
-import java.nio.file.Path;
-
-public final class TestHelpers {
- private TestHelpers() {}
-
- public static final String EXAMPLES_DIR = "../proxy-wasm-java-host/src/test";
-
- public static WasmModule parseTestModule(String file) {
- return Parser.parse(Path.of(EXAMPLES_DIR + file));
- }
-}