From 9bd86a647fdf300ede505122e0d8b9ddabce8f43 Mon Sep 17 00:00:00 2001 From: Jingyi Hu Date: Sat, 16 Mar 2019 22:37:24 -0700 Subject: [PATCH] clientv3: Add TestMemberAddWithExistingURLs TestMemberAddWithExistingURLs ensures adding a new member with URLs already being used in the cluster will not succeed. --- clientv3/integration/cluster_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/clientv3/integration/cluster_test.go b/clientv3/integration/cluster_test.go index ce629488bb7..37d773a4b3b 100644 --- a/clientv3/integration/cluster_test.go +++ b/clientv3/integration/cluster_test.go @@ -17,6 +17,7 @@ package integration import ( "context" "reflect" + "strings" "testing" "go.etcd.io/etcd/integration" @@ -61,6 +62,30 @@ func TestMemberAdd(t *testing.T) { } } +func TestMemberAddWithExistingURLs(t *testing.T) { + defer testutil.AfterTest(t) + + clus := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 3}) + defer clus.Terminate(t) + + capi := clus.RandClient() + + resp, err := capi.MemberList(context.Background()) + if err != nil { + t.Fatalf("failed to list member %v", err) + } + + existingURL := resp.Members[0].PeerURLs[0] + _, err = capi.MemberAdd(context.Background(), []string{existingURL}) + expectedErrKeywords := "Peer URLs already exists" + if err == nil { + t.Fatalf("expecting add member to fail, got no error") + } + if !strings.Contains(err.Error(), expectedErrKeywords) { + t.Errorf("expecting error to contain %s, got %s", expectedErrKeywords, err.Error()) + } +} + func TestMemberRemove(t *testing.T) { defer testutil.AfterTest(t)