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, part of the reactor but gated behind the tck Maven profile.
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 the reactor on dirac-tck with the tck profile.
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 ./mvnw -Ptck,<profile> -pl dirac-tck test (step 2). The summary report lands in dirac-tck/target/tck-report.txt. Direct invocation without the script:
./mvnw -Ptck -pl dirac-tck test # smoke
./mvnw -Ptck,tck-official -pl dirac-tck test # full suite
Runner architecture
dirac-tck is an in-reactor module gated behind the tck Maven profile (TCK harmonisation โ Dirac is the pilot brick, 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 |
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).