The official MicroProfile Metrics 5.1.1 TCK (org.eclipse.microprofile.metrics:microprofile-metrics-tck:5.1.1) validates that an implementation honours the whole spec — exposition formats, scopes, types, configuration. Dirac’s target is 100 % PASS (milestone M8). The runner ships in the dirac-tck module, deliberately detached from the reactor.
Status
| Metric | Value |
|---|---|
Target |
100 % PASS on the official 5.1.1 suite |
Milestone |
M8 (ROADMAP.md) |
Current count |
🚧 status to be confirmed in |
Smoke test (out of Arquillian) |
✅ |
M9 jlink smoke |
✅ |
|
As long as the full suite is not green, the exact figure lives in |
Prerequisites
The artefact org.eclipse.microprofile.metrics:microprofile-metrics-tck:5.1.1 is available on Maven Central. The runner first installs the required Dirac modules in the local M2, then runs Maven on the detached dirac-tck/pom.xml.
sdk env # Java 25 + Maven 3.9.16
./mvnw -ntp install -DskipTests # full reactor build
Running the runner
The script run-official-tck-mp-metrics-5.1.sh at the repository root orchestrates every variant.
# Smoke test — DiracTckSmokeTest, no Arquillian
./run-official-tck-mp-metrics-5.1.sh
# Full suite — TestNG/Arquillian, tck-official profile
./run-official-tck-mp-metrics-5.1.sh all
# Targeted test — tck-official profile + -Dtest=
./run-official-tck-mp-metrics-5.1.sh -Dtest=CounterTest
The runner installs dirac-api, dirac-core, dirac-cdi-vauban in the local M2 (step 1), then invokes Maven on dirac-tck/pom.xml (step 2). The summary report lands in dirac-tck/target/tck-report.txt.
Runner architecture
dirac-tck is deliberately outside the reactor: its pom.xml is in modelVersion 4.0.0 standalone, without <parent>.
|
This detachment is forced by ShrinkWrap Maven Resolver 3.3, transitive to the official TCK, which cannot parse Model 4.1.0 POMs and crashes on the Vidocq reactor. The rule is documented in the workspace root (§ Critical architecture constraint: TCK runners outside the reactor). Do not reintegrate |
Stack assembled by the runner:
| Layer | Component |
|---|---|
Spec |
|
Metrics implementation |
|
CDI container |
Vauban ( |
Arquillian container |
Dirac container that deploys the archive and exposes |
HTTP transport |
Chappe ( |
Test framework |
TestNG (upstream constraint — not JUnit) |
Arquillian configuration in dirac-tck/src/test/resources/arquillian.xml. Current smoke test: dirac-tck/src/test/java/io/vidocq/dirac/tck/DiracTckSmokeTest.java.
jlink smoke (M9)
The jlink smoke validates that the whole Dirac stack can be assembled into a Java native image without an automatic module lacking a canonical name. The blocker is lifted by dirac-mp-metrics-api, which repackages the MP Metrics spec with an explicit module-info.class (module microprofile.metrics.api { exports …; }).
./run-jlink-smoke.sh # build + jlink + dirac-image-smoke image
./run-jlink-smoke-ci.sh # blocking CI wrapper
./mvnw -ntp -N -Pjlink-smoke verify
Details in JLINK.md.
Quality contract
Any structural modification of dirac-core, dirac-cdi-vauban or dirac-rest must preserve the TCK score before merge. A TCK regression is a CI-level blocker: the PR does not pass. Any excluded test (if any) must be listed in the TestNG suite and justified in TCK.md (to be created on first exclusion).