redis_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package cache
  2. import (
  3. "errors"
  4. "strings"
  5. "testing"
  6. "time"
  7. "github.com/redis/go-redis/v9"
  8. )
  9. const (
  10. TEST_PREFIX = "test"
  11. )
  12. func getRedisConnection(t *testing.T) error {
  13. return InitRedisClient("0.0.0.0:6379", "difyai123456")
  14. }
  15. func TestRedisConnection(t *testing.T) {
  16. // get redis connection
  17. if err := getRedisConnection(t); err != nil {
  18. t.Errorf("get redis connection failed: %v", err)
  19. return
  20. }
  21. // close
  22. if err := Close(); err != nil {
  23. t.Errorf("close redis client failed: %v", err)
  24. return
  25. }
  26. }
  27. func TestRedisTransaction(t *testing.T) {
  28. // get redis connection
  29. if err := getRedisConnection(t); err != nil {
  30. t.Errorf("get redis connection failed: %v", err)
  31. return
  32. }
  33. defer Close()
  34. // test transaction
  35. err := Transaction(func(p redis.Pipeliner) error {
  36. // set key
  37. if err := Store(
  38. strings.Join([]string{TEST_PREFIX, "key"}, ":"),
  39. "value",
  40. time.Second,
  41. p,
  42. ); err != nil {
  43. t.Errorf("store key failed: %v", err)
  44. return err
  45. }
  46. return errors.New("test transaction error")
  47. })
  48. if err == nil {
  49. t.Errorf("transaction should return error")
  50. return
  51. }
  52. // get key
  53. value, err := GetString(
  54. strings.Join([]string{TEST_PREFIX, "key"}, ":"),
  55. )
  56. if err != ErrNotFound {
  57. t.Errorf("key should not exist")
  58. return
  59. }
  60. if value != "" {
  61. t.Errorf("value should be empty")
  62. return
  63. }
  64. // test success transaction
  65. err = Transaction(func(p redis.Pipeliner) error {
  66. // set key
  67. if err := Store(
  68. strings.Join([]string{TEST_PREFIX, "key"}, ":"),
  69. "value",
  70. time.Second,
  71. p,
  72. ); err != nil {
  73. t.Errorf("store key failed: %v", err)
  74. return err
  75. }
  76. return nil
  77. })
  78. if err != nil {
  79. t.Errorf("transaction should not return error")
  80. return
  81. }
  82. defer Del(strings.Join([]string{TEST_PREFIX, "key"}, ":"))
  83. // get key
  84. value, err = GetString(
  85. strings.Join([]string{TEST_PREFIX, "key"}, ":"),
  86. )
  87. if err != nil {
  88. t.Errorf("get key failed: %v", err)
  89. return
  90. }
  91. if value != "value" {
  92. t.Errorf("value should be value")
  93. return
  94. }
  95. }