diff --git a/etcdserver/cluster_test.go b/etcdserver/cluster_test.go index dc05832d9..228156f37 100644 --- a/etcdserver/cluster_test.go +++ b/etcdserver/cluster_test.go @@ -143,6 +143,65 @@ func TestClusterAddBad(t *testing.T) { } } +func TestClusterGetEndpoints(t *testing.T) { + tests := []struct { + mems []Member + endpoints []string + }{ + // single peer with a single address + { + mems: []Member{ + {ID: 1, PeerURLs: []string{"192.0.2.1"}}, + }, + endpoints: []string{"http://192.0.2.1"}, + }, + + // single peer with a single address with a port + { + mems: []Member{ + {ID: 1, PeerURLs: []string{"192.0.2.1:8001"}}, + }, + endpoints: []string{"http://192.0.2.1:8001"}, + }, + + // several members explicitly unsorted + { + mems: []Member{ + {ID: 2, PeerURLs: []string{"192.0.2.3", "192.0.2.4"}}, + {ID: 3, PeerURLs: []string{"192.0.2.5", "192.0.2.6"}}, + {ID: 1, PeerURLs: []string{"192.0.2.1", "192.0.2.2"}}, + }, + endpoints: []string{"http://192.0.2.1", "http://192.0.2.2", "http://192.0.2.3", "http://192.0.2.4", "http://192.0.2.5", "http://192.0.2.6"}, + }, + + // no members + { + mems: []Member{}, + endpoints: []string{}, + }, + + // peer with no endpoints + { + mems: []Member{ + {ID: 3, PeerURLs: []string{}}, + }, + endpoints: []string{}, + }, + } + + for i, tt := range tests { + c := Cluster{} + if err := c.AddSlice(tt.mems); err != nil { + t.Errorf("AddSlice error: %v", err) + continue + } + endpoints := c.Endpoints() + if !reflect.DeepEqual(tt.endpoints, endpoints) { + t.Errorf("#%d: members.Endpoints() incorrect: want=%#v got=%#v", i, tt.endpoints, endpoints) + } + } +} + func TestClusterClientURLs(t *testing.T) { tests := []struct { mems []Member diff --git a/etcdserver/etcdhttp/http_test.go b/etcdserver/etcdhttp/http_test.go index 2e2b4cd92..440ed6ee4 100644 --- a/etcdserver/etcdhttp/http_test.go +++ b/etcdserver/etcdhttp/http_test.go @@ -634,68 +634,6 @@ func TestServeMachines(t *testing.T) { } } -func TestClusterGetEndpoints(t *testing.T) { - tests := []struct { - clusterStore etcdserver.ClusterStore - endpoints []string - }{ - // single peer with a single address - { - clusterStore: &fakeCluster{ - members: []etcdserver.Member{ - {ID: 1, PeerURLs: []string{"192.0.2.1"}}, - }, - }, - endpoints: []string{"http://192.0.2.1"}, - }, - - // single peer with a single address with a port - { - clusterStore: &fakeCluster{ - members: []etcdserver.Member{ - {ID: 1, PeerURLs: []string{"192.0.2.1:8001"}}, - }, - }, - endpoints: []string{"http://192.0.2.1:8001"}, - }, - - // several members explicitly unsorted - { - clusterStore: &fakeCluster{ - members: []etcdserver.Member{ - {ID: 2, PeerURLs: []string{"192.0.2.3", "192.0.2.4"}}, - {ID: 3, PeerURLs: []string{"192.0.2.5", "192.0.2.6"}}, - {ID: 1, PeerURLs: []string{"192.0.2.1", "192.0.2.2"}}, - }, - }, - endpoints: []string{"http://192.0.2.1", "http://192.0.2.2", "http://192.0.2.3", "http://192.0.2.4", "http://192.0.2.5", "http://192.0.2.6"}, - }, - - // no members - { - clusterStore: &fakeCluster{members: []etcdserver.Member{}}, - endpoints: []string{}, - }, - - // peer with no endpoints - { - clusterStore: &fakeCluster{ - members: []etcdserver.Member{ - {ID: 3, PeerURLs: []string{}}, - }, - }, - endpoints: []string{}, - }, - } - - for i, tt := range tests { - endpoints := tt.clusterStore.Get().Endpoints() - if !reflect.DeepEqual(tt.endpoints, endpoints) { - t.Errorf("#%d: members.Endpoints() incorrect: want=%#v got=%#v", i, tt.endpoints, endpoints) - } - } -} - func TestAllowMethod(t *testing.T) { tests := []struct { m string