diff --git a/main.go b/main.go index 995b376fa..ed368ef29 100644 --- a/main.go +++ b/main.go @@ -29,6 +29,7 @@ import ( "github.com/coreos/etcd/pkg" flagtypes "github.com/coreos/etcd/pkg/flags" "github.com/coreos/etcd/pkg/transport" + "github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/proxy" ) @@ -277,11 +278,7 @@ func setupCluster() error { err = nil switch { case set["discovery"]: - addrs := make([]string, 0) - for _, u := range apurls { - addrs = append(addrs, fmt.Sprintf("%v=%v", *name, u.String())) - } - clusterStr := strings.Join(addrs, ",") + clusterStr := genClusterString(*name, apurls) cluster, err = etcdserver.NewClusterFromString(*durl, clusterStr) case set["initial-cluster"]: fallthrough @@ -292,3 +289,11 @@ func setupCluster() error { } return err } + +func genClusterString(name string, urls types.URLs) string { + addrs := make([]string, 0) + for _, u := range urls { + addrs = append(addrs, fmt.Sprintf("%v=%v", name, u.String())) + } + return strings.Join(addrs, ",") +} diff --git a/main_test.go b/main_test.go new file mode 100644 index 000000000..ba0a4f6b7 --- /dev/null +++ b/main_test.go @@ -0,0 +1,30 @@ +package main + +import ( + "testing" + + "github.com/coreos/etcd/pkg/types" +) + +func TestGenClusterString(t *testing.T) { + tests := []struct { + name string + urls []string + wstr string + }{ + { + "node1", []string{"http://0.0.0.0:2379", "http://1.1.1.1:2379"}, + "node1=http://0.0.0.0:2379,node1=http://1.1.1.1:2379", + }, + } + for i, tt := range tests { + urls, err := types.NewURLs(tt.urls) + if err != nil { + t.Fatalf("unexpected new urls error: %v", err) + } + str := genClusterString(tt.name, urls) + if str != tt.wstr { + t.Errorf("#%d: cluster = %s, want %s", i, str, tt.wstr) + } + } +}