...
1 package redis
2
3 import (
4 . "github.com/onsi/ginkgo"
5 . "github.com/onsi/gomega"
6 )
7
8 var _ = Describe("newClusterState", func() {
9 var state *clusterState
10
11 createClusterState := func(slots []ClusterSlot) *clusterState {
12 nodes := newClusterNodes(&ClusterOptions{})
13 state, err := newClusterState(nodes, slots, "10.10.10.10:1234")
14 Expect(err).NotTo(HaveOccurred())
15 return state
16 }
17
18 Describe("sorting", func() {
19 BeforeEach(func() {
20 state = createClusterState([]ClusterSlot{{
21 Start: 1000,
22 End: 1999,
23 }, {
24 Start: 0,
25 End: 999,
26 }, {
27 Start: 2000,
28 End: 2999,
29 }})
30 })
31
32 It("sorts slots", func() {
33 Expect(state.slots).To(Equal([]*clusterSlot{
34 {start: 0, end: 999, nodes: nil},
35 {start: 1000, end: 1999, nodes: nil},
36 {start: 2000, end: 2999, nodes: nil},
37 }))
38 })
39 })
40
41 Describe("loopback", func() {
42 BeforeEach(func() {
43 state = createClusterState([]ClusterSlot{{
44 Nodes: []ClusterNode{{Addr: "127.0.0.1:7001"}},
45 }, {
46 Nodes: []ClusterNode{{Addr: "127.0.0.1:7002"}},
47 }, {
48 Nodes: []ClusterNode{{Addr: "1.2.3.4:1234"}},
49 }, {
50 Nodes: []ClusterNode{{Addr: ":1234"}},
51 }})
52 })
53
54 It("replaces loopback hosts in addresses", func() {
55 slotAddr := func(slot *clusterSlot) string {
56 return slot.nodes[0].Client.Options().Addr
57 }
58
59 Expect(slotAddr(state.slots[0])).To(Equal("10.10.10.10:7001"))
60 Expect(slotAddr(state.slots[1])).To(Equal("10.10.10.10:7002"))
61 Expect(slotAddr(state.slots[2])).To(Equal("1.2.3.4:1234"))
62 Expect(slotAddr(state.slots[3])).To(Equal(":1234"))
63 })
64 })
65 })
66
View as plain text