Skip to content

Commit 3991bd2

Browse files
committed
add test to check for shard reuse and that we cleanup
Signed-off-by: Sandor Szücs <[email protected]>
1 parent ae05f0e commit 3991bd2

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

export_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,15 @@ func GetSlavesAddrByName(ctx context.Context, c *SentinelClient, name string) []
9393
}
9494
return parseReplicaAddrs(addrs, false)
9595
}
96+
97+
func (c *Ring) GetAddr(addr string) *ringShard {
98+
return c.shards.GetAddr(addr)
99+
}
100+
101+
func (c *ringShards) GetAddr(addr string) *ringShard {
102+
return c.shards[addr]
103+
}
104+
105+
func (shard *ringShard) GetAddr() string {
106+
return shard.addr
107+
}

ring_test.go

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,25 @@ var _ = Describe("Redis Ring", func() {
114114
})
115115

116116
Describe("[new] dynamic setting ring shards", func() {
117-
It("uses one shard after setting it to one shard", func() {
117+
It("downscale shard and check reuse shard, upscale shard and check reuse", func() {
118118
Expect(ring.Len(), 2)
119+
120+
wantShard := ring.GetAddr("ringShardOne")
119121
ring.SetAddrs(map[string]string{
120122
"ringShardOne": ":" + ringShard1Port,
121123
})
122124
Expect(ring.Len(), 1)
125+
gotShard := ring.GetAddr("ringShardOne")
126+
Expect(gotShard).To(Equal(wantShard))
123127

124128
ring.SetAddrs(map[string]string{
125129
"ringShardOne": ":" + ringShard1Port,
126130
"ringShardTwo": ":" + ringShard2Port,
127131
})
128-
129132
Expect(ring.Len(), 2)
133+
gotShard = ring.GetAddr("ringShardOne")
134+
Expect(gotShard).To(Equal(wantShard))
135+
130136
})
131137

132138
It("uses 3 shards after setting it to 3 shards", func() {
@@ -137,18 +143,39 @@ var _ = Describe("Redis Ring", func() {
137143
ringShard3, err = startRedis(ringShard3Port)
138144
Expect(err).NotTo(HaveOccurred())
139145

146+
shardName1 := "ringShardOne"
147+
shardAddr1 := ":" + ringShard1Port
148+
wantShard1 := ring.GetAddr(shardName1)
149+
shardName2 := "ringShardTwo"
150+
shardAddr2 := ":" + ringShard2Port
151+
wantShard2 := ring.GetAddr(shardName2)
152+
shardName3 := "ringShardThree"
153+
shardAddr3 := ":" + ringShard3Port
154+
140155
ring.SetAddrs(map[string]string{
141-
"ringShardOne": ":" + ringShard1Port,
142-
"ringShardTwo": ":" + ringShard2Port,
143-
"ringShardThree": ":" + ringShard3Port,
156+
shardName1: shardAddr1,
157+
shardName2: shardAddr2,
158+
shardName3: shardAddr3,
144159
})
145160
Expect(ring.Len(), 3)
161+
gotShard1 := ring.GetAddr(shardName1)
162+
gotShard2 := ring.GetAddr(shardName2)
163+
gotShard3 := ring.GetAddr(shardName3)
164+
Expect(gotShard1).To(Equal(wantShard1))
165+
Expect(gotShard2).To(Equal(wantShard2))
166+
Expect(gotShard3).ToNot(BeNil())
146167

147168
ring.SetAddrs(map[string]string{
148-
"ringShardOne": ":" + ringShard1Port,
149-
"ringShardTwo": ":" + ringShard2Port,
169+
shardName1: shardAddr1,
170+
shardName2: shardAddr2,
150171
})
151172
Expect(ring.Len(), 2)
173+
gotShard1 = ring.GetAddr(shardName1)
174+
gotShard2 = ring.GetAddr(shardName2)
175+
gotShard3 = ring.GetAddr(shardName3)
176+
Expect(gotShard1).To(Equal(wantShard1))
177+
Expect(gotShard2).To(Equal(wantShard2))
178+
Expect(gotShard3).To(BeNil())
152179
})
153180

154181
})

0 commit comments

Comments
 (0)