提交 f64539be 编写于 作者: H Helin Wang

use random port for embed etcd to avoid port collision

上级 34add153
...@@ -2,7 +2,9 @@ package master_test ...@@ -2,7 +2,9 @@ package master_test
import ( import (
"io/ioutil" "io/ioutil"
"net/url"
"os" "os"
"strings"
"testing" "testing"
"time" "time"
...@@ -19,6 +21,10 @@ func TestNewServiceWithEtcd(t *testing.T) { ...@@ -19,6 +21,10 @@ func TestNewServiceWithEtcd(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
cfg := embed.NewConfig() cfg := embed.NewConfig()
lpurl, _ := url.Parse("http://localhost:0")
lcurl, _ := url.Parse("http://localhost:0")
cfg.LPUrls = []url.URL{*lpurl}
cfg.LCUrls = []url.URL{*lcurl}
cfg.Dir = etcdDir cfg.Dir = etcdDir
e, err := embed.StartEtcd(cfg) e, err := embed.StartEtcd(cfg)
if err != nil { if err != nil {
...@@ -30,15 +36,13 @@ func TestNewServiceWithEtcd(t *testing.T) { ...@@ -30,15 +36,13 @@ func TestNewServiceWithEtcd(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
}() }()
select {
case <-e.Server.ReadyNotify():
t.Log("Server is ready!")
case <-time.After(60 * time.Second):
e.Server.Stop() // trigger a shutdown
t.Fatal("Server took too long to start!")
}
ep := []string{"127.0.0.1:2379"} <-e.Server.ReadyNotify()
port := strings.Split(e.Clients[0].Addr().String(), ":")[1]
endpoint := "127.0.0.1:" + port
ep := []string{endpoint}
masterAddr := "127.0.0.1:3306" masterAddr := "127.0.0.1:3306"
store, err := master.NewEtcdClient(ep, masterAddr, master.DefaultLockPath, master.DefaultAddrPath, master.DefaultStatePath, 30) store, err := master.NewEtcdClient(ep, masterAddr, master.DefaultLockPath, master.DefaultAddrPath, master.DefaultStatePath, 30)
if err != nil { if err != nil {
......
...@@ -2,7 +2,9 @@ package client_test ...@@ -2,7 +2,9 @@ package client_test
import ( import (
"io/ioutil" "io/ioutil"
"net/url"
"os" "os"
"strings"
"sync" "sync"
"testing" "testing"
...@@ -16,6 +18,10 @@ func TestSelector(t *testing.T) { ...@@ -16,6 +18,10 @@ func TestSelector(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
cfg := embed.NewConfig() cfg := embed.NewConfig()
lpurl, _ := url.Parse("http://localhost:0")
lcurl, _ := url.Parse("http://localhost:0")
cfg.LPUrls = []url.URL{*lpurl}
cfg.LCUrls = []url.URL{*lcurl}
cfg.Dir = etcdDir cfg.Dir = etcdDir
e, err := embed.StartEtcd(cfg) e, err := embed.StartEtcd(cfg)
if err != nil { if err != nil {
...@@ -31,6 +37,9 @@ func TestSelector(t *testing.T) { ...@@ -31,6 +37,9 @@ func TestSelector(t *testing.T) {
<-e.Server.ReadyNotify() <-e.Server.ReadyNotify()
port := strings.Split(e.Clients[0].Addr().String(), ":")[1]
endpoint := "127.0.0.1:" + port
var mu sync.Mutex var mu sync.Mutex
selectedCount := 0 selectedCount := 0
var wg sync.WaitGroup var wg sync.WaitGroup
...@@ -53,10 +62,10 @@ func TestSelector(t *testing.T) { ...@@ -53,10 +62,10 @@ func TestSelector(t *testing.T) {
} }
} }
c0 := client.NewEtcd("127.0.0.1:2379") c0 := client.NewEtcd(endpoint)
c1 := client.NewEtcd("127.0.0.1:2379") c1 := client.NewEtcd(endpoint)
c2 := client.NewEtcd("127.0.0.1:2379") c2 := client.NewEtcd(endpoint)
c3 := client.NewEtcd("127.0.0.1:2379") c3 := client.NewEtcd(endpoint)
wg.Add(3) wg.Add(3)
go selectAndDone(c0) go selectAndDone(c0)
go selectAndDone(c1) go selectAndDone(c1)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册