Client Compatibility Testing

Engula provides full compatibility with both the Redis® and Valkey protocols and adheres to the RESP (Redis Serialization Protocol) standard. This document summarizes the methodology and results of Engula’s client compatibility testing across widely used Redis client libraries in multiple programming languages.

Overview

Client compatibility testing ensures that existing Redis libraries operate seamlessly with Engula without requiring code changes. Each test runs the official test suite of a popular Redis client against an Engula server instead of Redis, with minimal adjustments made only when necessary.

Testing highlights:

  • Official client repositories and test suites used directly
  • Engula server substituted for Redis in the test environment
  • Minor code or configuration adaptations applied where required
  • Validation of protocol and command-level compatibility

Test Methodology

General Approach

Each compatibility test follows a standardized workflow:

  1. Environment Setup – Install necessary dependencies (Docker CE, language runtime, build tools).
  2. Repository Checkout – Clone the official client library and check out a specific stable version.
  3. Server Replacement – Replace the Redis server with Engula using one of the following approaches:
    • Binary Replacement: Copy engula-server to /usr/local/bin/redis-server (used by Java-based clients such as Jedis, Lettuce, Redisson).
    • Docker Image: Run Docker containers pre-configured with Engula server (used by go-redis, node-redis, NRedisStack, redis-py).
    • Docker Compose: Deploy test environments using docker-compose (used by redis-py, NRedisStack).
  4. Code Adjustments – Apply small modifications as required:
    • Update connection strings or configuration paths
    • Adapt test scripts for compatibility
    • Skip unsupported or non-relevant tests
    • Adjust dependency versions if necessary
  5. Run Tests – Execute the native test suite using the client’s built-in testing framework.
  6. Analyze Results – Review outcomes, note exceptions, and document final compatibility status.

Testing Patterns

Each client follows its own testing methodology depending on design and tooling:

  • Binary Replacement: Common among Java clients (Jedis, Lettuce, Redisson) replacing redis-server with engula-server.
  • Container-Based Testing: Go, Node.js, Python, and .NET libraries use Docker containers for environment consistency.
  • Configuration Adjustments: Some require edits to environment variables or configuration files only.

Testing Scope

Tests validate Engula’s compatibility across the following Redis features:

  • Connection Management: Pooling, reconnection, and timeout handling
  • Command Execution: Validation of all standard Redis commands supported by Engula
  • Data Structures: Strings, Hashes, Lists, Sets, Sorted Sets, Streams, Bitmaps, HyperLogLogs, and Geospatial types
  • Transactions: MULTI/EXEC and WATCH/UNWATCH mechanisms
  • Pub/Sub: Publish-subscribe messaging patterns
  • Pipelining: Batched command execution
  • Advanced Features:
    • Redisson’s distributed objects
    • Lettuce’s reactive API
    • Async capabilities across node-redis and redis-py

Test Frameworks

Different language clients use their own native test runners:

Language Framework
Go ginkgo
Java JUnit 5
Node.js mocha
Python pytest
.NET dotnet test

Supported Clients

Engula has been tested successfully with the following client libraries:

Client Library Language Status
go-redis Go ✅ Compatible
Jedis Java ✅ Compatible
Lettuce Java ✅ Compatible
NRedisStack .NET ✅ Compatible
node-redis Node.js ✅ Compatible
redis-py Python ✅ Compatible
Redisson Java ✅ Compatible

Test Results Summary

Compatibility Status

All tested clients achieved ✅ Full Compatibility with Engula through:

  • Protocol-level Support: Full RESP2 and RESP3 compliance
  • Command-level Equivalence: Complete coverage of Redis command semantics
  • Minor Adjustments Only: Small environment-specific changes as described in the detailed testing guide

Modification Scope

Modification Level Clients Description
Minimal go-redis, node-redis, NRedisStack, redis-py Simple environment/config adjustments
Moderate Jedis, Lettuce Executable replacement and minor test patching
Extensive Redisson Binary substitution, dependency tuning, and selective test modifications

Protocol Support

  • Supported Versions: RESP2 and RESP3
  • Protocol Compatibility: Fully aligned with Redis® and Valkey protocol specifications

Detailed Testing Documentation

For complete, step-by-step procedures and individual test reports, refer to the comprehensive documentation:

📘 View Detailed Client Compatibility Testing Guide

The guide includes:

  • Step-by-step setup instructions per client
  • Environment and Docker configurations
  • Code and configuration modifications
  • Command-line test execution examples
  • Detailed result analysis per library

Test Environment

Component Description
Protocols RESP2 and RESP3
Connection Method Docker networks or localhost:6379
Framework Client-specific (see table above)

For complete version pairings and test configurations, see the Detailed Testing Documentation.

Contributing

We welcome community participation. If you identify any compatibility issues or have new client testing results, please reach out to: 📧 support@montplex.com

Note: Compatibility testing is a continuous process. Results may vary depending on the Engula and client library versions. For the latest findings, consult the full testing overview.