The project uses layered tests across modules to protect protocol correctness and integration behavior.
Each module can run:
test: unit testsintegrationTest: module integration testse2eTest: end-to-end tests
Commands:
./gradlew test
./gradlew integrationTest
./gradlew e2eTest
./gradlew check
./scripts/verify-consumer-smoke.shcheck depends on all three stages.
- Parser/validator rules (
jsonrpc,method,params,id) - Response-side utilities:
- envelope classifier (
REQUEST/RESPONSE/INVALID) - incoming response parser (single/batch and field-presence semantics)
- configurable response validator (
JsonRpcResponseValidationOptions)
- envelope classifier (
- Dispatcher branches:
- success
- invalid request
- method missing
- invalid params
- internal exceptions
- notification no-response
- batch (mixed/single/empty)
- Interceptor callbacks and error resilience
- Typed binder/writer behavior for records/classes/collections
- Pure Java integration and e2e usage
- Parse error handling
- Request byte limit handling
- Notification HTTP behavior
- Custom/default status strategy behavior
- Response serialization stability
- Bean wiring and override points
- Property-driven behavior
- Access control precedence
- Notification executor selection
- Annotation/manual/typed registration styles
- Integration/e2e application-level method execution
- Bean/method registration assertions
- End-to-end request/response payload assertions
- allowlist/denylist behavior
- path/request-limit customization scenarios
Binary compatibility checks are provided via JApiCmp:
./gradlew apiCompat -PapiBaselineVersion=<released-version>Production Java source sets are checked with NullAway through Error Prone.
- Enabled for
compileJavain all library modules. - Disabled for
compileTestJava,compileIntegrationTestJava, andcompileE2eTestJava. checkfails on any NullAway violation.
Goal:
- catch nullable contract bugs at compile time
- keep runtime behavior stable while strengthening type-level safety
GitHub Actions runs matrix tests and compatibility checks (when release tag baseline exists):
.github/workflows/ci.yml- Java matrix: 17 / 21 / 25
.github/workflows/publish.yml.github/workflows/consumer-smoke.yml(publishes tomavenLocaland verifies Maven/Gradle consumer projects)
- Add tests for success/failure/exception branches
- Keep protocol behavior aligned with JSON-RPC 2.0
- Update docs and GitHub release notes for user-visible behavior changes