github.com/sym3tri/etcd@v0.2.1-0.20140422215517-a563d82f95d6/tests/functional/join_test.go (about)

     1  package test
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  func TestJoinThroughFollower(t *testing.T) {
    10  	procAttr := new(os.ProcAttr)
    11  	procAttr.Files = []*os.File{nil, os.Stdout, os.Stderr}
    12  
    13  	_, etcds, err := CreateCluster(2, procAttr, false)
    14  	if err != nil {
    15  		t.Fatal("cannot create cluster")
    16  	}
    17  	defer DestroyCluster(etcds)
    18  
    19  	time.Sleep(time.Second)
    20  
    21  	newEtcd, err := os.StartProcess(EtcdBinPath, []string{"etcd", "-data-dir=/tmp/node3", "-name=node3", "-addr=127.0.0.1:4003", "-peer-addr=127.0.0.1:7003", "-peers=127.0.0.1:7002", "-f"}, procAttr)
    22  	if err != nil {
    23  		t.Fatal("failed starting node3")
    24  	}
    25  	defer func() {
    26  		newEtcd.Kill()
    27  		newEtcd.Release()
    28  	}()
    29  
    30  	time.Sleep(time.Second)
    31  
    32  	leader, err := getLeader("http://127.0.0.1:4003")
    33  	if err != nil {
    34  		t.Fatal("failed getting leader from node3:", err)
    35  	}
    36  	if leader != "http://127.0.0.1:7001" {
    37  		t.Fatal("expect=http://127.0.0.1:7001 got=", leader)
    38  	}
    39  }