Merge pull request #2084 from yichengq/294

integration: add TestForceNewCluster
release-2.0
Xiang Li 2015-01-13 15:47:21 -08:00
commit 1b9ccfc66f
1 changed files with 38 additions and 0 deletions

View File

@ -131,6 +131,44 @@ func testDecreaseClusterSize(t *testing.T, size int) {
clusterMustProgress(t, c.Members)
}
func TestForceNewCluster(t *testing.T) {
c := NewCluster(t, 3)
c.Launch(t)
cc := mustNewHTTPClient(t, []string{c.Members[0].URL()})
kapi := client.NewKeysAPI(cc)
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
resp, err := kapi.Create(ctx, "/foo", "bar", -1)
if err != nil {
t.Fatalf("unexpected create error: %v", err)
}
cancel()
// ensure create has been applied in this machine
ctx, cancel = context.WithTimeout(context.Background(), requestTimeout)
if _, err := kapi.Watch("foo", resp.Node.ModifiedIndex).Next(ctx); err != nil {
t.Fatalf("unexpected watch error: %v", err)
}
cancel()
c.Members[0].Stop(t)
c.Members[1].Terminate(t)
c.Members[2].Terminate(t)
c.Members[0].ForceNewCluster = true
err = c.Members[0].Restart(t)
if err != nil {
t.Fatalf("unexpected ForceRestart error: %v", err)
}
defer c.Members[0].Terminate(t)
// ensure force restart keep the old data, and new cluster can make progress
cc = mustNewHTTPClient(t, []string{c.Members[0].URL()})
kapi = client.NewKeysAPI(cc)
_, err = kapi.Get(context.TODO(), "/foo")
if err != nil {
t.Errorf("unexpected get error: %v", err)
}
clusterMustProgress(t, c.Members[:1])
}
// clusterMustProgress ensures that cluster can make progress. It creates
// a random key first, and check the new key could be got from all client urls
// of the cluster.