mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Fix coverage test failure: e2e TestIssue6361.
Tested with: ``` (cd tests && COVERDIR='../../c' 'env' 'go' 'test' '-tags=cov' '-timeout' '30m' 'go.etcd.io/etcd/tests/v3/e2e' -run TestIssue6361 -v 2>&1 | tee log.log) ```
This commit is contained in:
@@ -25,6 +25,7 @@ import (
|
||||
|
||||
"go.etcd.io/etcd/server/v3/etcdserver"
|
||||
"go.etcd.io/etcd/tests/v3/integration"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zaptest"
|
||||
)
|
||||
|
||||
@@ -134,6 +135,7 @@ func configStandalone(cfg etcdProcessClusterConfig) *etcdProcessClusterConfig {
|
||||
}
|
||||
|
||||
type etcdProcessCluster struct {
|
||||
lg *zap.Logger
|
||||
cfg *etcdProcessClusterConfig
|
||||
procs []etcdProcess
|
||||
}
|
||||
@@ -182,6 +184,7 @@ func newEtcdProcessCluster(t testing.TB, cfg *etcdProcessClusterConfig) (*etcdPr
|
||||
etcdCfgs := cfg.etcdServerProcessConfigs(t)
|
||||
epc := &etcdProcessCluster{
|
||||
cfg: cfg,
|
||||
lg: zaptest.NewLogger(t),
|
||||
procs: make([]etcdProcess, cfg.clusterSize),
|
||||
}
|
||||
|
||||
@@ -451,6 +454,7 @@ func (epc *etcdProcessCluster) Stop() (err error) {
|
||||
}
|
||||
|
||||
func (epc *etcdProcessCluster) Close() error {
|
||||
epc.lg.Info("closing test cluster...")
|
||||
err := epc.Stop()
|
||||
for _, p := range epc.procs {
|
||||
// p is nil when newEtcdProcess fails in the middle
|
||||
@@ -462,6 +466,7 @@ func (epc *etcdProcessCluster) Close() error {
|
||||
err = cerr
|
||||
}
|
||||
}
|
||||
epc.lg.Info("closed test cluster.")
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -193,7 +193,6 @@ func TestIssue6361(t *testing.T) {
|
||||
}
|
||||
|
||||
fpath := filepath.Join(t.TempDir(), "test.snapshot")
|
||||
defer os.RemoveAll(fpath)
|
||||
|
||||
t.Log("etcdctl saving snapshot...")
|
||||
if err = spawnWithExpect(append(prefixArgs, "snapshot", "save", fpath), fmt.Sprintf("Snapshot saved at %s", fpath)); err != nil {
|
||||
@@ -206,7 +205,6 @@ func TestIssue6361(t *testing.T) {
|
||||
}
|
||||
|
||||
newDataDir := filepath.Join(t.TempDir(), "test.data")
|
||||
defer os.RemoveAll(newDataDir)
|
||||
|
||||
t.Log("etcdctl restoring the snapshot...")
|
||||
err = spawnWithExpect([]string{ctlBinPath, "snapshot", "restore", fpath, "--name", epc.procs[0].Config().name, "--initial-cluster", epc.procs[0].Config().initialCluster, "--initial-cluster-token", epc.procs[0].Config().initialToken, "--initial-advertise-peer-urls", epc.procs[0].Config().purl.String(), "--data-dir", newDataDir}, "added member")
|
||||
@@ -273,4 +271,5 @@ func TestIssue6361(t *testing.T) {
|
||||
if err = nepc.Stop(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("Test logic done")
|
||||
}
|
||||
|
||||
@@ -90,23 +90,34 @@ func (ep *etcdServerProcess) Start() error {
|
||||
if ep.proc != nil {
|
||||
panic("already started")
|
||||
}
|
||||
ep.cfg.lg.Info("starting server...", zap.String("name", ep.cfg.name))
|
||||
proc, err := spawnCmdWithLogger(ep.cfg.lg, append([]string{ep.cfg.execPath}, ep.cfg.args...))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ep.proc = proc
|
||||
return ep.waitReady()
|
||||
err = ep.waitReady()
|
||||
if err == nil {
|
||||
ep.cfg.lg.Info("started server.", zap.String("name", ep.cfg.name))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (ep *etcdServerProcess) Restart() error {
|
||||
ep.cfg.lg.Info("restaring server...", zap.String("name", ep.cfg.name))
|
||||
if err := ep.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
ep.donec = make(chan struct{})
|
||||
return ep.Start()
|
||||
err := ep.Start()
|
||||
if err == nil {
|
||||
ep.cfg.lg.Info("restared server", zap.String("name", ep.cfg.name))
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (ep *etcdServerProcess) Stop() (err error) {
|
||||
ep.cfg.lg.Info("stoping server...", zap.String("name", ep.cfg.name))
|
||||
if ep == nil || ep.proc == nil {
|
||||
return nil
|
||||
}
|
||||
@@ -123,13 +134,16 @@ func (ep *etcdServerProcess) Stop() (err error) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
ep.cfg.lg.Info("stopped server.", zap.String("name", ep.cfg.name))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ep *etcdServerProcess) Close() error {
|
||||
ep.cfg.lg.Info("closing server...", zap.String("name", ep.cfg.name))
|
||||
if err := ep.Stop(); err != nil {
|
||||
return err
|
||||
}
|
||||
ep.cfg.lg.Info("removing directory", zap.String("data-dir", ep.cfg.dataDirPath))
|
||||
return os.RemoveAll(ep.cfg.dataDirPath)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user