Skip to content

Commit d47e48f

Browse files
authored
Merge pull request #1692 from monkey92t/test_error
fix test error
2 parents 250f81b + af3827a commit d47e48f

File tree

5 files changed

+46
-6
lines changed

5 files changed

+46
-6
lines changed

main_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,11 @@ func startSentinel(port, masterName, masterPort string) (*redisProcess, error) {
344344
return nil, err
345345
}
346346

347+
// set down-after-milliseconds=2000
348+
// link: https://github.com/redis/redis/issues/8607
347349
for _, cmd := range []*redis.StatusCmd{
348350
redis.NewStatusCmd(ctx, "SENTINEL", "MONITOR", masterName, "127.0.0.1", masterPort, "2"),
349-
redis.NewStatusCmd(ctx, "SENTINEL", "SET", masterName, "down-after-milliseconds", "500"),
351+
redis.NewStatusCmd(ctx, "SENTINEL", "SET", masterName, "down-after-milliseconds", "2000"),
350352
redis.NewStatusCmd(ctx, "SENTINEL", "SET", masterName, "failover-timeout", "1000"),
351353
redis.NewStatusCmd(ctx, "SENTINEL", "SET", masterName, "parallel-syncs", "1"),
352354
} {

race_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@ var _ = Describe("races", func() {
308308
Streams: []string{"test", "$"},
309309
Block: 1 * time.Second,
310310
}).Result()
311-
Expect(err).To(Equal(context.Canceled))
311+
Expect(err).To(HaveOccurred())
312+
Expect(err.Error()).To(Or(Equal(context.Canceled.Error()), ContainSubstring("operation was canceled")))
312313
})
313314

314315
time.Sleep(10 * time.Millisecond)

redis_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,17 @@ var _ = Describe("Client", func() {
243243
cn, err := client.Pool().Get(context.Background())
244244
Expect(err).NotTo(HaveOccurred())
245245
Expect(cn.UsedAt).NotTo(BeZero())
246+
247+
// set cn.SetUsedAt(time) or time.Sleep(>1*time.Second)
248+
// simulate the last time Conn was used
249+
// time.Sleep() is not the standard sleep time
250+
// link: https://go-review.googlesource.com/c/go/+/232298
251+
cn.SetUsedAt(time.Now().Add(-1 * time.Second))
246252
createdAt := cn.UsedAt()
247253

248254
client.Pool().Put(ctx, cn)
249255
Expect(cn.UsedAt().Equal(createdAt)).To(BeTrue())
250256

251-
time.Sleep(time.Second)
252-
253257
err = client.Ping(ctx).Err()
254258
Expect(err).NotTo(HaveOccurred())
255259

sentinel.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,16 @@ func (c *SentinelClient) GetMasterAddrByName(ctx context.Context, name string) *
317317
return cmd
318318
}
319319

320+
func (c *SentinelClient) GetSlavesAddrByName(ctx context.Context, name string) []string {
321+
addrs, err := c.Slaves(ctx, name).Result()
322+
if err != nil {
323+
internal.Logger.Printf(ctx, "sentinel: Slaves name=%q failed: %s",
324+
name, err)
325+
return []string{}
326+
}
327+
return parseSlaveAddrs(addrs, false)
328+
}
329+
320330
func (c *SentinelClient) Sentinels(ctx context.Context, name string) *SliceCmd {
321331
cmd := NewSliceCmd(ctx, "sentinel", "sentinels", name)
322332
_ = c.Process(ctx, cmd)

sentinel_test.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var _ = Describe("Sentinel", func() {
1313
var client *redis.Client
1414
var master *redis.Client
1515
var masterPort string
16+
var sentinel *redis.SentinelClient
1617

1718
BeforeEach(func() {
1819
client = redis.NewFailoverClient(&redis.FailoverOptions{
@@ -22,7 +23,7 @@ var _ = Describe("Sentinel", func() {
2223
})
2324
Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred())
2425

25-
sentinel := redis.NewSentinelClient(&redis.Options{
26+
sentinel = redis.NewSentinelClient(&redis.Options{
2627
Addr: ":" + sentinelPort1,
2728
MaxRetries: -1,
2829
})
@@ -51,6 +52,7 @@ var _ = Describe("Sentinel", func() {
5152
AfterEach(func() {
5253
_ = client.Close()
5354
_ = master.Close()
55+
_ = sentinel.Close()
5456
})
5557

5658
It("should facilitate failover", func() {
@@ -63,8 +65,28 @@ var _ = Describe("Sentinel", func() {
6365
Expect(err).NotTo(HaveOccurred())
6466
Expect(val).To(Equal("master"))
6567

68+
// Verify master->slaves sync.
69+
var slavesAddr []string
70+
Eventually(func() []string {
71+
slavesAddr = sentinel.GetSlavesAddrByName(ctx, sentinelName)
72+
return slavesAddr
73+
}, "15s", "100ms").Should(HaveLen(2))
74+
Eventually(func() bool {
75+
sync := true
76+
for _, addr := range slavesAddr {
77+
slave := redis.NewClient(&redis.Options{
78+
Addr: addr,
79+
MaxRetries: -1,
80+
})
81+
sync = slave.Get(ctx, "foo").Val() == "master"
82+
_ = slave.Close()
83+
}
84+
return sync
85+
}, "15s", "100ms").Should(BeTrue())
86+
6687
// Create subscription.
67-
ch := client.Subscribe(ctx, "foo").Channel()
88+
pub := client.Subscribe(ctx, "foo")
89+
ch := pub.Channel()
6890

6991
// Kill master.
7092
err = master.Shutdown(ctx).Err()
@@ -86,6 +108,7 @@ var _ = Describe("Sentinel", func() {
86108
}, "15s", "100ms").Should(Receive(&msg))
87109
Expect(msg.Channel).To(Equal("foo"))
88110
Expect(msg.Payload).To(Equal("hello"))
111+
Expect(pub.Close()).NotTo(HaveOccurred())
89112

90113
_, err = startRedis(masterPort)
91114
Expect(err).NotTo(HaveOccurred())

0 commit comments

Comments
 (0)