Cette page consolide l’état des tests TCK officiels MicroProfile Rest Client 4.0 exécutés contre Cyrano. La source de vérité au quotidien est TCK.md dans le repo ; cette page reflète le snapshot de référence.

Synthèse

Métrique Valeur Détail Notes

Spec testée

MicroProfile Rest Client 4.0

Eclipse Microprofile

Artefact org.eclipse.microprofile.rest.client:microprofile-rest-client-tck:4.0.

Stack TCK

TestNG + Arquillian + ShrinkWrap

Standard MicroProfile

Container Arquillian custom CyranoDeployableContainer (~300 LOC, scope test).

Tests exécutés

168

Hors SSL / timeouts longue durée / SSE

Voir « Périmètre » plus bas.

Tests passés

140

≈ 83 %

// TODO@user: actualiser au prochain run (objectif M4-6 / M5 : > 95 %).

Tests en échec

28

Investigation en cours

Regroupés par famille — voir « Échecs résiduels ».

Tests en erreur

0

Aucun crash JVM

Smoke

3 / 3 PASS

CyranoTckSmokeTest

Hors Arquillian, exécuté en premier comme garde-fou.

Sous-ensemble M4-5

23 / 23 PASS

QueryParamStyle, CDIQueryParamStyle, Inheritance, FeatureRegistration, InvokeWithRegisteredProviders, CDIInvokeWithRegisteredProviders, EntityPart

Validation jalon M4-5.

Sous-ensemble M4-3

2 / 2 PASS

ConfigKeyTest

Validation jalon M4-3.

Le score de 140/168 exclut volontairement trois familles de tests : SSL (*Ssl*Test), timeouts longue durée (TimeoutTest ≥ 30 s) et SSE (SseEvent*Test). Ces familles sont planifiées sur les jalons M5 / M6. Avec elles, le périmètre nominal du TCK officiel est d’environ 200 tests.

Architecture du runner TCK

Le module cyrano-tck est hors reactor — POM modelVersion 4.0.0 standalone, sans <parent>. Raison : la transitive ShrinkWrap Maven Resolver 3.3 ne sait pas parser un POM Model 4.1.0. Même contrainte que cassini-tck, foy-tck, champollion-tck, ravel-tck, knock-tck.

Le TCK MicroProfile Rest Client exige un backend HTTP qui joue le rôle de serveur cible. Le CyranoDeployableContainer (custom Arquillian, scope test uniquement) :

  • Démarre une instance Cassini + Chappe embarquée sur un port aléatoire, qui sert les ressources JAX-RS du TCK (côté serveur).

  • Configure le RestClientBuilder de Cyrano pour pointer sur ce serveur (côté client).

  • Réutilise CassiniTestHarness (de cassini-tck) comme composant de test partagé.

  • Aucune dépendance à Weld, Undertow ou tout container tiers.

Commandes

# Smoke (rapide — hors Arquillian, 3 tests)
./run-official-tck-mp-rest-client-4.0.sh

# Suite TCK officielle complète
./run-official-tck-mp-rest-client-4.0.sh all

# Test ciblé
./run-official-tck-mp-rest-client-4.0.sh -Dtest=ConfigKeyTest
./run-official-tck-mp-rest-client-4.0.sh -Dtest=CDIInvokeWithRegisteredProvidersTest

Le script :

  1. installe d’abord le reactor en local (./mvnw install -DskipTests -pl cyrano-api,cyrano-core,cyrano-cdi-vauban -am) ;

  2. invoque Maven sur cyrano-tck/pom.xml avec le profil smoke ou tck-official ;

  3. produit un rapport cyrano-tck/target/tck-report.txt avec la ligne Tests run: N, Failures: F, Errors: E, Skipped: S et le nombre de tests réussis.

Échecs résiduels (28 / 168)

Famille Nb tests KO Cause connue

SslTest (hors périmètre du score)

n/a

SSL non câblé tant que trustStore/keyStore ne sont pas branchés sur le builder JDK (M5).

TimeoutTest (subset retenu)

~5

connectTimeout/readTimeout JDK arrondis à la seconde sous certaines plateformes — investigation.

RedirectTest

~3

Politique Redirect.NEVER vs NORMAL à harmoniser avec la spec §5.

MultivaluedHeaderTest

~2

Ordre des values quand un header est répété — alignement avec MP Rest Client §4.3.

AsyncMethodTest divers

~6

Propagation de contexte CDI dans le CompletionStage (@ActivateRequestContext en async).

CDIInvokeWithRegisteredProvidersTest (cas avancés)

~4

Cycle de vie @Dependent des providers — alignement avec la spec §6.

Autres (sporadiques)

~8

Reproducer en cours — pas de pattern stable.

Challenges déclarés

Aucun challenge officiel n’est ouvert auprès de la spec MP Rest Client à ce jour. Tous les échecs ci-dessus sont bugs Cyrano, pas des litiges spec.

La discipline de release est claire (cf. CLAUDE.md) : aucun merge structurel sur cyrano-core/cyrano-cdi-vauban sans TCK PASS sur le périmètre concerné. Les éventuels tests désactivés pour interprétation spec ou bug TCK upstream sont documentés dans TCK.md avec citation spec, hash du test, et plan de réactivation.

Roadmap TCK

Jalon Périmètre Cible

M4-3

ConfigKeyTest

2 / 2 PASS — atteint.

M4-5

QueryParamStyle, Inheritance, FeatureRegistration, EntityPart

23 / 23 PASS — atteint.

M4-6

Async + propagation contexte CDI + Multivalued headers + Redirect

> 95 % du périmètre hors SSL/SSE.

M5

SSL (trustStore, keyStore, hostnameVerifier) + Timeouts longue durée

100 % périmètre hors SSE.

M6

SSE (SseEventSource)

100 % du TCK officiel.