fresh-borzoni opened a new pull request, #476:
URL: https://github.com/apache/fluss-rust/pull/476
## Summary
closes #393 #394
All three language bindings (Rust, Python, C++) previously had their own
Docker cluster management, each with hardcoded image versions, container
naming, SASL configuration, and readiness checks. Bugs had to be found and
fixed in each implementation independently.
This PR extracts the shared logic into a fluss-test-cluster crate that
produces both a library (used by Rust tests directly) and a CLI binary (used by
Python and C++ via subprocess). The CLI's start command is idempotent: it
starts containers if needed, waits for readiness, and prints cluster addresses
as JSON to stdout. The stop command tears everything down.
Python's conftest.py calls the CLI, parses the JSON, and wires up pytest
fixtures. The filelock package serializes xdist workers so only one starts the
cluster.
C++ test_utils.h follows the same pattern: call CLI, parse JSON with
nlohmann/json, connect via GoogleTest environment. Rust tests use the library
directly through a LazyLock singleton, no CLI needed.
Docker image versions are centralized in test-images.env, read at compile
time by build.rs and at CI time by a new docker-cache composite action that
caches pulled images across all three workflows.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]