This page consolidates the state of the official MicroProfile Rest Client 4.0 TCK runs against Cyrano. The day-to-day source of truth is TCK.md in the repo; this page reflects the reference snapshot.
Summary
| Metric | Value | Detail | Notes |
|---|---|---|---|
Tested spec |
MicroProfile Rest Client 4.0 |
Eclipse Microprofile |
Artefact |
TCK stack |
TestNG + Arquillian + ShrinkWrap |
MicroProfile standard |
Custom Arquillian Local container |
Tests executed |
235 |
Full suite — zero exclusions |
SSL and SSE families included. |
Tests passed |
235 / 235 |
100 % PASS |
|
Skipped |
9 |
Harness self-skips |
Self-skips of the official Reactive Streams |
Smoke |
3 / 3 PASS |
|
Out-of-Arquillian, run first as a guardrail. |
|
The SSL ( |
TCK runner architecture
The cyrano-tck module is in-reactor, gated behind the tck Maven profile (TCK harmonisation — mirroring the vidocq-runtime-tck-* pattern of the Vidocq runtime): a plain mvn install neither downloads nor runs anything TCK-related, and the release reactor never sees the module.
|
Historically |
Cyrano is a REST client implementation: no server-side JAX-RS resources need to be deployed to pass the TCK. The TCK manages its own HTTP backend through WireMock (WiremockArquillianTest.setupServer()), so the harness is built around a no-op local container plus a JVM-wide WireMock singleton:
| Component | Role |
|---|---|
|
Arquillian Local container: accepts the |
|
Arquillian |
|
Boots/stops a Vauban CDI container per TCK archive: extracts |
|
Exports the archive’s MP Config properties as system properties so |
|
TestNG listener ( |
|
JVM-static WireMock singleton on port 8765 (the value hardcoded in the spec’s |
No dependency on Weld, Undertow or any third-party container; WireMock and its transitives are test-scope fixtures of the TCK harness only.
Commands
# Smoke (fast — out-of-Arquillian, 3 tests)
./run-official-tck-mp-rest-client-4.0.sh
# Full official TCK suite
./run-official-tck-mp-rest-client-4.0.sh all
# Targeted test
./run-official-tck-mp-rest-client-4.0.sh -Dtest=ConfigKeyTest
./run-official-tck-mp-rest-client-4.0.sh -Dtest=CDIInvokeWithRegisteredProvidersTest
The script:
-
first installs the reactor locally (
./mvnw install -DskipTests -pl cyrano-api,cyrano-core,cyrano-cdi-vauban -am); -
invokes
./mvnw -Ptck,<profile> -pl cyrano-tck test(smokeortck-officialprofile); -
produces a
cyrano-tck/target/tck-report.txtreport with theTests run: N, Failures: F, Errors: E, Skipped: Sline and the count of passed tests.
Direct invocation without the script:
./mvnw -Ptck -pl cyrano-tck test # smoke
./mvnw -Ptck,tck-official -pl cyrano-tck test # full suite
Remaining failures
None. The full suite passes:
Tests run: 235, Failures: 0, Errors: 0, Skipped: 9
# Tests passed: 235/235
RESULT: PASS
The 9 skips are self-skips of the official Reactive Streams PublisherVerification harness itself (its untested_* rules and the optional failed-publisher cases when createFailedPublisher() is not provided by the TCK) — not Cyrano exclusions.
Declared challenges
No official challenge is open against the MP Rest Client spec — the full suite (235 tests) passes at 100 % with no exclusions.
|
The release discipline is clear (see |
TCK milestone history
| Milestone | Scope | Outcome |
|---|---|---|
M4-3 |
|
2 / 2 PASS — reached. |
M4-5 |
QueryParamStyle, Inheritance, FeatureRegistration, EntityPart |
23 / 23 PASS — reached. |
M4-6 |
Async + CDI context propagation + Multivalued headers + Redirect |
Reached — perimeter excluding SSL/SSE fully green. |
SSL + SSE re-activation (2026-07-13) |
SSL (trustStore, keyStore, hostnameVerifier, mutual TLS) + SSE ( |
235 / 235 — 100 % of the official TCK, zero exclusions. |
Going further
-
Internals — full pipeline of a call.