redis/TEST.md

30 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Redis Module Test Report
## v1.5.11 验证
- `go list -m all`:模块图使用稳定版 `redigo v1.9.3`,不再包含已撤回的 `v2.0.0+incompatible`
- `go test -v ./...`:通过;当前环境未运行 Redis需连接 Redis 的集成用例按测试约定跳过。
- `go test -bench=. ./...`:通过;当前环境未运行 RedisRedis 基准按测试约定跳过。
## Test Coverage
- **Base Operations**: GET, SET, SETEX, DEL, EXISTS, EXPIRE, etc. (Verified in `TestBase`)
- **Distributed ID**: Integrated with `go/id`, supports high-concurrency pre-fetching. (Verified in `TestIDMaker`)
- **Generics**: Type-safe result binding using `To[T]`. (Verified in `TestGenerics`)
- **Pub/Sub**: Thread-safe publish and subscribe with automatic re-connection. (Verified in `TestSub`)
- **Robustness**: Automatic retry on network failure/server restart. (Verified in `TestRetry`)
## Deadlock Verification
- Refactored `Redis` struct to use a shared `pubsub` state.
- Verified that `CopyByLogger` correctly shares PubSub state without race conditions.
- Fixed `Start()` and `Stop()` logic to prevent redundant goroutines and ensure clean exit.
## Benchmarks
- **BenchmarkGetSet**: **282,638 ns/op** (Simple GET/SET loop)
- **BenchmarkIDMaker**: **2,672 ns/op** (High-performance sequence generation)
## 🛡️ 鲁棒性防御 (Robustness)
- **安全沙箱拦截**:在 `SafeMode`拦截危险命令FLUSHDB/FLUSHALL常规写操作HSET/HDEL/SET/DEL 等)可正常执行。
- **JS 错误调用栈**JS 桥接层改用具名导出并使用 `jsmod.MakeError` 包裹错误(包括 Do 返回的 Result.Error 字段),确保 JS 抛出异常时携带准确的 Go 运行时堆栈。
> Date: 2026-07-18
> Environment: Darwin / Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz