From fa527c5e544b9dd33b0b3ececbbd9e294869137e Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Fri, 3 Feb 2023 22:23:06 +0800 Subject: [PATCH] tests: support to stop the multiple members concurrently Signed-off-by: Wei Fu --- tests/framework/e2e/cluster.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index cf28e8b56..c383ca012 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -823,11 +823,17 @@ func (epc *EtcdProcessCluster) rollingStart(f func(ep EtcdProcess) error) error } func (epc *EtcdProcessCluster) Stop() (err error) { - for _, p := range epc.Procs { - if p == nil { + errCh := make(chan error, len(epc.Procs)) + for i := range epc.Procs { + if epc.Procs[i] == nil { + errCh <- nil continue } - if curErr := p.Stop(); curErr != nil { + go func(n int) { errCh <- epc.Procs[n].Stop() }(i) + } + + for range epc.Procs { + if curErr := <-errCh; curErr != nil { if err != nil { err = fmt.Errorf("%v; %v", err, curErr) } else { @@ -835,6 +841,7 @@ func (epc *EtcdProcessCluster) Stop() (err error) { } } } + close(errCh) return err }