12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package bloom
- import (
- "testing"
- "time"
- "github.com/alicebob/miniredis"
- "github.com/stretchr/testify/assert"
- "github.com/tal-tech/go-zero/core/lang"
- "github.com/tal-tech/go-zero/core/stores/redis"
- )
- func TestRedisBitSet_New_Set_Test(t *testing.T) {
- s, clean, err := createMiniRedis()
- assert.Nil(t, err)
- defer clean()
- store := redis.NewRedis(s.Addr(), redis.NodeType)
- bitSet := newRedisBitSet(store, "test_key", 1024)
- isSetBefore, err := bitSet.check([]uint{0})
- if err != nil {
- t.Fatal(err)
- }
- if isSetBefore {
- t.Fatal("Bit should not be set")
- }
- err = bitSet.set([]uint{512})
- if err != nil {
- t.Fatal(err)
- }
- isSetAfter, err := bitSet.check([]uint{512})
- if err != nil {
- t.Fatal(err)
- }
- if !isSetAfter {
- t.Fatal("Bit should be set")
- }
- err = bitSet.expire(3600)
- if err != nil {
- t.Fatal(err)
- }
- err = bitSet.del()
- if err != nil {
- t.Fatal(err)
- }
- }
- func TestRedisBitSet_Add(t *testing.T) {
- s, clean, err := createMiniRedis()
- assert.Nil(t, err)
- defer clean()
- store := redis.NewRedis(s.Addr(), redis.NodeType)
- filter := New(store, "test_key", 64)
- assert.Nil(t, filter.Add([]byte("hello")))
- assert.Nil(t, filter.Add([]byte("world")))
- ok, err := filter.Exists([]byte("hello"))
- assert.Nil(t, err)
- assert.True(t, ok)
- }
- func createMiniRedis() (r *miniredis.Miniredis, clean func(), err error) {
- r, err = miniredis.Run()
- if err != nil {
- return nil, nil, err
- }
- return r, func() {
- ch := make(chan lang.PlaceholderType)
- go func() {
- r.Close()
- close(ch)
- }()
- select {
- case <-ch:
- case <-time.After(time.Second):
- }
- }, nil
- }
|