integration: fix test to propagate NewServer errors

release-2.0
Jonathan Boulle 2014-11-12 13:11:36 -08:00
parent 1197c1f965
commit d1ae276434
1 changed files with 19 additions and 9 deletions

View File

@ -25,7 +25,6 @@ import (
"net/http/httptest"
"os"
"strings"
"sync"
"testing"
"time"
@ -154,17 +153,19 @@ func NewClusterByDiscovery(t *testing.T, size int, url string) *cluster {
}
func (c *cluster) Launch(t *testing.T) {
var wg sync.WaitGroup
errc := make(chan error)
for _, m := range c.Members {
wg.Add(1)
// Members are launched in separate goroutines because if they boot
// using discovery url, they have to wait for others to register to continue.
go func(m *member) {
m.Launch(t)
wg.Done()
errc <- m.Launch(t)
}(m)
}
wg.Wait()
for _ = range c.Members {
if err := <-errc; err != nil {
t.Fatalf("error setting up member: %v", err)
}
}
// wait cluster to be stable to receive future client requests
c.waitClientURLsPublished(t)
}
@ -243,15 +244,23 @@ type member struct {
func mustNewMember(t *testing.T, name string) *member {
var err error
m := &member{}
pln := newLocalListener(t)
m.PeerListeners = []net.Listener{pln}
m.PeerURLs, err = types.NewURLs([]string{"http://" + pln.Addr().String()})
if err != nil {
t.Fatal(err)
}
cln := newLocalListener(t)
m.ClientListeners = []net.Listener{cln}
m.Name = name
m.ClientURLs, err = types.NewURLs([]string{"http://" + cln.Addr().String()})
if err != nil {
t.Fatal(err)
}
m.Name = name
m.DataDir, err = ioutil.TempDir(os.TempDir(), "etcd")
if err != nil {
t.Fatal(err)
@ -268,10 +277,10 @@ func mustNewMember(t *testing.T, name string) *member {
// Launch starts a member based on ServerConfig, PeerListeners
// and ClientListeners.
func (m *member) Launch(t *testing.T) {
func (m *member) Launch(t *testing.T) error {
var err error
if m.s, err = etcdserver.NewServer(&m.ServerConfig); err != nil {
t.Fatalf("failed to initialize the etcd server: %v", err)
return fmt.Errorf("failed to initialize the etcd server: %v", err)
}
m.s.Ticker = time.Tick(tickDuration)
m.s.SyncTicker = time.Tick(10 * tickDuration)
@ -293,6 +302,7 @@ func (m *member) Launch(t *testing.T) {
hs.Start()
m.hss = append(m.hss, hs)
}
return nil
}
// Stop stops the member, but the data dir of the member is preserved.