bloom_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package bloom
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/wuntsong-org/go-zero-plus/core/logx"
  7. "github.com/wuntsong-org/go-zero-plus/core/stores/redis/redistest"
  8. )
  9. func TestRedisBitSet_New_Set_Test(t *testing.T) {
  10. store := redistest.CreateRedis(t)
  11. ctx := context.Background()
  12. bitSet := newRedisBitSet(store, "test_key", 1024)
  13. isSetBefore, err := bitSet.check(ctx, []uint{0})
  14. if err != nil {
  15. t.Fatal(err)
  16. }
  17. if isSetBefore {
  18. t.Fatal("Bit should not be set")
  19. }
  20. err = bitSet.set(ctx, []uint{512})
  21. if err != nil {
  22. t.Fatal(err)
  23. }
  24. isSetAfter, err := bitSet.check(ctx, []uint{512})
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. if !isSetAfter {
  29. t.Fatal("Bit should be set")
  30. }
  31. err = bitSet.expire(3600)
  32. if err != nil {
  33. t.Fatal(err)
  34. }
  35. err = bitSet.del()
  36. if err != nil {
  37. t.Fatal(err)
  38. }
  39. }
  40. func TestRedisBitSet_Add(t *testing.T) {
  41. store := redistest.CreateRedis(t)
  42. filter := New(store, "test_key", 64)
  43. assert.Nil(t, filter.Add([]byte("hello")))
  44. assert.Nil(t, filter.Add([]byte("world")))
  45. ok, err := filter.Exists([]byte("hello"))
  46. assert.Nil(t, err)
  47. assert.True(t, ok)
  48. }
  49. func TestFilter_Exists(t *testing.T) {
  50. store, clean := redistest.CreateRedisWithClean(t)
  51. rbs := New(store, "test", 64)
  52. _, err := rbs.Exists([]byte{0, 1, 2})
  53. assert.NoError(t, err)
  54. clean()
  55. rbs = New(store, "test", 64)
  56. _, err = rbs.Exists([]byte{0, 1, 2})
  57. assert.Error(t, err)
  58. }
  59. func TestRedisBitSet_check(t *testing.T) {
  60. store, clean := redistest.CreateRedisWithClean(t)
  61. ctx := context.Background()
  62. rbs := newRedisBitSet(store, "test", 0)
  63. assert.Error(t, rbs.set(ctx, []uint{0, 1, 2}))
  64. _, err := rbs.check(ctx, []uint{0, 1, 2})
  65. assert.Error(t, err)
  66. rbs = newRedisBitSet(store, "test", 64)
  67. _, err = rbs.check(ctx, []uint{0, 1, 2})
  68. assert.NoError(t, err)
  69. clean()
  70. rbs = newRedisBitSet(store, "test", 64)
  71. _, err = rbs.check(ctx, []uint{0, 1, 2})
  72. assert.Error(t, err)
  73. }
  74. func TestRedisBitSet_set(t *testing.T) {
  75. logx.Disable()
  76. store, clean := redistest.CreateRedisWithClean(t)
  77. ctx := context.Background()
  78. rbs := newRedisBitSet(store, "test", 0)
  79. assert.Error(t, rbs.set(ctx, []uint{0, 1, 2}))
  80. rbs = newRedisBitSet(store, "test", 64)
  81. assert.NoError(t, rbs.set(ctx, []uint{0, 1, 2}))
  82. clean()
  83. rbs = newRedisBitSet(store, "test", 64)
  84. assert.Error(t, rbs.set(ctx, []uint{0, 1, 2}))
  85. }