mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
integration: test cluster terminates quickly
This commit is contained in:
parent
8ad935ef2c
commit
f5f4791023
@ -313,9 +313,15 @@ func (c *cluster) removeMember(t *testing.T, id uint64) error {
|
||||
}
|
||||
|
||||
func (c *cluster) Terminate(t *testing.T) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(c.Members))
|
||||
for _, m := range c.Members {
|
||||
m.Terminate(t)
|
||||
go func(mm *member) {
|
||||
defer wg.Done()
|
||||
mm.Terminate(t)
|
||||
}(m)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func (c *cluster) waitMembersMatch(t *testing.T, membs []client.Member) {
|
||||
|
@ -568,3 +568,23 @@ func TestTransferLeader(t *testing.T) {
|
||||
t.Fatalf("expected old leader %d != new leader %d", oldLeadID, newLeadIDs[0])
|
||||
}
|
||||
}
|
||||
|
||||
func TestSpeedyTerminate(t *testing.T) {
|
||||
defer testutil.AfterTest(t)
|
||||
clus := NewClusterV3(t, &ClusterConfig{Size: 3})
|
||||
// Stop/Restart so requests will time out on lost leaders
|
||||
for i := 0; i < 3; i++ {
|
||||
clus.Members[i].Stop(t)
|
||||
clus.Members[i].Restart(t)
|
||||
}
|
||||
donec := make(chan struct{})
|
||||
go func() {
|
||||
defer close(donec)
|
||||
clus.Terminate(t)
|
||||
}()
|
||||
select {
|
||||
case <-time.After(10 * time.Second):
|
||||
t.Fatalf("cluster took too long to terminate")
|
||||
case <-donec:
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user