From 7a1d1477952e761ec0f26a59c3f9f3811d549432 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Mon, 1 Dec 2014 16:26:27 -0800 Subject: [PATCH] integration: use timeout transport when launching cluster This makes it do the same behavior as etcdmain does. --- integration/cluster_test.go | 20 +++++++++++--------- integration/member_test.go | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/integration/cluster_test.go b/integration/cluster_test.go index 51e02fd1c..f333a78f9 100644 --- a/integration/cluster_test.go +++ b/integration/cluster_test.go @@ -34,7 +34,9 @@ import ( "github.com/coreos/etcd/etcdserver" "github.com/coreos/etcd/etcdserver/etcdhttp" "github.com/coreos/etcd/etcdserver/etcdhttp/httptypes" + "github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/types" + "github.com/coreos/etcd/rafthttp" "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context" ) @@ -423,13 +425,13 @@ func mustNewMember(t *testing.T, name string) *member { t.Fatal(err) } m.NewCluster = true - m.Transport = newTransport() + m.Transport = mustNewTransport(t) return m } // Clone returns a member with the same server configuration. The returned // member will not set PeerListeners and ClientListeners. -func (m *member) Clone() *member { +func (m *member) Clone(t *testing.T) *member { mm := &member{} mm.ServerConfig = m.ServerConfig @@ -452,7 +454,7 @@ func (m *member) Clone() *member { // this should never fail panic(err) } - mm.Transport = newTransport() + mm.Transport = mustNewTransport(t) return mm } @@ -524,18 +526,18 @@ func (m *member) Terminate(t *testing.T) { } func mustNewHTTPClient(t *testing.T, eps []string) client.HTTPClient { - cc, err := client.NewHTTPClient(newTransport(), eps) + cc, err := client.NewHTTPClient(mustNewTransport(t), eps) if err != nil { t.Fatal(err) } return cc } -func newTransport() *http.Transport { - tr := &http.Transport{} - // TODO: need the support of graceful stop in Sender to remove this - tr.DisableKeepAlives = true - tr.Dial = (&net.Dialer{Timeout: 100 * time.Millisecond}).Dial +func mustNewTransport(t *testing.T) *http.Transport { + tr, err := transport.NewTimeoutTransport(transport.TLSInfo{}, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) + if err != nil { + t.Fatal(err) + } return tr } diff --git a/integration/member_test.go b/integration/member_test.go index 7a8457fe7..b0679b318 100644 --- a/integration/member_test.go +++ b/integration/member_test.go @@ -25,7 +25,7 @@ func TestRestartMember(t *testing.T) { func TestLaunchDuplicateMemberShouldFail(t *testing.T) { size := 3 c := NewCluster(t, size) - m := c.Members[0].Clone() + m := c.Members[0].Clone(t) var err error m.DataDir, err = ioutil.TempDir(os.TempDir(), "etcd") if err != nil {