-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhashing_test.go
99 lines (75 loc) · 2.15 KB
/
hashing_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
91
92
93
94
95
96
97
98
99
package inmemory
import (
"strconv"
"testing"
)
func TestCircleAddServer(t *testing.T) {
circle := NewCircle()
server := &Server{"127.0.0.1:3000", 50}
circle.AddServer(server)
if _, ok := circle.servers[server]; !ok {
t.Error("Expected to add server to circle", *server)
}
}
func TestCircleRemoveServer(t *testing.T) {
circle := NewCircle()
server := &Server{"127.0.0.1:3000", 50}
circle.AddServer(server)
circle.AddServer(&Server{"127.0.0.1:3001", 50})
circle.RemoveServer(server)
if _, ok := circle.servers[server]; ok {
t.Error("Expected to remove server from circle", *server)
}
circle = NewCircle()
server = &Server{"127.0.0.1:3000", 50}
circle.AddServer(server)
circle.RemoveServer(server)
if _, ok := circle.servers[server]; ok {
t.Error("Expected to remove server from circle", *server)
}
circle = NewCircle()
server = &Server{"127.0.0.1:3000", 50}
circle.RemoveServer(server)
if len(circle.servers) > 0 {
t.Error("Expected manage deletion of non-included server")
}
}
func TestCircleGet(t *testing.T) {
circle := NewCircle()
server := &Server{"127.0.0.1:3000", 1}
circle.AddServer(&Server{"127.0.0.1:3001", 0})
circle.AddServer(&Server{"127.0.0.1:3002", 0})
circle.AddServer(server)
resultServer := circle.Get("TEST KEY")
if *resultServer != *server {
t.Errorf("Expected to locate key on server %v, got: %v\n", *server, *resultServer)
}
}
func TestNewCircle(t *testing.T) {
circle := NewCircle()
if circle == nil {
t.Errorf("Expected to create hash circle")
}
}
func TestCircleAdjust(t *testing.T) {
serversNum := 50
weight := 200
var servers []*Server
for i := 0; i < serversNum; i++ {
s := &Server{"127.0.0.1:" + strconv.Itoa(8080+i), weight}
servers = append(servers, s)
}
circle := NewCircle()
circle.Adjust(servers...)
for _, server := range servers {
if _, ok := circle.servers[server]; !ok {
t.Errorf("Expected to have %v server in circle\n", server)
}
}
failedServer := servers[13]
servers = append(servers[:13], servers[14:]...)
circle.Adjust(servers...)
if _, ok := circle.servers[failedServer]; ok {
t.Errorf("Expected to delete last server %v from circle\n", failedServer)
}
}