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, volontairement détaché du reactor.
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 Maven sur le dirac-tck/pom.xml détaché.
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 Maven sur dirac-tck/pom.xml (étape 2). Le rapport synthétique atterrit dans dirac-tck/target/tck-report.txt.
Architecture du runner
dirac-tck est volontairement hors reactor : son pom.xml est en modelVersion 4.0.0 standalone, sans <parent>.
|
Cette détachement est imposé par ShrinkWrap Maven Resolver 3.3, transitif au TCK officiel, qui ne sait pas parser les POMs Model 4.1.0 et crashe sur le reactor Vidocq. La règle est documentée dans la racine du workspace (§ Contrainte d’architecture critique : TCK runners hors reactor). Ne pas réintégrer |
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.