github.com/teng231/glock@v1.1.11/distributed_queue_test.go (about) 1 package glock 2 3 import ( 4 "encoding/json" 5 "log" 6 "testing" 7 "time" 8 9 "github.com/go-redis/redis/v8" 10 ) 11 12 type User struct { 13 Id string `json:"id"` 14 } 15 16 func TestSet(t *testing.T) { 17 client := redis.NewClient(&redis.Options{ 18 Password: "", 19 Addr: "localhost:6379", 20 DB: 1, // use default DB 21 }) 22 q, err := ConnectDistributedQueue(client, "queue", 3*time.Second) 23 if err != nil { 24 log.Print(err) 25 } 26 if err := q.Set("test1", &User{"1"}, &User{"2"}, &User{"3"}, &User{"4"}, &User{"1"}); err != nil { 27 t.Fail() 28 } 29 s, err := q.Size("test1") 30 if err != nil || s != 5 { 31 t.Fail() 32 } 33 log.Print(s, err) 34 } 35 36 func TestPushAndPop(t *testing.T) { 37 client := redis.NewClient(&redis.Options{ 38 Password: "", 39 Addr: "localhost:6379", 40 DB: 1, // use default DB 41 }) 42 q, err := ConnectDistributedQueue(client, "queue", 3*time.Second) 43 if err != nil { 44 log.Print(err) 45 } 46 if err := q.Set("test1", &User{"1"}, &User{"2"}, &User{"3"}, &User{"4"}, &User{"5"}, &User{"6"}); err != nil { 47 log.Print(err) 48 t.Fail() 49 } 50 51 if err := q.Push("test1", &User{"Tenguyen"}); err != nil { 52 log.Print(2222, err) 53 } 54 out := &User{} 55 if err := q.Pop("test1", out); err != nil || out.Id != "Tenguyen" { 56 log.Print(out, err) 57 t.Fail() 58 } 59 } 60 61 func TestUnshiftAndShift(t *testing.T) { 62 client := redis.NewClient(&redis.Options{ 63 Password: "", 64 Addr: "localhost:6379", 65 DB: 1, // use default DB 66 }) 67 q, err := ConnectDistributedQueue(client, "queue", 3*time.Second) 68 if err != nil { 69 log.Print(err) 70 } 71 if err := q.Set("test1", &User{"1"}, &User{"2"}, &User{"3"}, &User{"4"}, &User{"1"}); err != nil { 72 log.Print(err) 73 t.Fail() 74 } 75 76 if err := q.Unshift("test1", &User{"Tenguyen"}); err != nil { 77 log.Print(2222, err) 78 } 79 out := &User{} 80 if err := q.Shift("test1", out); err != nil || out.Id != "Tenguyen" { 81 log.Print(out, err) 82 t.Fail() 83 } 84 } 85 86 func TestList(t *testing.T) { 87 client := redis.NewClient(&redis.Options{ 88 Password: "", 89 Addr: "localhost:6379", 90 DB: 1, // use default DB 91 }) 92 q, err := ConnectDistributedQueue(client, "queue", 3*time.Second) 93 if err != nil { 94 log.Print(err) 95 } 96 out := []*User{} 97 err = q.List("test1", 0, 3, func(data []string) error { 98 for _, item := range data { 99 u := &User{} 100 if err := json.Unmarshal([]byte(item), u); err != nil { 101 log.Print(err) 102 continue 103 } 104 out = append(out, u) 105 } 106 return nil 107 }) 108 bin, _ := json.Marshal(out) 109 log.Print(11111, string(bin), err) 110 out = []*User{} 111 err = q.List("test1", 4, 7, func(data []string) error { 112 for _, item := range data { 113 u := &User{} 114 if err := json.Unmarshal([]byte(item), u); err != nil { 115 log.Print(err) 116 continue 117 } 118 out = append(out, u) 119 } 120 return nil 121 }) 122 bin2, _ := json.Marshal(out) 123 log.Print(2222222, string(bin2), err) 124 }