Le TCK officiel MicroProfile Metrics 5.1.1 (org.eclipse.microprofile.metrics:microprofile-metrics-tck:5.1.1) valide qu’une implémentation respecte la totalité de la spec — formats d’exposition, scopes, types, configuration. La cible Dirac est 100 % PASS (jalon M8). Le runner est livré dans le module dirac-tck, membre du reactor mais gardé derrière le profil Maven tck.

Statut

Métrique Valeur

Cible

100 % PASS sur la suite officielle 5.1.1

Jalon

M8 (ROADMAP.md)

Compteur courant

🚧 statut à confirmer dans dirac-tck/target/tck-report.txt

Smoke test (hors Arquillian)

DiracTckSmokeTest opérationnel

Smoke jlink M9

✅ image dirac-image-smoke construite (run-jlink-smoke.sh)

Tant que la suite complète n’est pas verte, le chiffre exact est tracé dans dirac-tck/target/tck-report.txt (regénéré à chaque run par run-official-tck-mp-metrics-5.1.sh). Cette page ne fige pas un score d’avance.

Prérequis

L’artefact org.eclipse.microprofile.metrics:microprofile-metrics-tck:5.1.1 est disponible sur Maven Central. Le runner installe d’abord les modules Dirac requis dans le M2 local, puis exécute le reactor sur dirac-tck avec le profil tck.

sdk env                                              # Java 25 + Maven 3.9.16
./mvnw -ntp install -DskipTests                      # build complet du reactor

Exécution du runner

Le script run-official-tck-mp-metrics-5.1.sh à la racine du dépôt orchestre toutes les variantes.

# Smoke test — DiracTckSmokeTest, hors Arquillian
./run-official-tck-mp-metrics-5.1.sh

# Suite complète — TestNG/Arquillian, profil tck-official
./run-official-tck-mp-metrics-5.1.sh all

# Test ciblé — profil tck-official + -Dtest=
./run-official-tck-mp-metrics-5.1.sh -Dtest=CounterTest

Le runner installe dirac-api, dirac-core, dirac-cdi-vauban dans le M2 local (étape 1), puis invoque ./mvnw -Ptck,<profil> -pl dirac-tck test (étape 2). Le rapport synthétique atterrit dans dirac-tck/target/tck-report.txt. Invocation directe sans le script :

./mvnw -Ptck -pl dirac-tck test                  # smoke
./mvnw -Ptck,tck-official -pl dirac-tck test     # suite complète

Architecture du runner

dirac-tck est un module in-reactor gardé derrière le profil Maven tck (harmonisation TCK — Dirac est la brique pilote, sur le modèle des runners vidocq-runtime-tck-* du runtime Vidocq) : un mvn install normal ne télécharge ni n’exécute rien du TCK, et le reactor de release ne voit jamais le module.

Historiquement dirac-tck était un POM standalone hors reactor : ShrinkWrap Maven Resolver 3.3, transitif au TCK officiel, ne savait pas parser les POMs Model 4.1.0. Cette contrainte a disparu avec la migration du workspace vers Maven 3.9.16 / Model 4.0.0, et le TCK MP Metrics construit ses déploiements uniquement via addClass/addPackage (pas de resolver Maven ShrinkWrap) — il est donc sûr in-reactor, vérification déjà faite pour vidocq-runtime-tck-dirac-metrics.

Stack assemblée par le runner :

Couche Composant

Spec

microprofile-metrics-api 5.1.1, jakarta.enterprise.cdi-api 4.1, jakarta.interceptor-api 2.2, jakarta.annotation-api 3.0, jakarta.ws.rs-api 4.0

Implémentation Metrics

dirac-api + dirac-core + dirac-cdi-vauban + dirac-rest

Container CDI

Vauban (io.vidocq.vauban.core) en mode embedded

Container Arquillian

Container Dirac qui déploie l’archive, expose /metrics via Cassini + Chappe

Transport HTTP

Chappe (io.vidocq.chappe.http)

Cadre de test

TestNG (contrainte upstream — pas JUnit)

Configuration Arquillian dans dirac-tck/src/test/resources/arquillian.xml. Test de smoke courant : dirac-tck/src/test/java/io/vidocq/dirac/tck/DiracTckSmokeTest.java.

Le smoke jlink valide que toute la stack Dirac peut être assemblée en image Java native sans automatic module sans nom canonique. Le blocker est levé par dirac-mp-metrics-api, qui repackage la spec MP Metrics avec un module-info.class explicite (module microprofile.metrics.api { exports …​; }).

./run-jlink-smoke.sh           # build + jlink + image dirac-image-smoke
./run-jlink-smoke-ci.sh        # wrapper bloquant pour la CI
./mvnw -ntp -N -Pjlink-smoke verify

Détail dans JLINK.md.

Contrat qualité

Toute modification structurelle de dirac-core, dirac-cdi-vauban ou dirac-rest doit préserver le score TCK avant merge. Une régression TCK est bloquante au sens CI : la PR ne passe pas. Tout test exclu (s’il y en a) doit être listé dans la suite TestNG et justifié dans TCK.md (à créer au premier exclusion).

Pour aller plus loin