-
Notifications
You must be signed in to change notification settings - Fork 1
/
init_test.go
64 lines (50 loc) · 895 Bytes
/
init_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
package sqsjkr
import (
"fmt"
"sync"
"github.com/kayac/sqsjkr/throttle"
)
var (
lm = new(sync.Mutex)
tm = new(sync.Mutex)
)
type TestLocker struct {
lockTable map[string]bool
}
func (tjl *TestLocker) Lock(k, v string) error {
lm.Lock()
defer lm.Unlock()
if tjl.lockTable[k] {
return fmt.Errorf("already locked")
}
tjl.lockTable[k] = true
return nil
}
func (tjl *TestLocker) Unlock(k string) error {
lm.Lock()
defer lm.Unlock()
tjl.lockTable[k] = false
return nil
}
type TestThrottle struct {
table map[string]bool
}
func (th *TestThrottle) Set(id string) error {
tm.Lock()
defer tm.Unlock()
if th.table[id] {
return throttle.ErrDuplicatedMessage
}
th.table[id] = true
return nil
}
func (th *TestThrottle) Unset(id string) error {
tm.Lock()
th.table[id] = false
tm.Unlock()
return nil
}
func init() {
logger = NewLogger()
logger.SetLevel("debug")
}