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 |
Smoke test (hors Arquillian) |
✅ |
Smoke jlink M9 |
✅ image |
|
Tant que la suite complète n’est pas verte, le chiffre exact est tracé dans |
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 |
Stack assemblée par le runner :
| Couche | Composant |
|---|---|
Spec |
|
Implémentation Metrics |
|
Container CDI |
Vauban ( |
Container Arquillian |
Container Dirac qui déploie l’archive, expose |
Transport HTTP |
Chappe ( |
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.
Smoke jlink (M9)
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
-
Fonctionnement interne — ce que le TCK valide.
-
Référence — annotations et clés couvertes.
-
BUG.md — bugs reproductibles tracés.
-
BENCH.md — benchmarks JMH consolidés.