|
|
@@ -14,75 +14,6 @@ import (
|
|
|
"github.com/coreos/etcd/third_party/github.com/stretchr/testify/assert"
|
|
|
)
|
|
|
|
|
|
-// Create a five nodes
|
|
|
-// Kill all the nodes and restart
|
|
|
-func TestMultiNodeKillAllAndRecovery(t *testing.T) {
|
|
|
- procAttr := new(os.ProcAttr)
|
|
|
- procAttr.Files = []*os.File{nil, os.Stdout, os.Stderr}
|
|
|
-
|
|
|
- stop := make(chan bool)
|
|
|
- leaderChan := make(chan string, 1)
|
|
|
- all := make(chan bool, 1)
|
|
|
-
|
|
|
- clusterSize := 5
|
|
|
- argGroup, etcds, err := CreateCluster(clusterSize, procAttr, false)
|
|
|
- defer DestroyCluster(etcds)
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- t.Fatal("cannot create cluster")
|
|
|
- }
|
|
|
-
|
|
|
- c := etcd.NewClient(nil)
|
|
|
-
|
|
|
- go Monitor(clusterSize, clusterSize, leaderChan, all, stop)
|
|
|
- <-all
|
|
|
- <-leaderChan
|
|
|
- stop <- true
|
|
|
-
|
|
|
- c.SyncCluster()
|
|
|
-
|
|
|
- // send 10 commands
|
|
|
- for i := 0; i < 10; i++ {
|
|
|
- // Test Set
|
|
|
- _, err := c.Set("foo", "bar", 0)
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- time.Sleep(time.Second)
|
|
|
-
|
|
|
- // kill all
|
|
|
- DestroyCluster(etcds)
|
|
|
-
|
|
|
- time.Sleep(time.Second)
|
|
|
-
|
|
|
- stop = make(chan bool)
|
|
|
- leaderChan = make(chan string, 1)
|
|
|
- all = make(chan bool, 1)
|
|
|
-
|
|
|
- time.Sleep(time.Second)
|
|
|
-
|
|
|
- for i := 0; i < clusterSize; i++ {
|
|
|
- etcds[i], err = os.StartProcess(EtcdBinPath, argGroup[i], procAttr)
|
|
|
- }
|
|
|
-
|
|
|
- go Monitor(clusterSize, 1, leaderChan, all, stop)
|
|
|
-
|
|
|
- <-all
|
|
|
- <-leaderChan
|
|
|
-
|
|
|
- result, err := c.Set("foo", "bar", 0)
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- t.Fatalf("Recovery error: %s", err)
|
|
|
- }
|
|
|
-
|
|
|
- if result.Node.ModifiedIndex != 17 {
|
|
|
- t.Fatalf("recovery failed! [%d/17]", result.Node.ModifiedIndex)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// TestTLSMultiNodeKillAllAndRecovery create a five nodes
|
|
|
// then kill all the nodes and restart
|
|
|
func TestTLSMultiNodeKillAllAndRecovery(t *testing.T) {
|