Engula KernelCompat (Kernel Compatibility Testing Tool)
1. Statement and Conclusion
- Technical approach: Engula implements a kernel-level storage engine replacement within the Redis kernel, reusing Redis's protocol, command processing, and client ecosystem.
- Compatibility conclusion: Engula 2.1 performs protocol and semantic validation using Redis 7.2 behavior as the baseline. The published pass rate, failure causes, and impact scope are governed by proof-live. Application migration typically requires no code changes or client replacement.
2. Design Goals and Comparison Methodology
- Goal: Validate the degree of compatibility between Engula 2.1 and the Redis 7.2 protocol and data structures.
- Metrics: Protocol compatibility, data structure compatibility.
- Comparison methodology:
- Use Redis 7.2's native
make test cases as the benchmark, employing the Redis native testing framework to ensure case consistency and reproducibility.
- Compare test results item by item, tallying the pass rate and failure causes.
2.1 Test Metrics
- Data structure compatibility: Operational consistency of the String, Hash, List, Set, Sorted Set, Stream, Bitmap, HyperLogLog, and Geo data structures.
2.2 Validation Principles
Redis uses a Tcl-based testing framework (test.tcl plus multiple unit/*.tcl cases) to drive redis-server and redis-cli, executing commands over the RESP protocol and verifying the expected output. Tests are run by directly invoking runtest.tcl, which supports filtering by module and tag, parallel execution, data directory isolation, and other features, ensuring reproducible results and low coupling to implementation details.
The Engula compatibility validation approach is as follows:
- Select the set of Tcl cases related to the data structures (String, Hash, List, Set, Sorted Set, Stream, Bitmap, HyperLogLog, Geo), use the native test driver script
runtest.tcl to initiate tests on the client side, and then compare whether the expected output of the test cases matches Engula's actual responses.
- Exclude tests that depend on Redis's internal memory layout or debug interfaces (debug/internal representations), which does not change compatibility for user-facing applications.
Tcl file list:
- unit/scan
- unit/type/string
- unit/type/incr
- unit/type/list
- unit/type/list-2
- unit/type/list-3
- unit/type/set
- unit/type/zset
- unit/type/hash
- unit/type/stream
- unit/type/stream-cgroups
- unit/sort
- unit/expire
- unit/pubsub
- unit/pubsubshard
- unit/bitops
- unit/bitfield
- unit/geo
- unit/hyperloglog
For more granular test items, see the output.log generated by Engula KernelCompat (which contains the execution details of each case):

Quick Usage Summary
| Item |
Content |
| Tool overview |
Validates Engula's Redis 7.2 command, protocol, and data structure compatibility based on the official Redis testing framework. |
| Prerequisites |
Docker can run locally; prepare the output.log and summary.html output files. |
| Quick start |
docker run --user $(id -u):$(id -g) -it --rm -v $(pwd)/output.log:/montplex/output.log -v $(pwd)/summary.html:/montplex/summary.html registry.ap-southeast-1.aliyuncs.com/montplex/engula-kernel-compat:latest |
| Interpreting output |
Use summary.html for the overall pass rate and category statistics; use output.log for the details of each failing case. |
| Full example |
See "Running Engula KernelCompat" below. |
Command-Line Arguments
| Argument |
Purpose |
--user $(id -u):$(id -g) |
Makes the report files owned by the current user. |
-v $(pwd)/output.log:/montplex/output.log |
Mounts the detailed log output file. |
-v $(pwd)/summary.html:/montplex/summary.html |
Mounts the HTML summary report output file. |
3. Quick Kernel Compatibility Test (Engula KernelCompat)
3.1 Download the Testing Tool
- Docker image:
registry.ap-southeast-1.aliyuncs.com/montplex/engula-kernel-compat:latest
3.2 Environment Requirements
Engula KernelCompat is provided as a Docker image and can run on Linux or macOS with Docker installed. The recommended environment is as follows:
- CentOS version ≥ 7.9
- Ubuntu version ≥ 18.04
- The official Docker version is recommended (installation guide; prepare the image in advance if network access is slow)
3.3 Running Engula KernelCompat
1docker pull registry.ap-southeast-1.aliyuncs.com/montplex/engula-kernel-compat:latest
2
3# In any folder
4mkdir tmp_test && cd tmp_test
5touch output.log
6touch summary.html
7
8docker run --user $(id -u):$(id -g) -it --rm \
9 -v $(pwd)/output.log:/montplex/output.log \
10 -v $(pwd)/summary.html:/montplex/summary.html \
11 registry.ap-southeast-1.aliyuncs.com/montplex/engula-kernel-compat:latest
Running interface illustration:

3.4 Viewing the Results
After the run completes, a summary.html file is generated, which can be opened in a browser to view the results.

The report includes:
- Compatibility pass statistics
- Major and minor category breakdowns of passing commands
4. FAQ
Is this the full set of data structure cases? Have any been removed?
Yes, some have been removed. Some debug-type test cases rely on Redis's original internal data structures for testing. Because Engula's storage format differs from Redis's, these cases have been converted to the format of Engula's in-memory storage. Such cases generally do not affect Redis usage and do not affect Redis compatibility.