Engula ClientCompat is a Docker-runnable client compatibility verification tool. It packages the official test suites of mainstream Redis community clients into an image, uses the same set of tests to verify both the Redis 7.2 baseline and Engula, and generates an HTML report.
This official guide only covers the Docker image + common run modes + report interpretation. Advanced usage such as building from source, switching client source code, persisting long-term trends, and deep CI integration is maintained in the open-source project documentation.
Security note: You only need to mount the host's Docker socket into the test container when running tests such as
jedis,redis-py, andnode-redisthat require launching additional helper containers. This allows the container to call the host's Docker daemon, so please only do this on a controlled test machine.
Client compatibility testing answers the question: when an existing Redis client SDK uses Engula as the server, do common behaviors such as connections, commands, transactions, Pipelines, Pub/Sub, Streams, and TLS remain consistent with the Redis 7.2 baseline?
The current image focuses on 4 community clients:
| Client | Language | Default Version | Test Method |
|---|---|---|---|
| Jedis | Java | v6.2.0 | Maven / JUnit |
| redis-py | Python | master | pytest |
| go-redis | Go | v9.3.1 | go test / Ginkgo |
| node-redis | Node.js | stable | npm / Mocha |
If you just want to quickly confirm Redis command and data structure compatibility, prefer Engula KernelCompat. If you need full delivery acceptance testing, use Engula CodeProof. ClientCompat sits between the two, specifically verifying the real client ecosystem.
Each client test runs through the same workflow:
report.html, showing the pass rates of Engula and the Redis baseline, the differing cases, and the log locations.The default criterion is that the pass rate aligns with the Redis baseline. The report lists both the Redis baseline results and the Engula results, making it easy to determine whether a difference comes from Engula behavior, client test assumptions, or the upstream test environment.
The official version runs using a prebuilt Docker image, so you do not need to install Java, Maven, Python, Go, Node.js, or client source code on the host. You only need to prepare:
| Item | Description |
|---|---|
| Docker | Docker is installed on the host and can run docker pull and docker run |
| Disk directory | Prepare a results/ directory to store reports |
| CPU / Memory | At least 8GB of memory is recommended; running all 4 clients fully takes longer than running a single client |
| Network | The first time you run some client tests, you may need to pull helper test images |
The go-redis test does not require mounting the Docker socket, making it suitable as a first quick run-through. jedis, redis-py, and node-redis launch helper containers, so they require additionally mounting the Docker socket.
:latest is a multi-architecture image; amd64 and arm64 hosts will automatically pull the matching architecture.
go-redis does not require mounting the Docker socket, so its command is the simplest:
Here --sub 2.3 corresponds to go-redis, used as a minimal example. For full client verification, you can directly run the command in the next section.
After the run finishes, check the report under the results/ directory in your host's current directory:
Open report.html in a browser to view this run's pass rate, failed cases, and log index.
To run all 4 clients at once, use the launch mode with the Docker socket:
This command runs Jedis, redis-py, go-redis, and node-redis in the order built into the image.
For reference, a full run takes about 38 minutes on an M2 machine; actual time will be affected by the network, helper image cache, and Docker resource limits.
Parameter descriptions:
| Parameter | Purpose |
|---|---|
--net host |
Lets the test container communicate over the network with the helper containers it launches |
/var/run/docker.sock |
Allows the test container to call the host's Docker daemon |
/tmp:/tmp |
Lets helper containers access temporary configs generated during testing |
/work/results |
Report output directory inside the container |
If you only run the go-redis example, you do not need --net host, the Docker socket, or the /tmp binding.
After a full run, the results directory looks like:
Common files:
| File | Purpose |
|---|---|
main.log |
Complete run log of a single client test |
report.html |
HTML report of a single client test |
client.json |
Aggregated data for the client suite |
index.html |
Summary page for this round of client verification |
The reports are static HTML and do not depend on a server. You can open them directly in a browser or archive them as PoC or acceptance materials.
Each client report displays these core fields:
| Field | Meaning |
|---|---|
Pass |
Number of test cases passing on Engula |
Fail |
Number of test cases failing on Engula |
Skip |
Number of cases skipped by the client test suite itself |
Pass Rate |
Engula's pass rate |
Baseline |
Pass rate of the same test suite on Redis 7.2 |
Delta |
Difference between Engula's pass rate and the Redis baseline pass rate |
We recommend focusing on three categories of information:
No. The tool automatically starts and manages the Redis and Engula processes, and cleans up automatically after testing finishes.
Some clients' official test suites launch helper containers during testing, for example to test clusters, proxies, Sentinel, or TLS scenarios. The test container needs to launch these helper containers through the host's Docker daemon, so /var/run/docker.sock must be mounted.
/tmp:/tmp?Some tests generate temporary configs under /tmp and then mount those configs into helper containers. Mounting /tmp:/tmp ensures the test container and the host's Docker daemon see the same temporary path.
The first run may need to pull helper test images. We recommend first confirming that the host's Docker can pull images normally, then running the full client verification. If you just want to quickly confirm that the toolchain works, you can run the go-redis example first.
Engula CodeProof is a complete verification suite covering compatibility, clients, performance, stability, migration, platform, and high availability. ClientCompat retains only its client verification capability, with a more focused image and documentation, making it suitable for verifying the client ecosystem independently.