etcd: add destoryCluster for testing

This commit is contained in:
Xiang Li 2014-07-28 15:01:09 -07:00 committed by Yicheng Qin
parent 88e5bce63d
commit 653a63fa00
5 changed files with 72 additions and 164 deletions

View File

@ -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)
}

View File

@ -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()
}

View File

@ -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 {

View File

@ -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)
}

View File

@ -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)
}