Humboldt vise la conformité 100 % au TCK officiel MicroProfile Telemetry 2.1 sur les trois suites (tracing + metrics + logs), avec propagation W3C TraceContext + Baggage et configuration OTEL_* / MP_TELEMETRY_*. Le runner humboldt-tck est membre du reactor mais gardé derrière le profil Maven tck (harmonisation TCK — même pattern que les runners vidocq-runtime-tck-* et la brique pilote dirac) : un mvn install normal ne télécharge ni n’exécute rien du TCK.

Cible

Conformité 100 % du TCK officiel MicroProfile Telemetry 2.1 sur les trois suites :

  • microprofile-telemetry-tracing-tck:2.1

  • microprofile-telemetry-metrics-tck:2.1

  • microprofile-telemetry-logs-tck:2.1

Coordonnées TCK confirmées publiquement sur Maven Central (audit M7.1, 2026-05-21).

Stack TCK

  • TestNG + Arquillian + ShrinkWrap (pas JUnit).

  • Adapter Arquillian Humboldt : HumboldtDeployableContainer (déploie via Vauban + Chappe + Cassini), HumboldtCdiEnricher (injection des beans CDI dans les @Test), hook runtime withExtraSpanExporter pour brancher InMemorySpanExporter du TCK.

  • Le TCK importe sa propre copie d'`io.opentelemetry:opentelemetry-sdk` pour ses fixtures internes — c’est OK côté runner gardé par le profil tck, ça ne pollue pas le classpath de production.

Statut courant

M7b livré (2026-05-21) — adapter Arquillian complet, premier test TCK officiel OpenTelemetryBeanTest PASS (2/2).

Signal Tests passants réels Étape

Tracing

✅ 4 / ~50 (OpenTelemetryBeanTest, TracerTest, ExporterSpiTest)

M7c.2 — débloquer HTTP

Metrics

✅ 24 / ~50 (CDI counters/gauges/histos + JVM*)

M7c.2 — débloquer HTTP histograms

Logs

✅ 3 / ~10 (JulTest, ServerInstanceTest)

M7c

Baggage

✅ propagator W3C livré M3

Tests TCK en M7c.2

Config

✅ env vars OTEL_* livré M6c

Tests TCK en M7c.2

Statut détaillé et catégorisation des échecs résiduels : voir TCK.md dans le repo. Compteur exact à confirmer après chaque run (voir tck-runs/).

Catégorisation des échecs M7c (premier run officiel, 2026-05-21)

Tests run: 138, Failures: 62, Errors: 0, Skipped: 73

Catégorie Échecs Cause / action

A. @ArquillianResource URL non résolu

56

Tests HTTP. Démarrer Chappe HTTP + Cassini dans HumboldtDeployableContainer.deploy(), exposer le port via ProtocolMetaData → HTTPContext.

B. Failed to deploy …​war

8

Classes/deps manquantes dans le war ShrinkWrap qui crashent extractBeanClasses ou VaubanContainer.build(). Investigation cas par cas.

C. injected{Span, Baggage, Tracer} null

12

Spec MP Telemetry §"Required CDI beans" : producers manquants pour Span.current(), Baggage.current(). À ajouter dans HumboldtTelemetryProducers.

D. NoSuchMethod commons.io.input.Tailer.builder()

24

Conflit de version commons-io entre deps TCK metrics et notre classpath. Forcer commons-io 2.16+ dans humboldt-tck/pom.xml.

Les 4 catégories se chevauchent partiellement (un test JvmMemory peut échouer à la fois sur URL et sur Tailer). Adresser une catégorie peut débloquer plus de tests que le compteur ne le suggère.

Lancer le TCK

cd humboldt
sdk env

# Smoke — un seul test pour valider l'installation
./run-official-tck-telemetry-2.1.sh

# Suite complète (M7c+) — équivalent du TCK officiel à 138+ tests
./run-official-tck-telemetry-2.1.sh all

# Test ciblé
./run-official-tck-telemetry-2.1.sh -Dtest=BasicAppTest

Le script :

  1. Utilise mvnw (Maven 4) s’il est présent, sinon fallback sur mvn système.

  2. Passe maven.test.skip=true (au lieu de -DskipTests) — nécessaire depuis M7c.12 car le compile-test de humboldt-rest échoue (microprofile.rest.client.api hors module-path en mode Java Modules strict).

  3. Les tests humboldt-rest restent exécutables manuellement via mvn test -pl humboldt-rest.

Profile rapide (un test ciblé)

./mvnw -ntp -Ptck,tck-cdi-bean -pl humboldt-tck test

Profile tck-cdi-bean = bootstrap minimal (sans HTTP) pour les tests CDI purs comme OpenTelemetryBeanTest. Utile pour itérer sur les bugs catégorie C sans payer le démarrage de Chappe.

Profiles Maven du runner

Profile Effet

tck-official

Suite complète (tracing + metrics + logs). Importe les 3 artefacts TCK.

tck-cdi-bean

Sous-ensemble CDI only — pas de Chappe/Cassini.

tck-trace-only

Suite tracing seulement (itération rapide M7c).

tck-metrics-only

Suite metrics seulement.

tck-logs-only

Suite logs seulement.

Architecture du runner

humboldt-tck est un module in-reactor gardé derrière le profil Maven tck de humboldt-parent (harmonisation TCK — même pattern que les runners vidocq-runtime-tck-* du runtime Vidocq et la brique pilote dirac) : 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 humboldt-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 et crashait sur le reactor Vidocq. Cette contrainte a disparu avec la migration du workspace vers Maven 3.9.16 / Model 4.0.0 — le runner est donc sûr in-reactor.

Reproduire en local

./mvnw -ntp -Ptck,tck-official -pl humboldt-tck test 2>&1 | tee /tmp/tck-humboldt.log

# Trier les échecs par catégorie
grep -E "Tests run|FAILED|ERROR" /tmp/tck-humboldt.log

Les artefacts du run (logs, rapports Surefire, dumps de spans InMemorySpanExporter) sont placés dans humboldt-tck/target/surefire-reports/ et archivés dans humboldt/tck-runs/<date>/ pour traçabilité.

Gate qualité

Avant tout merge vers main :

  1. humboldt-tck smoke PASS.

  2. Aucune régression du compteur de la suite complète (voir BENCH.md consolidé).

  3. Pas de nouvel import io.opentelemetry.sdk.* dans le code applicatif (contrainte d’architecture n°1 du CLAUDE.md).

Suivant : Référence et Migration.