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:
- Environment Setup - Install required tools (Docker CE, language runtime, build tools)
- Clone Repository - Clone the official client library repository and checkout a specific version
- 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)
- 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
- Run Tests - Execute the test suite using the client's native test framework
- 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.