@@ -6,16 +6,21 @@ import (
6
6
)
7
7
8
8
func (c * ClusterClient ) SlotAddrs (slot int ) []string {
9
- return c .slotAddrs (slot )
9
+ var addrs []string
10
+ for _ , n := range c .slotNodes (slot ) {
11
+ addrs = append (addrs , n .Addr )
12
+ }
13
+ return addrs
10
14
}
11
15
12
16
// SwapSlot swaps a slot's master/slave address
13
17
// for testing MOVED redirects
14
- func (c * ClusterClient ) SwapSlot (pos int ) []string {
15
- c .slotsMx .Lock ()
16
- defer c .slotsMx .Unlock ()
17
- c .slots [pos ][0 ], c .slots [pos ][1 ] = c .slots [pos ][1 ], c .slots [pos ][0 ]
18
- return c .slots [pos ]
18
+ func (c * ClusterClient ) SwapSlotNodes (slot int ) []string {
19
+ c .mu .Lock ()
20
+ nodes := c .slots [slot ]
21
+ nodes [0 ], nodes [1 ] = nodes [1 ], nodes [0 ]
22
+ c .mu .Unlock ()
23
+ return c .SlotAddrs (slot )
19
24
}
20
25
21
26
var _ = Describe ("ClusterClient" , func () {
@@ -42,19 +47,26 @@ var _ = Describe("ClusterClient", func() {
42
47
43
48
It ("should initialize" , func () {
44
49
Expect (subject .addrs ).To (HaveLen (3 ))
45
- Expect (subject .slots ).To (HaveLen (16384 ))
46
50
})
47
51
48
52
It ("should update slots cache" , func () {
49
53
populate ()
50
- Expect (subject .slots [0 ]).To (Equal ([]string {"127.0.0.1:7000" , "127.0.0.1:7004" }))
51
- Expect (subject .slots [4095 ]).To (Equal ([]string {"127.0.0.1:7000" , "127.0.0.1:7004" }))
52
- Expect (subject .slots [4096 ]).To (Equal ([]string {"127.0.0.1:7001" , "127.0.0.1:7005" }))
53
- Expect (subject .slots [8191 ]).To (Equal ([]string {"127.0.0.1:7001" , "127.0.0.1:7005" }))
54
- Expect (subject .slots [8192 ]).To (Equal ([]string {"127.0.0.1:7002" , "127.0.0.1:7006" }))
55
- Expect (subject .slots [12287 ]).To (Equal ([]string {"127.0.0.1:7002" , "127.0.0.1:7006" }))
56
- Expect (subject .slots [12288 ]).To (Equal ([]string {"127.0.0.1:7003" , "127.0.0.1:7007" }))
57
- Expect (subject .slots [16383 ]).To (Equal ([]string {"127.0.0.1:7003" , "127.0.0.1:7007" }))
54
+ Expect (subject .slots [0 ][0 ].Addr ).To (Equal ("127.0.0.1:7000" ))
55
+ Expect (subject .slots [0 ][1 ].Addr ).To (Equal ("127.0.0.1:7004" ))
56
+ Expect (subject .slots [4095 ][0 ].Addr ).To (Equal ("127.0.0.1:7000" ))
57
+ Expect (subject .slots [4095 ][1 ].Addr ).To (Equal ("127.0.0.1:7004" ))
58
+ Expect (subject .slots [4096 ][0 ].Addr ).To (Equal ("127.0.0.1:7001" ))
59
+ Expect (subject .slots [4096 ][1 ].Addr ).To (Equal ("127.0.0.1:7005" ))
60
+ Expect (subject .slots [8191 ][0 ].Addr ).To (Equal ("127.0.0.1:7001" ))
61
+ Expect (subject .slots [8191 ][1 ].Addr ).To (Equal ("127.0.0.1:7005" ))
62
+ Expect (subject .slots [8192 ][0 ].Addr ).To (Equal ("127.0.0.1:7002" ))
63
+ Expect (subject .slots [8192 ][1 ].Addr ).To (Equal ("127.0.0.1:7006" ))
64
+ Expect (subject .slots [12287 ][0 ].Addr ).To (Equal ("127.0.0.1:7002" ))
65
+ Expect (subject .slots [12287 ][1 ].Addr ).To (Equal ("127.0.0.1:7006" ))
66
+ Expect (subject .slots [12288 ][0 ].Addr ).To (Equal ("127.0.0.1:7003" ))
67
+ Expect (subject .slots [12288 ][1 ].Addr ).To (Equal ("127.0.0.1:7007" ))
68
+ Expect (subject .slots [16383 ][0 ].Addr ).To (Equal ("127.0.0.1:7003" ))
69
+ Expect (subject .slots [16383 ][1 ].Addr ).To (Equal ("127.0.0.1:7007" ))
58
70
Expect (subject .addrs ).To (Equal ([]string {
59
71
"127.0.0.1:6379" ,
60
72
"127.0.0.1:7003" ,
@@ -71,11 +83,9 @@ var _ = Describe("ClusterClient", func() {
71
83
It ("should close" , func () {
72
84
populate ()
73
85
Expect (subject .Close ()).NotTo (HaveOccurred ())
74
- Expect (subject .clients ).To (BeEmpty ())
75
- Expect (subject .slots [0 ]).To (BeEmpty ())
76
- Expect (subject .slots [8191 ]).To (BeEmpty ())
77
- Expect (subject .slots [8192 ]).To (BeEmpty ())
78
- Expect (subject .slots [16383 ]).To (BeEmpty ())
86
+ Expect (subject .addrs ).To (BeEmpty ())
87
+ Expect (subject .nodes ).To (BeEmpty ())
88
+ Expect (subject .slots ).To (BeEmpty ())
79
89
Expect (subject .Ping ().Err ().Error ()).To (Equal ("redis: client is closed" ))
80
90
})
81
91
})
0 commit comments