MCPcopy
hub / github.com/redis/go-redis / TestRingShardsCleanup

Function TestRingShardsCleanup

internal_test.go:583–669  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

581const testOnCloseHookID = "test-close-counter"
582
583func TestRingShardsCleanup(t *testing.T) {
584 const (
585 ringShard1Name = "ringShardOne"
586 ringShard2Name = "ringShardTwo"
587
588 ringShard1Addr = "shard1.test"
589 ringShard2Addr = "shard2.test"
590 )
591
592 t.Run("closes unused shards", func(t *testing.T) {
593 closeCounter := newTestCounter(t)
594
595 ring := NewRing(&RingOptions{
596 Addrs: map[string]string{
597 ringShard1Name: ringShard1Addr,
598 ringShard2Name: ringShard2Addr,
599 },
600 NewClient: func(opt *Options) *Client {
601 c := NewClient(opt)
602 c.baseClient.onClose.register(testOnCloseHookID, func() error {
603 closeCounter.increment(opt.Addr)
604 return nil
605 })
606 return c
607 },
608 })
609 closeCounter.expect(map[string]int{})
610
611 // no change due to the same addresses
612 ring.SetAddrs(map[string]string{
613 ringShard1Name: ringShard1Addr,
614 ringShard2Name: ringShard2Addr,
615 })
616 closeCounter.expect(map[string]int{})
617
618 ring.SetAddrs(map[string]string{
619 ringShard1Name: ringShard1Addr,
620 })
621 closeCounter.expect(map[string]int{ringShard2Addr: 1})
622
623 ring.SetAddrs(map[string]string{
624 ringShard2Name: ringShard2Addr,
625 })
626 closeCounter.expect(map[string]int{ringShard1Addr: 1, ringShard2Addr: 1})
627
628 ring.Close()
629 closeCounter.expect(map[string]int{ringShard1Addr: 1, ringShard2Addr: 2})
630 })
631
632 t.Run("closes created shards if ring was closed", func(t *testing.T) {
633 createCounter := newTestCounter(t)
634 closeCounter := newTestCounter(t)
635
636 var (
637 ring *Ring
638 shouldClose int32
639 )
640

Callers

nothing calls this directly

Calls 9

SetAddrsMethod · 0.95
CloseMethod · 0.95
newTestCounterFunction · 0.85
NewRingFunction · 0.85
NewClientFunction · 0.85
registerMethod · 0.80
incrementMethod · 0.80
expectMethod · 0.80
RunMethod · 0.45

Tested by

no test coverage detected