-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathidgen_test.go
90 lines (75 loc) · 1.57 KB
/
idgen_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package idgen
import (
"log"
"sync"
"testing"
"time"
"github.com/go-redis/redis/v7"
)
var redisCli *redis.Client
func TestNewIDGenRedis(t *testing.T) {
redisCli = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
})
idgen := NewIDGen(redisCli, 0)
for i := 0; i < 1000; i++ {
log.Println(idgen.New())
}
}
func TestNewIDGenLocal(t *testing.T) {
idgen := NewIDGen(nil, 0)
for i := 0; i < 1000; i++ {
log.Println(idgen.New())
}
}
func TestNewIDGenRedisConcurrent(t *testing.T) {
redisCli = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
})
wg := sync.WaitGroup{}
wg.Add(16)
for i := 0; i < 16; i++ {
inst := i
go func(inst int64) {
idgen := NewIDGen(redisCli, inst)
for j := 0; j < 200; j++ {
id, _ := idgen.New()
ts, inst, sn := Parse(id)
log.Println(id, time.Unix(ts, sn), inst, sn)
}
wg.Done()
}(int64(inst))
}
wg.Wait()
}
func TestNewIDGenLocalConcurrent(t *testing.T) {
wg := sync.WaitGroup{}
wg.Add(16)
for i := 0; i < 16; i++ {
inst := i
go func(inst int64) {
idgen := NewIDGen(nil, inst)
for j := 0; j < 200; j++ {
id, _ := idgen.New()
ts, inst, sn := Parse(id)
log.Println(id, time.Unix(ts, sn), inst, sn)
}
wg.Done()
}(int64(inst))
}
wg.Wait()
}
func TestParse(t *testing.T) {
redisCli = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
})
idgen := NewIDGen(redisCli, 0)
var ids [1000]int64
for i := 0; i < 1000; i++ {
ids[i], _ = idgen.New()
}
for i := 0; i < 1000; i++ {
ts, inst, sn := Parse(ids[i])
log.Println(ids[i], time.Unix(ts, sn), inst, sn)
}
}