Overview

Ravel targets 100 % conformance with the official MicroProfile Config 3.1 Technology Compatibility Kit (TCK). This ensures Ravel can be used as a drop-in replacement for other MicroProfile Config implementations.

Running the TCK

The TCK lives in the ravel-tck module, which is in-reactor but joins the build only under the tck Maven profile — a plain mvn install neither downloads nor runs anything TCK-related.

Smoke test (default)

Quick sanity check without Arquillian:

./mvnw -Ptck -pl ravel-tck test

Or with the provided script:

./run-official-tck-mp-config-3.1.sh

Full TCK suite

Run all 349 official MicroProfile Config tests:

./run-official-tck-mp-config-3.1.sh all

Or:

./mvnw -P"tck,tck-official" -pl ravel-tck test

Specific test class

Run a single test class:

./run-official-tck-mp-config-3.1.sh -Dtest=ConfigProviderTest

Expected results

The current score is 349 PASS / 0 FAIL / 0 SKIP out of 349 tests — 100 % conformance.

Any regression from that score blocks a structural merge; a FAIL may only be tolerated when documented in TCK.md with a spec citation and a reactivation plan.

What the TCK covers

The MicroProfile Config 3.1 TCK validates:

  • Config sources — system properties, environment variables, microprofile-config.properties

  • Type conversion — primitives, collections, temporal types

  • Config profiles — environment-specific values

  • Property expressions — ${key}, ${key:default}

  • Custom sources and converters — SPI extensibility

  • CDI integration — @ConfigProperty injection (optional)

TCK phases

Ravel’s implementation reached these milestones:

Milestone Features Status

M0

Reactor, Java Modules, .sdkmanrc

✅ Done

M1

3 built-in sources, basic converters, ConfigProvider

✅ Done

M2

Advanced converters, arrays, implicit converters

✅ Done

M3

Profiles, property expressions, cycle detection

✅ Done

M4

CDI integration via Vauban BCE

✅ Done

M5

TCK 100 % PASS + JMH benchmark

✅ Done — 349/349 PASS

Known issues and workarounds

If you encounter a TCK failure, check TCK.md in the repository root for documented issues and workarounds.

Common issues:

  • weld-lite-extension-translator incompatibility — see ravel-tck/pom.xml for version alignment

  • Arquillian environment variable setup — see ravel-tck/pom.xml for required vars

Contributing test fixes

If you identify a TCK failure that’s not documented:

  1. File an issue with full stack trace

  2. Specify the Java version (java -version)

  3. Include environment details (OS, network isolation, etc.)

  4. Run with verbose output: mvn -X test

Performance verification

While not part of TCK compliance, Ravel includes JMH benchmarks (ravel-bench) for performance comparison against Smallrye Config and Helidon Config:

./mvnw -pl ravel-bench -am package
java -jar ravel-bench/target/benchmarks.jar

See BENCH.md for interpretation of results.

Next

  • Reference — API documentation

  • Usage — programmatic configuration