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  }