Le TCK officiel MicroProfile OpenAPI 4.1 valide qu’une implémentation produit un document OpenAPI 3.1 conforme à partir d’un ensemble d’applications de référence (PetStoreApp, AirlinesApp, AnnotationTest, etc.). Grimm le passe à 349 / 349 sur la version 4.1 (mai 2026).

Statut

Métrique Valeur

Tests exécutés

349

Réussis

349 ✅

Échoués

0

Erreurs

0

Ignorés

0

Tout écart ultérieur doit être journalisé dans TCK.md du dépôt avec : nom de test, motif, plan de correction.

Prérequis

L’artefact org.eclipse.microprofile.openapi:microprofile-openapi-tck:4.1 n’est pas publié sur Maven Central — il doit être installé manuellement dans le M2 local. Procédure détaillée dans grimm-tck/README.md.

sdk env                              # Java 25 + Maven 3.9.16
./mvnw -ntp install -DskipTests     # installe grimm-core et grimm-cdi-vauban

Exécution du runner

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

# Suite « smoke » — un seul test rapide pour valider l'installation
./run-official-tck-mp-openapi-4.1.sh

# Suite complète — équivalent du TCK officiel à 349 tests
./run-official-tck-mp-openapi-4.1.sh all

# Matrice « readiness » — exécute un même test sous trois profils :
#   default-readiness (timeout 10 s)
#   extended-readiness (timeout 30 s)
#   no-readiness-probe
./run-official-tck-mp-openapi-4.1.sh matrix PetStoreAppTest

# Test ciblé via -Dtest=
./run-official-tck-mp-openapi-4.1.sh -Dtest=AnnotationScanTest

Le runner exécute Arquillian + TestNG. Le rapport Surefire atterrit dans grimm-tck/target/surefire-reports/.

Architecture du runner

grimm-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 : ne pas réintégrer grimm-tck au <subprojects> de grimm-parent.

Stack assemblée par le runner :

Couche Composant

Spec

microprofile-openapi-api 4.1, jakarta.ws.rs-api 4.0, jakarta.enterprise.cdi-api 4.1

Implémentation OpenAPI

grimm-core + grimm-cdi-vauban

Container CDI

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

Container Arquillian

GrimmDeployableContainer — déploie l’archive, instancie le bean cache, expose /openapi

Transport HTTP

Chappe (io.vidocq.chappe.http) sur port aléatoire (grimm.tck.port=0)

Cadre de test

TestNG (contrainte upstream — pas JUnit)

Variantes de la matrice « readiness »

La probe de disponibilité est paramétrable :

Profil Sémantique

default-readiness

Attente active jusqu’à 10 s avant d’exécuter les requêtes du test.

extended-readiness

Attente jusqu’à 30 s — utile pour les machines de CI lentes.

no-readiness-probe

Exécute directement le test sans attendre — détecte les régressions de démarrage.

Exclusions documentées

Aucune exclusion à ce jour : la suite est exécutée intégralement et passe à 349/349. Si une exclusion devait être ajoutée, elle serait listée dans le fichier suite TestNG (grimm-tck/src/test/resources/tck-suite.xml) et tracée dans TCK.md.

Contrat qualité

Toute modification structurelle de grimm-core ou grimm-cdi-vauban doit préserver le score 349/349 avant merge. Une régression TCK est bloquante au sens CI : la PR ne passe pas.

Pour aller plus loin