Client Compatibility Testing

Engula is fully compatible with the Redis/Valkey protocol and maintains compatibility with the RESP (Redis Serialization Protocol). This section documents compatibility testing with popular Redis client libraries across different programming languages.

Overview

Client compatibility testing verifies that existing Redis client libraries can work seamlessly with Engula. The testing process involves running the official test suites of each client library against Engula server instead of Redis, with necessary modifications to accommodate the test environment.

Key aspects of the testing approach:

  • Using official client library repositories and test suites
  • Replacing Redis server with Engula server in the test environment
  • Applying necessary code modifications when required
  • Testing compatibility with Redis/Valkey protocol

Test Methodology

General Testing Approach

Client compatibility tests typically follow these steps:

  1. Environment Setup - Install required tools (Docker CE, language runtime, build tools)
  2. Clone Repository - Clone the official client library repository and checkout a specific version
  3. Server Replacement - Replace Redis server with Engula server using one of these methods:
    • Binary Replacement: Copy engula-server to /usr/local/bin/redis-server (used by Jedis, Lettuce, Redisson)
    • Docker Image: Use pre-configured Docker images containing Engula server (used by go-redis, node-redis, NRedisStack, redis-py)
    • Docker Compose: Set up test environment using Docker Compose (used by NRedisStack, redis-py)
  4. Code Modifications - Apply necessary modifications:
    • Update connection paths or configuration files
    • Fix test code for compatibility issues
    • Skip incompatible test cases when necessary
    • Update dependency versions if needed
  5. Run Tests - Execute the test suite using the client's native test framework
  6. Review Results - Analyze test output and document compatibility status

Common Testing Patterns

Different clients use different approaches based on their architecture:

  • Binary Replacement: Java clients (Jedis, Lettuce, Redisson) typically replace the redis-server binary with engula-server at the system level
  • Docker-Based: Go, Node.js, Python, and .NET clients often use Docker images containing Engula server
  • Configuration Updates: Some clients require updating test configuration files or environment variables

Testing Scope

Tests cover core Redis functionality and client-specific features:

  • Connection Management - Establishing connections, connection pooling, reconnection logic
  • Command Execution - All Redis commands supported by Engula
  • Data Types - String, Hash, List, Set, Sorted Set, Stream, Bitmap, HyperLogLog, Geo
  • Transactions - Multi/exec, watch/unwatch
  • Pub/Sub - Publish and subscribe functionality
  • Pipelining - Command pipelining and batch operations
  • Advanced Features - Client-specific features like distributed objects (Redisson), reactive APIs (Lettuce), async support (redis-py, node-redis)

Test Frameworks Used

Each client uses its native test framework:

  • Go: ginkgo
  • Java: JUnit 5
  • Node.js: mocha
  • Python: pytest
  • .NET: dotnet test

Supported Clients

We test compatibility with the following client libraries:

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

Test Results Summary

Compatibility Status

All tested clients show ✅ Compatible status with Engula. The compatibility is achieved through:

  • Protocol Compatibility: Full RESP protocol compliance
  • Command Compatibility: Support for all core Redis commands
  • Test Modifications: Some clients require minor modifications to test code or configuration (documented in the detailed testing guide)

Modifications Required

The level of modifications varies by client:

  • Minimal: go-redis, node-redis, NRedisStack, redis-py - mostly environment configuration
  • Moderate: Jedis, Lettuce - binary replacement and minor test adjustments
  • More Extensive: Redisson - binary replacement, dependency fixes, and multiple test code modifications

Protocol Support

  • RESP Protocols: RESP2 and RESP3 protocols supported
  • Compatibility: Engula maintains compatibility with Redis/Valkey protocol standards

Detailed Testing Documentation

For detailed testing procedures, test results, and step-by-step instructions for each client library, please refer to our comprehensive testing documentation:

View Detailed Client Compatibility Testing Guide

This guide includes:

  • Detailed setup instructions for each client
  • Environment configuration steps
  • Code modifications and test adjustments
  • Test execution commands
  • Complete test results and compatibility status

Test Environment

Standard test environment:

  • Protocol: RESP2 and RESP3 protocols
  • Connection: Varies by client (Docker containers or localhost:6379)
  • Test Framework: Client-specific (see Test Frameworks section above)

For specific version information and test combinations, refer to the detailed testing documentation.

Contributing

If you encounter compatibility issues or have test results for additional client libraries, please contact us at support@montplex.com.


Note: Client compatibility testing is an ongoing effort. Results may vary based on Engula version and client library version. For detailed information, refer to the comprehensive testing documentation.