This is an automated email from the ASF dual-hosted git repository. jungm pushed a commit to branch ee11 in repository https://gitbox.apache.org/repos/asf/tomee-tck.git
commit da8bdfc730a1f506929ed4e8ca3cd6bafd5f4d3b Author: Markus Jung <[email protected]> AuthorDate: Sat Jul 18 22:36:06 2026 +0200 Trim the REST TCK exclusions to 3 via constrainedto tolerance and the URLConnection conduit The rest runner passes openejb.jaxrs.fail-on-constrainedto=false to the server JVM through catalina_opts, so TomEE ignores the TCK's @ConstrainedTo(CLIENT) provider (the spec-required behavior) instead of rejecting the deployment, and pins the CXF client to the HttpURLConnection conduit (org.apache.cxf.transport.http.forceURLConnection=true), whose async-conduit no-entity handling is tracked upstream as CXF-9039. A full run without exclusions scores 2,803 tests, 2 failures, 1 error; the three remaining product results (Feature/DynamicFeature META-INF/services discovery — TOMEE-4321/CXF-9005 — and 405-vs-404 superclass @Path matching) stay excluded, and the suite is green with the reviewed list. --- KNOWN_ISSUES.md | 25 +++++++++------- runner-standalone/README.md | 2 +- runner-standalone/exclusions/rest.txt | 35 +++++++--------------- runner-standalone/rest/pom.xml | 5 ++++ .../rest/src/test/resources/arquillian.xml | 8 +++-- 5 files changed, 36 insertions(+), 39 deletions(-) diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md index 6fe2b80..7f8e727 100644 --- a/KNOWN_ISSUES.md +++ b/KNOWN_ISSUES.md @@ -27,7 +27,7 @@ Detail lives next to each runner: | data | 99 tests, 7 F + 29 E | 36 methods (EntityTests only) | openejb-jakarta-data query generation | | servlet | 1,706 tests, 12 E | 2 classes (12 methods) | TomEE aborts context startup on a missing referenced servlet/filter class | | pages | 682/682 pass | — | — (needs the runner's spec-default encoding overlay) | -| rest | 2,803 tests, 4 F + 11 E | 14 tests | TomEE/CXF gaps (1 error was a fixed harness classpath gap) | +| rest | 2,803 tests, 2 F + 1 E | 3 tests | Feature/DynamicFeature `META-INF/services` discovery (TOMEE-4321/CXF-9005) + 405-vs-404 matching | | validation | 1,049 tests, 0 F (incl. signature test) | — | — (server pins the JAXB RI; see product gaps) | | cdi (core) | 1,388 run, 90 F | 63 methods + 27 deploy-failing classes | OpenWebBeans 4.1 gaps | | cdi-ee | 1,829 run, 117 F | 87 methods + 30 deploy-failing classes | OpenWebBeans 4.1 + EE integration | @@ -63,16 +63,19 @@ Fixes belong in Apache TomEE (or Tomcat); each removes exclusion entries. fail to start and every method in each class errors on the missing deployment URL. 2 class entries (12 methods) in [servlet.txt](runner-standalone/exclusions/servlet.txt). -4. **RESTful Web Services 4.0** — TomEE refuses to deploy an application - bundling a `@ConstrainedTo(RuntimeType.CLIENT)` provider - (`IllegalArgumentException: ... is not a SERVER provider` from - `TomeeJaxRsService`) where the spec requires ignoring it; REST 3.1 - `META-INF/services` discovery of `Feature`/`DynamicFeature` is not - implemented; `ContainerRequestContext.getLength()`/`HttpHeaders - .getLength()` no-entity semantics differ; the CXF client answers - `hasEntity() == true` for entity-less responses; and an unmatched - subresource path answers 405 where 404 is required. 14 entries in - [rest.txt](runner-standalone/exclusions/rest.txt). +4. **RESTful Web Services 4.0** — REST 3.1 `META-INF/services` discovery of + `Feature`/`DynamicFeature` is not implemented (TOMEE-4321, CXF-9005), and + a request to a path only matching the superclass `@Path` answers 405 + where the spec requires 404. 3 entries in + [rest.txt](runner-standalone/exclusions/rest.txt). The runner sets + `openejb.jaxrs.fail-on-constrainedto=false` in the server JVM — TomEE's + strict default rejects deployments bundling a + `@ConstrainedTo(RuntimeType.CLIENT)` provider where the spec requires + ignoring it — and pins the CXF client to the `HttpURLConnection` conduit + (`org.apache.cxf.transport.http.forceURLConnection=true`); the async + conduit's no-entity handling, tracked upstream as + [CXF-9039](https://issues.apache.org/jira/browse/CXF-9039), otherwise + fails the `getLength()`/`hasEntity()` assertions. 5. **Faces descriptor parsing** — TomEE's `faces-config.xml` unmarshaller rejects the `xsi:schemaLocation` attribute that Faces 4.1 descriptors carry, so affected applications never deploy. Dominant cause of the 31 diff --git a/runner-standalone/README.md b/runner-standalone/README.md index 86d2a11..019ca2a 100644 --- a/runner-standalone/README.md +++ b/runner-standalone/README.md @@ -53,7 +53,7 @@ derived from; with the default exclusions applied these suites run green. | CDI 4.1 (EE integration) + Interceptors 2.2 (EJB half) | `jakarta.tck:cdi-tck-ee-impl:11.0.3` | `cdi-ee` | **Runs: 1,829 tests, 117 failures, 92 skipped** (2026-07-18, needs the 4 GB server heap configured in its arquillian.xml) | | Concurrency 3.1 | `jakarta.enterprise:jakarta.enterprise.concurrent-tck:3.1.1` | `concurrency` | **Passes 197 tests, 0 failures, 0 errors, 14 skipped (the TCK's own skips), signature test included, no exclusions** (2026-07-18). The runner sets `openejb.environment.default=true` (declares the `java:comp/Default*` resource-env-refs the TCK injects via `@Resource(lookup=…)`; without it they silently inject `null`), adds a `beans.xml` per WAR so OWB activates the TCK's `@Priority` `Asynchr [...] | Data 1.0 | `jakarta.data:jakarta.data-tck:1.0.0` | `data` | **Runs: 99 tests, 7 failures, 29 errors** (2026-07-18), all in `standalone.entity.EntityTests`; the other six classes pass completely, signature test included. The runner's archive processor completes the TCK deployments the way a Jakarta Data runtime is expected to (adds the missing sibling classes, a `persistence.xml` on `java:comp/DefaultDataSource`, and a `beans.xml` with `bean-discovery-mode="all"` so `@Repository` interf [...] -| RESTful Web Services 4.0 | EFTL zip (installed as `jakarta.ws.rs:jakarta-restful-ws-tck:4.0.1`) | `rest` | **Runs: 2,803 tests, 4 failures, 11 errors, 128 skipped** (2026-07-18, the skips are the TCK's own `@Disabled` tests) against TomEE's CXF, with the CXF client driving the client half of every test; the signature test passes. One error was a harness classpath gap (the CXF client needs `cxf-rt-rs-extension-providers` for spec-required JSON-B support) and is fixed in the runner; the [...] +| RESTful Web Services 4.0 | EFTL zip (installed as `jakarta.ws.rs:jakarta-restful-ws-tck:4.0.1`) | `rest` | **Runs: 2,803 tests, 2 failures, 1 error, 128 skipped without exclusions** (2026-07-18, the skips are the TCK's own `@Disabled` tests) against TomEE's CXF, with the CXF client driving the client half of every test; the signature test passes. The runner sets `openejb.jaxrs.fail-on-constrainedto=false` in the server JVM (spec-required tolerance of bundled `@ConstrainedTo(CLIENT)` pr [...] | Servlet 6.1 | EFTL zip (installed as `jakarta.tck:servlet-tck-runtime:6.1.0`) | `servlet` | **Runs: 1,706 tests, 12 errors, 7 skipped** (2026-07-18). The harness is complete: slf4j-simple resolves at the TCK-derived version, the TCK's bundled client certificate is trusted and mapped (both client-cert tests pass, including the https-targeted deployment via a metadata observer reporting the TLS port), cross-context dispatch is enabled and the STRICT_SERVLET_COMPLIANCE subset (`alwaysAcce [...] | Pages 4.0 | EFTL zip (installed as `jakarta.tck:jakarta-pages-tck:4.0.0`) | `pages` | **Passes 682/682 (0 failures, 0 errors, signature test included, no exclusions)** (2026-07-18). Needs the Central `jakarta.tck:common`/`signaturetest` support line at 11.1.1 with sigtest 2.6 (the TCK pom's own pins depend on the unpublished JavaTest harness), and the overlay removes TomEE's global UTF-8 default encodings from conf/web.xml because the TCK asserts the spec default ISO-8859-1. Its TomEE/ [...] | Validation 3.1 | EFTL zip (installed as `jakarta.validation:validation-tck-tests:3.1.1`) | `validation` | **Runs: 1,049 tests, 0 failures, no exclusions; the mandatory API signature test runs and passes** against the `jakarta.validation` packages the Plume distribution ships. Needs AssertJ 3.7.0 pinned (the published TCK jar is compiled against its covariant signatures) and the JAXB RI pinned as `jakarta.xml.bind.JAXBContextFactory` in the server JVM (Plume ships both MOXy and the RI; [...] diff --git a/runner-standalone/exclusions/rest.txt b/runner-standalone/exclusions/rest.txt index eeaf197..9ee24a0 100644 --- a/runner-standalone/exclusions/rest.txt +++ b/runner-standalone/exclusions/rest.txt @@ -1,35 +1,20 @@ # Jakarta RESTful Web Services 4.0 TCK (jakarta.ws.rs:jakarta-restful-ws-tck: # 4.0.1) on the TomEE Plume snapshot, Java 21, 2026-07-18: 2,803 tests, -# 4 failures, 11 errors, 128 skipped (the TCK's own @Disabled tests). -# One of the errors was a harness gap (the CXF client needs -# cxf-rt-rs-extension-providers for spec-required JSON-B support) and is -# fixed in the runner; the 14 tests below are TomEE/CXF product results. -# Reviewed exclusions keep the remaining suite runnable; they are not -# compatibility passes. +# 2 failures, 1 error, 128 skipped (the TCK's own @Disabled tests) with no +# exclusions applied. The runner disables openejb.jaxrs.fail-on-constrainedto +# in the server JVM (spec-required tolerance of @ConstrainedTo(CLIENT) +# providers) and pins the CXF client to the HttpURLConnection conduit +# (org.apache.cxf.transport.http.forceURLConnection=true); the async conduit's +# no-entity handling — tracked upstream as CXF-9039 — otherwise fails the +# getLength()/hasEntity() assertions. The 3 tests below are TomEE/CXF +# product results. Reviewed exclusions keep the remaining suite runnable; +# they are not compatibility passes. # # Format: maven-surefire excludesFile patterns, applied through # -Dtck.exclusions.file (see runner-standalone/README.md). -# TomEE refuses to deploy an application whose classes include a -# @ConstrainedTo(RuntimeType.CLIENT) provider ("IllegalArgumentException: -# class ...ClientSideWriter is not a SERVER provider" from -# TomeeJaxRsService) where the spec requires the server runtime to ignore -# client-constrained providers; every request then answers 404. -**/ee/jakarta/tck/ws/rs/ee/rs/constrainedto/JAXRSClientIT.java - -# ContainerRequestContext.getLength() must be -1 without a request entity; -# TomEE/CXF reports 0. -**/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java#getLengthWhenNoEntityTest - -# HttpHeaders.getLength() resource response arrives empty instead of the -# expected non-zero length value. -**/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java#getLengthTest - -# CXF client Response.hasEntity() answers true for an entity-less response. -**/ee/jakarta/tck/ws/rs/ee/rs/core/response/JAXRSClientIT.java#hasEntityWhenNoEntityTest - # REST 3.1 automatic discovery of Feature/DynamicFeature implementations -# through META-INF/services is not implemented. +# through META-INF/services is not implemented (TOMEE-4321, CXF-9005). **/ee/jakarta/tck/ws/rs/jaxrs31/spec/extensions/JAXRSClientIT.java#featureIsRegisteredTest **/ee/jakarta/tck/ws/rs/jaxrs31/spec/extensions/JAXRSClientIT.java#dynamicFeatureIsRegisteredTest diff --git a/runner-standalone/rest/pom.xml b/runner-standalone/rest/pom.xml index c3afde9..5acedbf 100644 --- a/runner-standalone/rest/pom.xml +++ b/runner-standalone/rest/pom.xml @@ -202,6 +202,11 @@ </includes> <excludesFile>${tck.exclusions.file}</excludesFile> <systemPropertyVariables> + <!-- Force the CXF JAX-RS client onto the HttpURLConnection conduit + for TCK runs, matching apache/tomee's TCK module and the + webprofile runner; the async HTTP conduit mis-handles some + no-entity response cases the assertions probe. --> + <org.apache.cxf.transport.http.forceURLConnection>true</org.apache.cxf.transport.http.forceURLConnection> <!-- TomEE materializes web.xml servlet entries whose init-param jakarta.ws.rs.Application names the app through its own CXF adaptor servlet, like the Platform TCK runner does. --> diff --git a/runner-standalone/rest/src/test/resources/arquillian.xml b/runner-standalone/rest/src/test/resources/arquillian.xml index aaea7b6..5eb41de 100644 --- a/runner-standalone/rest/src/test/resources/arquillian.xml +++ b/runner-standalone/rest/src/test/resources/arquillian.xml @@ -26,8 +26,12 @@ <property name="removeUnusedWebapps">true</property> <property name="simpleLog">true</property> <!-- The suite deploys and undeploys more than a hundred archives in - one server lifetime. --> - <property name="catalina_opts">-Xmx2048m -XX:MaxMetaspaceSize=1g --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property> + one server lifetime. openejb.jaxrs.fail-on-constrainedto=false makes + TomEE's CxfRsHttpListener ignore a bundled @ConstrainedTo(CLIENT) + provider (the spec-required behavior) instead of rejecting the + deployment; this is a server-JVM property, so it rides catalina_opts + into the remote container rather than the surefire client JVM. --> + <property name="catalina_opts">-Xmx2048m -XX:MaxMetaspaceSize=1g -Dopenejb.jaxrs.fail-on-constrainedto=false --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property> </configuration> </container> </arquillian>
