From 2741110f6da1529789a7c7a56843afbc249db44a Mon Sep 17 00:00:00 2001 From: Manfred Riem Date: Thu, 22 Aug 2024 16:26:11 -0500 Subject: [PATCH 1/2] First pass for #3851 --- external/tck/coreprofile/pom.xml | 1 + external/tck/coreprofile/rest/pom.xml | 87 +++++++++++ .../tck/coreprofile/rest/rest-tck/pom.xml | 138 ++++++++++++++++++ .../src/test/resources/arquillian.xml | 9 ++ 4 files changed, 235 insertions(+) create mode 100644 external/tck/coreprofile/rest/pom.xml create mode 100644 external/tck/coreprofile/rest/rest-tck/pom.xml create mode 100644 external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml diff --git a/external/tck/coreprofile/pom.xml b/external/tck/coreprofile/pom.xml index 1d550e72d2..555264801d 100644 --- a/external/tck/coreprofile/pom.xml +++ b/external/tck/coreprofile/pom.xml @@ -20,5 +20,6 @@ atinject jsonb jsonp + rest diff --git a/external/tck/coreprofile/rest/pom.xml b/external/tck/coreprofile/rest/pom.xml new file mode 100644 index 0000000000..ac42cc48fe --- /dev/null +++ b/external/tck/coreprofile/rest/pom.xml @@ -0,0 +1,87 @@ + + + + 4.0.0 + + cloud.piranha.external.tck.coreprofile + project + 24.9.0-SNAPSHOT + + piranha-external-tck-coreprofile-jakarta-coreprofile-tck + pom + Piranha - External - TCK - CoreProfile - Jakarta CoreProfile TCK + + ${project.build.directory}/ant + ${project.build.directory}/signature + ${project.build.directory}/tck + ${tck.home}/src/com/sun/ts/tests + + + + + cloud.piranha + bom + ${project.version} + pom + import + + + + + + unix + + + unix + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + validate + validate + + run + + + + Executing UNIX profile + + + + + + + + + + + + + + integration-test + integration-test + + run + + + + + + + + + + + + + + diff --git a/external/tck/coreprofile/rest/rest-tck/pom.xml b/external/tck/coreprofile/rest/rest-tck/pom.xml new file mode 100644 index 0000000000..528129140f --- /dev/null +++ b/external/tck/coreprofile/rest/rest-tck/pom.xml @@ -0,0 +1,138 @@ + + + + 4.0.0 + tck + rest-runner + 1-SNAPSHOT + jar + Piranha - External - TCK - CoreProfile - Jakarta REST TCK - Runner + + 24.9.0-SNAPSHOT + + + + + org.jboss.arquillian + arquillian-bom + 1.8.0.Final + test + pom + + + + + + unix + + + unix + + + + + cloud.piranha.arquillian + piranha-arquillian-jarcontainer + ${piranha.version} + test + + + jakarta.ws.rs + jakarta-restful-ws-tck + 3.1.5 + test + + + org.jboss.arquillian.protocol + arquillian-protocol-servlet-jakarta + 1.8.0.Final + test + + + org.jboss.arquillian.junit5 + arquillian-junit5-container + 1.8.0.Final + test + + + org.junit.jupiter + junit-jupiter + 5.11.0 + test + + + org.junit.jupiter + junit-jupiter-api + 5.11.0 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.11.0 + test + + + + org.jboss.resteasy + resteasy-core + 6.1.0.Beta2 + test + + + org.jboss.resteasy + resteasy-client + 6.1.0.Beta2 + test + + + org.jboss.resteasy + resteasy-json-binding-provider + 6.1.0.Beta2 + test + + + org.jboss.resteasy + resteasy-jaxb-provider + 6.1.0.Beta2 + test + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.0.0 + + + verify + + integration-test + verify + + + + + + jakarta.ws.rs:jakarta-restful-ws-tck + + 1 + false + + piranha + true + jakarta.xml.bind + ee.jakarta.tck.ws.rs.lib.implementation.sun.common.SunRIURL + org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher + localhost + 8080 + + true + + + + + + + diff --git a/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml b/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml new file mode 100644 index 0000000000..bf4a6f1bef --- /dev/null +++ b/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml @@ -0,0 +1,9 @@ + + + + + + From 38ff5ec5527b274051a6f08670ac2aad46329eba Mon Sep 17 00:00:00 2001 From: Manfred Riem Date: Thu, 22 Aug 2024 19:57:56 -0500 Subject: [PATCH 2/2] Second pass for #3851 --- arquillian/jarcontainer/pom.xml | 6 ++++ .../jarcontainer/PiranhaJarContainer.java | 33 +++++++++++-------- .../PiranhaJarContainerConfiguration.java | 17 ++++++++++ .../src/main/java/module-info.java | 1 - .../src/test/resources/arquillian.xml | 6 +++- 5 files changed, 48 insertions(+), 15 deletions(-) diff --git a/arquillian/jarcontainer/pom.xml b/arquillian/jarcontainer/pom.xml index 6ccee3d0c6..81dff8f077 100644 --- a/arquillian/jarcontainer/pom.xml +++ b/arquillian/jarcontainer/pom.xml @@ -19,6 +19,12 @@ org.jboss.arquillian.container arquillian-container-spi compile + + + org.jboss.shrinkwrap.descriptors + shrinkwrap-descriptors-api-base + + me.alexpanov diff --git a/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainer.java b/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainer.java index d2a167dc83..4a9fa1012c 100644 --- a/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainer.java +++ b/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainer.java @@ -47,7 +47,6 @@ import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.exporter.ZipExporter; -import org.jboss.shrinkwrap.descriptor.api.Descriptor; /** * The Piranha JAR container. @@ -86,6 +85,11 @@ public class PiranhaJarContainer implements DeployableContainer archive) throws DeploymentException { return metadata; } - @Override - public void deploy(Descriptor descriptor) throws DeploymentException { - // not supporting deployment by descriptor. - } - @Override public void undeploy(Archive archive) throws DeploymentException { LOGGER.log(Level.INFO, "Undeploying - " + archive.getName()); @@ -198,6 +197,19 @@ public void undeploy(Archive archive) throws DeploymentException { } catch (InterruptedException ie) { } + /* + * Destroy the process forcibly if it is still running. + */ + try { + if (process.isAlive()) { + LOGGER.log(Level.WARNING, + "Process for {0} still alive, destroying forcibly", + archive.getName()); + process.destroyForcibly().waitFor(); + } + } catch (InterruptedException ie) { + } + /* * Delete the WAR file. */ @@ -205,11 +217,6 @@ public void undeploy(Archive archive) throws DeploymentException { warFile.delete(); } - @Override - public void undeploy(Descriptor d) throws DeploymentException { - // not supporting undeployment by descriptor. - } - /** * Creates a WAR filename for the archive. * @@ -329,7 +336,7 @@ private void startPiranhaCoreProfile( File warFilename) throws IOException { - new ProcessBuilder() + process = new ProcessBuilder() .directory(runtimeDirectory) .command("java", "-jar", @@ -360,7 +367,7 @@ private void startPiranhaCoreProfile( LOGGER.log(Level.INFO, "Running application from directory: " + runtimeDirectory); LOGGER.log(Level.INFO, "Application is available at: http://localhost:" - + Integer.toString(configuration.getHttpPort()) + + Integer.toString(configuration.getHttpPort()) + "/" + warFilename.getName().substring(0, warFilename.getName().lastIndexOf("."))); } diff --git a/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainerConfiguration.java b/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainerConfiguration.java index b581e98230..811e4a0b0d 100644 --- a/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainerConfiguration.java +++ b/arquillian/jarcontainer/src/main/java/cloud/piranha/arquillian/jarcontainer/PiranhaJarContainerConfiguration.java @@ -27,6 +27,7 @@ */ package cloud.piranha.arquillian.jarcontainer; +import static java.lang.System.Logger.Level.INFO; import me.alexpanov.net.FreePortFinder; import org.jboss.arquillian.container.spi.ConfigurationException; import org.jboss.arquillian.container.spi.client.container.ContainerConfiguration; @@ -38,6 +39,11 @@ */ public class PiranhaJarContainerConfiguration implements ContainerConfiguration { + /** + * Stores the logger. + */ + private static final System.Logger LOGGER = System.getLogger(PiranhaJarContainerConfiguration.class.getName()); + /** * Stores the protocol. */ @@ -68,6 +74,15 @@ public int getHttpPort() { public String getProtocol() { return protocol; } + + /** + * Set the HTTP port. + * + * @param httpPort the HTTP port. + */ + public void setHttpPort(int httpPort) { + this.httpPort = httpPort; + } /** * Set the protocol. @@ -80,5 +95,7 @@ public void setProtocol(String protocol) { @Override public void validate() throws ConfigurationException { + LOGGER.log(INFO, "Using protocol: {0}", getProtocol()); + LOGGER.log(INFO, "Using port: {0}", getHttpPort()); } } diff --git a/arquillian/jarcontainer/src/main/java/module-info.java b/arquillian/jarcontainer/src/main/java/module-info.java index 843e393f6b..1e84704806 100644 --- a/arquillian/jarcontainer/src/main/java/module-info.java +++ b/arquillian/jarcontainer/src/main/java/module-info.java @@ -42,6 +42,5 @@ requires arquillian.container.spi; requires arquillian.core.spi; requires shrinkwrap.api; - requires shrinkwrap.descriptors.api.base; requires free.port.finder; } diff --git a/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml b/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml index bf4a6f1bef..f197532934 100644 --- a/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml +++ b/external/tck/coreprofile/rest/rest-tck/src/test/resources/arquillian.xml @@ -5,5 +5,9 @@ xmlns="http://jboss.org/schema/arquillian" xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> - + + + 8080 + +