Engula CodeProof is a Docker-runnable verification toolkit for running Engula's compatibility, client, performance, stability, migration, platform, and high-availability verification on a local test machine, generating auditable HTML reports.
This official site guide only covers the Docker image + interactive TUI workflow. Source builds, bare-metal installation, command-line arguments, automation integration, and remote-server mode are maintained in the open-source project documentation.
Security note: You only need to mount the host Docker socket into the CodeProof container when you select tests in the TUI that themselves need to launch Docker containers, such as
clientorplatform. This allows the container to call the host Docker daemon, so use it only on controlled test machines.
CodeProof is Engula's complete verification suite. It organizes the official Redis test set, community client tests, performance benchmarks, and operations scenarios into multiple suites. Every run writes logs and reports to the results/ directory.
| Suite | What It Verifies |
|---|---|
compat |
Compatibility of Redis 7.2 commands, protocol, Lua, transactions, Pub/Sub, Stream, persistence, ACL, modules, and more |
client |
Compatibility with community clients such as Jedis, redis-py, go-redis, and node-redis |
perf |
Throughput, latency, CPU, memory efficiency, RDB save/load, batched requests, and performance of non-string data types |
stability |
Memory leak detection, long-running stability, crash recovery, BGSAVE stability, and more |
migration |
RDB/AOF import, online migration, and migration result validation |
platform |
Live verification across different Linux distributions, architectures, and container environments |
ha |
Sentinel, Cluster, replication, reshard, mixed deployments, and network partition recovery |
The official-site edition runs from a Docker image, so you do not need to install Go, the Redis source, memtier_benchmark, JDK, Node.js, or Python dependencies on the host. The image already bundles the main runtime components:
| Component | Path in Image |
|---|---|
engula-server |
/root/.proof/bin/engula-server |
redis-server, redis-cli, redis-benchmark |
/root/.proof/bin/ |
memtier_benchmark |
/root/.proof/bin/memtier_benchmark |
proof CLI and proof-web |
/root/.proof/bin/ |
| Modules such as RedisJSON, RediSearch, RedisBloom, TairHash, TairString | /root/.proof/modules/ |
| Redis source and client source | /root/.proof/src/ |
All you need to prepare is:
| Item | Description |
|---|---|
| Docker | Docker installed on the host and able to run docker pull and docker run |
| Terminal | The TUI requires a real terminal, so run with -it |
| Disk directory | A results/ directory to store reports |
| CPU / memory | Lightweight compatibility tests use few resources; performance, stability, and full runs need more CPU and memory |
If you select client or platform, the test process will additionally pull community or platform images. Hosts in mainland China may wait longer due to slow image download speeds.
The prebuilt image is published with the latest tag. Docker automatically pulls the image matching the host platform, so there is no need to manually distinguish between x86, Arm, or different operating systems:
Run from any working directory:
This command enters the interactive terminal interface. When the run finishes, reports are written to results/ in the current directory on the host.
If you plan to run client or platform in the TUI, use the startup command below so the CodeProof container can access the host Docker:
--net host lets the CodeProof container and the child containers it launches communicate over the network; /var/run/docker.sock lets the CodeProof container call the host Docker daemon; /tmp:/tmp makes temporary files written by client sub-items (such as the sentinel.conf from the 2.4 node-redis sentinel test) visible to the host Docker daemon. When running only compat, perf, stability, migration, or ha, these three options are usually not needed.
After launching, you first enter the selection screen:
Common controls:
| Key | Action |
|---|---|
↑ / ↓ |
Move within the current list |
→ |
Switch from the suite column to the sub-item column |
← |
Return from the sub-item column to the suite column |
Enter |
Run the currently selected suite or sub-item |
q |
Quit |
If you stay on a suite and press Enter directly, all of that suite's sub-items run. If you switch to the right column, select a sub-item, and then press Enter, only that sub-item runs.
After pressing Enter, you enter the run dashboard:
The dashboard has three sections:
| Section | Meaning |
|---|---|
Queue |
The sub-item queue in the current batch, with PASS / FAIL / running status |
Current / Live metrics |
The current sub-item, progress, and available run metrics |
Output |
The tail of the current run log |
During a run you can press l to view the full log and Esc to return to the dashboard; press c to cancel the current run.
Once all sub-items finish, you reach the completion page:
The container usually has no graphical browser configured, so Enter may not open the page directly. You can open the generated HTML files under results/ on the host instead.
For your first run, we recommend starting small:
| Goal | Recommended Choice |
|---|---|
| Quickly confirm the tool runs end to end | A single sub-item in compat, such as coverage |
| See the official Redis test coverage | compat |
| Verify the client ecosystem | client; mount the Docker socket when launching the container |
| Check throughput, latency, and memory efficiency | perf |
| Run stability verification | stability; note that some sub-items take a while |
| Verify RDB / AOF or migration paths | migration |
| Verify different Linux platforms | platform; mount the Docker socket when launching the container |
| Verify high-availability behavior | ha |
We do not recommend choosing All suites on your first run. A full run takes longer and depends more on machine resources and network environment.
After a run finishes, a results/ directory appears in the current directory on the host:
Common files:
| File | Purpose |
|---|---|
main.log |
The full run log for the current sub-item |
report.html |
The HTML report for a single sub-item |
index.html |
The TUI batch summary page |
report.json |
The batch summary data |
Open report.html or index.html directly in a browser to view the results. The reports are static HTML and require no server.
Make sure docker run includes -it. The TUI needs a real terminal and cannot run in a plain pipe or a non-interactive terminal.
client or platformThese tests launch additional containers inside the CodeProof container. Use the startup method with the Docker socket:
client or platform waits for a long timeThese tests may need to pull community or platform images from docker.io. On hosts with slow image download speeds in mainland China, the first run waits longer. We recommend starting with suites such as compat, perf, or ha that do not pull extra images.
Confirm that you mounted the results directory at launch:
The TUI's default results directory is /work/results. If this directory is not mounted, reports stay inside the container and are not retained after the container exits.