mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcd: add destoryCluster for testing
This commit is contained in:
parent
88e5bce63d
commit
653a63fa00
@ -44,12 +44,7 @@ func TestKillLeader(t *testing.T) {
|
||||
t.Errorf("#%d: lead = %d, want not 0", i, es[1].p.node.Leader())
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -74,12 +69,7 @@ func TestRandomKill(t *testing.T) {
|
||||
|
||||
waitLeader(es)
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -106,12 +96,7 @@ func TestJoinThroughFollower(t *testing.T) {
|
||||
}
|
||||
waitCluster(t, es)
|
||||
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -127,12 +112,7 @@ func BenchmarkEndToEndSet(b *testing.B) {
|
||||
}
|
||||
}
|
||||
b.StopTimer()
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(nil, es, hs)
|
||||
}
|
||||
|
||||
// TODO(yichengq): cannot handle previous msgDenial correctly now
|
||||
@ -187,12 +167,7 @@ func TestModeSwitch(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ func TestBadDiscoveryService(t *testing.T) {
|
||||
|
||||
c := config.New()
|
||||
c.Discovery = ts.URL + "/v2/keys/_etcd/registry/1"
|
||||
_, _, err := buildServer(c, bootstrapId)
|
||||
_, _, err := buildServer(t, c, bootstrapId)
|
||||
w := `discovery service error`
|
||||
if err == nil || !strings.HasPrefix(err.Error(), w) {
|
||||
t.Errorf("err = %v, want %s prefix", err, w)
|
||||
@ -82,18 +82,13 @@ func TestBadDiscoveryServiceWithAdvisedPeers(t *testing.T) {
|
||||
c := config.New()
|
||||
c.Discovery = ts.URL + "/v2/keys/_etcd/registry/1"
|
||||
c.Peers = []string{hs[0].URL}
|
||||
_, _, err := buildServer(c, bootstrapId)
|
||||
_, _, err := buildServer(t, c, bootstrapId)
|
||||
w := `discovery service error`
|
||||
if err == nil || !strings.HasPrefix(err.Error(), w) {
|
||||
t.Errorf("err = %v, want %s prefix", err, w)
|
||||
}
|
||||
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
ts.Close()
|
||||
afterTest(t)
|
||||
}
|
||||
@ -101,7 +96,7 @@ func TestBadDiscoveryServiceWithAdvisedPeers(t *testing.T) {
|
||||
func TestBootstrapByEmptyPeers(t *testing.T) {
|
||||
c := config.New()
|
||||
id := genId()
|
||||
e, h, err := buildServer(c, id)
|
||||
e, h, err := buildServer(t, c, id)
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
@ -109,22 +104,22 @@ func TestBootstrapByEmptyPeers(t *testing.T) {
|
||||
if e.p.node.Leader() != id {
|
||||
t.Error("leader = %x, want %x", e.p.node.Leader(), id)
|
||||
}
|
||||
destroyServer(e, h)
|
||||
destroyServer(t, e, h)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
func TestBootstrapByDiscoveryService(t *testing.T) {
|
||||
de, dh, _ := buildServer(config.New(), genId())
|
||||
de, dh, _ := buildServer(t, config.New(), genId())
|
||||
|
||||
c := config.New()
|
||||
c.Discovery = dh.URL + "/v2/keys/_etcd/registry/1"
|
||||
e, h, err := buildServer(c, bootstrapId)
|
||||
e, h, err := buildServer(t, c, bootstrapId)
|
||||
if err != nil {
|
||||
t.Fatalf("build server err = %v, want nil", err)
|
||||
}
|
||||
|
||||
destroyServer(e, h)
|
||||
destroyServer(de, dh)
|
||||
destroyServer(t, e, h)
|
||||
destroyServer(t, de, dh)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -134,7 +129,7 @@ func TestRunByAdvisedPeers(t *testing.T) {
|
||||
|
||||
c := config.New()
|
||||
c.Peers = []string{hs[0].URL}
|
||||
e, h, err := buildServer(c, bootstrapId)
|
||||
e, h, err := buildServer(t, c, bootstrapId)
|
||||
if err != nil {
|
||||
t.Fatalf("build server err = %v, want nil", err)
|
||||
}
|
||||
@ -143,18 +138,13 @@ func TestRunByAdvisedPeers(t *testing.T) {
|
||||
t.Errorf("leader = %d, want %d", g, w)
|
||||
}
|
||||
|
||||
destroyServer(e, h)
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destroyServer(t, e, h)
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
func TestRunByDiscoveryService(t *testing.T) {
|
||||
de, dh, _ := buildServer(config.New(), genId())
|
||||
de, dh, _ := buildServer(t, config.New(), genId())
|
||||
|
||||
tc := NewTestClient()
|
||||
v := url.Values{}
|
||||
@ -174,7 +164,7 @@ func TestRunByDiscoveryService(t *testing.T) {
|
||||
|
||||
c := config.New()
|
||||
c.Discovery = dh.URL + "/v2/keys/_etcd/registry/1"
|
||||
e, h, err := buildServer(c, bootstrapId)
|
||||
e, h, err := buildServer(t, c, bootstrapId)
|
||||
if err != nil {
|
||||
t.Fatalf("build server err = %v, want nil", err)
|
||||
}
|
||||
@ -183,12 +173,12 @@ func TestRunByDiscoveryService(t *testing.T) {
|
||||
t.Errorf("leader = %d, want %d", g, w)
|
||||
}
|
||||
|
||||
destroyServer(e, h)
|
||||
destroyServer(de, dh)
|
||||
destroyServer(t, e, h)
|
||||
destroyServer(t, de, dh)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
func buildServer(c *config.Config, id int64) (e *Server, h *httptest.Server, err error) {
|
||||
func buildServer(t *testing.T, c *config.Config, id int64) (e *Server, h *httptest.Server, err error) {
|
||||
e, h = initTestServer(c, id, false)
|
||||
go func() { err = e.Run() }()
|
||||
for {
|
||||
@ -196,15 +186,10 @@ func buildServer(c *config.Config, id int64) (e *Server, h *httptest.Server, err
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
destroyServer(e, h)
|
||||
destroyServer(t, e, h)
|
||||
return nil, nil, err
|
||||
}
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
return e, h, nil
|
||||
}
|
||||
|
||||
func destroyServer(e *Server, h *httptest.Server) {
|
||||
e.Stop()
|
||||
h.Close()
|
||||
}
|
||||
|
@ -37,12 +37,7 @@ func TestMultipleNodes(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
es, hs := buildCluster(tt, false)
|
||||
waitCluster(t, es)
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -53,12 +48,7 @@ func TestMultipleTLSNodes(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
es, hs := buildCluster(tt, true)
|
||||
waitCluster(t, es)
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -86,12 +76,7 @@ func TestV2Redirect(t *testing.T) {
|
||||
}
|
||||
|
||||
resp.Body.Close()
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -148,12 +133,7 @@ func TestAdd(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -210,12 +190,7 @@ func TestRemove(t *testing.T) {
|
||||
waitMode(standbyMode, es[i])
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
// ensure that no goroutines are running
|
||||
@ -272,12 +247,7 @@ func TestBecomeStandby(t *testing.T) {
|
||||
t.Errorf("#%d: lead = %d, want %d", i, g, lead)
|
||||
}
|
||||
|
||||
for i := range hs {
|
||||
es[len(hs)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -373,7 +343,6 @@ func buildCluster(number int, tls bool) ([]*Server, []*httptest.Server) {
|
||||
|
||||
func initTestServer(c *config.Config, id int64, tls bool) (e *Server, h *httptest.Server) {
|
||||
c.DataDir = fmt.Sprintf("tests/etcd_%d", id)
|
||||
os.RemoveAll(c.DataDir)
|
||||
|
||||
e, err := New(c)
|
||||
if err != nil {
|
||||
@ -397,6 +366,31 @@ func initTestServer(c *config.Config, id int64, tls bool) (e *Server, h *httptes
|
||||
return
|
||||
}
|
||||
|
||||
func destoryCluster(t *testing.T, es []*Server, hs []*httptest.Server) {
|
||||
for i := range es {
|
||||
e := es[len(es)-i-1]
|
||||
e.Stop()
|
||||
err := os.RemoveAll(e.config.DataDir)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
}
|
||||
|
||||
func destroyServer(t *testing.T, e *Server, h *httptest.Server) {
|
||||
e.Stop()
|
||||
h.Close()
|
||||
err := os.RemoveAll(e.config.DataDir)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func waitCluster(t *testing.T, es []*Server) {
|
||||
n := len(es)
|
||||
for _, e := range es {
|
||||
|
@ -59,12 +59,7 @@ func TestMachinesEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -96,12 +91,7 @@ func TestLeaderEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -125,12 +115,7 @@ func TestStoreStatsEndPoint(t *testing.T) {
|
||||
t.Errorf("setSuccess = %d, want 1", stats.SetSuccess)
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -164,12 +149,7 @@ func TestGetAdminConfigEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -225,12 +205,7 @@ func TestPutAdminConfigEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for j := range es {
|
||||
es[len(es)-j-1].Stop()
|
||||
}
|
||||
for j := range hs {
|
||||
hs[len(hs)-j-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
}
|
||||
afterTest(t)
|
||||
}
|
||||
@ -276,12 +251,7 @@ func TestGetAdminMachineEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -324,12 +294,7 @@ func TestGetAdminMachinesEndPoint(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
for i := range es {
|
||||
es[len(es)-i-1].Stop()
|
||||
}
|
||||
for i := range hs {
|
||||
hs[len(hs)-i-1].Close()
|
||||
}
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
|
@ -76,8 +76,7 @@ func TestV2Set(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -185,8 +184,7 @@ func TestV2CreateUpdate(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -314,8 +312,7 @@ func TestV2CAS(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -411,8 +408,7 @@ func TestV2Delete(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -510,8 +506,7 @@ func TestV2CAD(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -574,8 +569,7 @@ func TestV2Unique(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -669,8 +663,7 @@ func TestV2Get(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -715,8 +708,7 @@ func TestV2Watch(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -773,8 +765,7 @@ func TestV2WatchWithIndex(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -821,8 +812,7 @@ func TestV2WatchKeyInDir(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
@ -855,8 +845,7 @@ func TestV2Head(t *testing.T) {
|
||||
t.Errorf("ContentLength = %d, want -1", resp.ContentLength)
|
||||
}
|
||||
|
||||
es[0].Stop()
|
||||
hs[0].Close()
|
||||
destoryCluster(t, es, hs)
|
||||
afterTest(t)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user