bloom_test.go 2.1 KB

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