From 13e36f963dfef9f4bbb501fd3b38bebd6fef364a Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 8 Mar 2017 13:39:37 -0800 Subject: [PATCH] e2e: don't remove member used to connect to etcd cluster Fixes #7204 --- e2e/ctl_v3_auth_test.go | 27 +++------------------------ e2e/ctl_v3_member_test.go | 19 ++----------------- e2e/ctl_v3_test.go | 27 +++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 41 deletions(-) diff --git a/e2e/ctl_v3_auth_test.go b/e2e/ctl_v3_auth_test.go index a58ea95cf..dee88c14b 100644 --- a/e2e/ctl_v3_auth_test.go +++ b/e2e/ctl_v3_auth_test.go @@ -487,38 +487,17 @@ func authTestMemberRemove(cx ctlCtx) { cx.user, cx.pass = "root", "root" authSetupTestUser(cx) - n1 := cx.cfg.clusterSize - if n1 < 2 { - cx.t.Fatalf("%d-node is too small to test 'member remove'", n1) - } - resp, err := getMemberList(cx) - if err != nil { - cx.t.Fatal(err) - } - if n1 != len(resp.Members) { - cx.t.Fatalf("expected %d, got %d", n1, len(resp.Members)) - } - - clusterID := fmt.Sprintf("%x", resp.Header.ClusterId) - - // remove one member that is not the one we connected to. - var memIDToRemove string - for _, m := range resp.Members { - if m.ID != resp.Header.MemberId { - memIDToRemove = fmt.Sprintf("%x", m.ID) - break - } - } + memIDToRemove, clusterID := cx.memberToRemove() // ordinal user cannot remove a member cx.user, cx.pass = "test-user", "pass" - if err = ctlV3MemberRemove(cx, memIDToRemove, clusterID); err == nil { + if err := ctlV3MemberRemove(cx, memIDToRemove, clusterID); err == nil { cx.t.Fatalf("ordinal user must not be allowed to remove a member") } // root can remove a member cx.user, cx.pass = "root", "root" - if err = ctlV3MemberRemove(cx, memIDToRemove, clusterID); err != nil { + if err := ctlV3MemberRemove(cx, memIDToRemove, clusterID); err != nil { cx.t.Fatal(err) } } diff --git a/e2e/ctl_v3_member_test.go b/e2e/ctl_v3_member_test.go index cfd99ac2e..4ddc0c4fa 100644 --- a/e2e/ctl_v3_member_test.go +++ b/e2e/ctl_v3_member_test.go @@ -71,23 +71,8 @@ func getMemberList(cx ctlCtx) (etcdserverpb.MemberListResponse, error) { } func memberRemoveTest(cx ctlCtx) { - n1 := cx.cfg.clusterSize - if n1 < 2 { - cx.t.Fatalf("%d-node is too small to test 'member remove'", n1) - } - resp, err := getMemberList(cx) - if err != nil { - cx.t.Fatal(err) - } - if n1 != len(resp.Members) { - cx.t.Fatalf("expected %d, got %d", n1, len(resp.Members)) - } - - var ( - memIDToRemove = fmt.Sprintf("%x", resp.Header.MemberId) - cluserID = fmt.Sprintf("%x", resp.Header.ClusterId) - ) - if err = ctlV3MemberRemove(cx, memIDToRemove, cluserID); err != nil { + memIDToRemove, clusterID := cx.memberToRemove() + if err := ctlV3MemberRemove(cx, memIDToRemove, clusterID); err != nil { cx.t.Fatal(err) } } diff --git a/e2e/ctl_v3_test.go b/e2e/ctl_v3_test.go index ffbb6c2f3..2165c819f 100644 --- a/e2e/ctl_v3_test.go +++ b/e2e/ctl_v3_test.go @@ -214,3 +214,30 @@ func (cx *ctlCtx) PrefixArgs() []string { func isGRPCTimedout(err error) bool { return strings.Contains(err.Error(), "grpc: timed out trying to connect") } + +func (cx *ctlCtx) memberToRemove() (memberID string, clusterID string) { + n1 := cx.cfg.clusterSize + if n1 < 2 { + cx.t.Fatalf("%d-node is too small to test 'member remove'", n1) + } + + resp, err := getMemberList(*cx) + if err != nil { + cx.t.Fatal(err) + } + if n1 != len(resp.Members) { + cx.t.Fatalf("expected %d, got %d", n1, len(resp.Members)) + } + + clusterID = fmt.Sprintf("%x", resp.Header.ClusterId) + + // remove one member that is not the one we connected to. + for _, m := range resp.Members { + if m.ID != resp.Header.MemberId { + memberID = fmt.Sprintf("%x", m.ID) + break + } + } + + return memberID, clusterID +}