redis/TEST.md

1.8 KiB
Raw Permalink Blame 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