MCPcopy
hub / github.com/IBM/sarama / TestClientResurrectDeadSeeds

Function TestClientResurrectDeadSeeds

client_test.go:701–760  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

699}
700
701func TestClientResurrectDeadSeeds(t *testing.T) {
702 initialSeed := NewMockBroker(t, 0)
703 metadataResponse := new(MetadataResponse)
704 metadataResponse.AddBroker(initialSeed.Addr(), initialSeed.BrokerID())
705 initialSeed.Returns(metadataResponse)
706
707 conf := NewTestConfig()
708 conf.Metadata.Retry.Backoff = 0
709 conf.Metadata.RefreshFrequency = 0
710 c, err := NewClient([]string{initialSeed.Addr()}, conf)
711 if err != nil {
712 t.Fatal(err)
713 }
714
715 client := c.(*client)
716
717 seed1 := NewMockBroker(t, 1)
718 seed2 := NewMockBroker(t, 2)
719 seed3 := NewMockBroker(t, 3)
720 addr1 := seed1.Addr()
721 addr2 := seed2.Addr()
722 addr3 := seed3.Addr()
723
724 // Overwrite the seed brokers with a fixed ordering to make this test deterministic.
725 safeClose(t, client.seedBrokers[0])
726 client.seedBrokers = []*Broker{NewBroker(addr1), NewBroker(addr2), NewBroker(addr3)}
727 client.deadSeeds = []*Broker{}
728 client.brokers = map[int32]*Broker{}
729
730 wg := sync.WaitGroup{}
731 wg.Go(func() {
732 if err := client.RefreshMetadata(); err != nil {
733 t.Error(err)
734 }
735 })
736 seed1.Close()
737 seed2.Close()
738
739 seed1 = NewMockBrokerAddr(t, 1, addr1)
740 seed2 = NewMockBrokerAddr(t, 2, addr2)
741
742 seed3.Close()
743
744 seed1.Close()
745 metadataResponse2 := new(MetadataResponse)
746 metadataResponse2.AddBroker(seed2.Addr(), seed2.BrokerID())
747 seed2.Returns(metadataResponse2)
748
749 wg.Wait()
750
751 if len(client.seedBrokers) != 2 {
752 t.Error("incorrect number of live seeds")
753 }
754 if len(client.deadSeeds) != 1 {
755 t.Error("incorrect number of dead seeds")
756 }
757
758 seed2.Close()

Callers

nothing calls this directly

Calls 14

AddrMethod · 0.95
BrokerIDMethod · 0.95
ReturnsMethod · 0.95
CloseMethod · 0.95
NewMockBrokerFunction · 0.85
NewBrokerFunction · 0.85
NewMockBrokerAddrFunction · 0.85
AddBrokerMethod · 0.80
FatalMethod · 0.80
NewTestConfigFunction · 0.70
NewClientFunction · 0.70
safeCloseFunction · 0.70

Tested by

no test coverage detected