redis_test.go 819 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package handler
  2. import (
  3. "context"
  4. "ehang.io/nps/lib/enet"
  5. "github.com/go-redis/redis/v8"
  6. "github.com/stretchr/testify/assert"
  7. "net"
  8. "testing"
  9. )
  10. func TestHandleRedisConn(t *testing.T) {
  11. h := RedisHandler{}
  12. rule := &testRule{}
  13. h.AddRule(rule)
  14. finish := make(chan struct{}, 0)
  15. ln, err := net.Listen("tcp", "127.0.0.1:0")
  16. assert.NoError(t, err)
  17. go func() {
  18. conn, err := ln.Accept()
  19. assert.NoError(t, err)
  20. buf := make([]byte, 1024)
  21. n, err := conn.Read(buf)
  22. assert.NoError(t, err)
  23. res, err := h.HandleConn(buf[:n], enet.NewReaderConn(conn))
  24. assert.NoError(t, err)
  25. assert.Equal(t, true, res)
  26. assert.Equal(t, true, rule.run)
  27. finish <- struct{}{}
  28. }()
  29. go func() {
  30. rdb := redis.NewClient(&redis.Options{
  31. Addr: ln.Addr().String(),
  32. })
  33. rdb.Ping(context.Background())
  34. }()
  35. <-finish
  36. }