redis/TEST.md

30 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

# 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