bloom_test.go 2.2 KB

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