mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #7461 from heyitsanthony/fix-member-remove
e2e: don't remove member used to connect to etcd cluster
This commit is contained in:
commit
39dc5315ed
@ -487,38 +487,17 @@ func authTestMemberRemove(cx ctlCtx) {
|
|||||||
cx.user, cx.pass = "root", "root"
|
cx.user, cx.pass = "root", "root"
|
||||||
authSetupTestUser(cx)
|
authSetupTestUser(cx)
|
||||||
|
|
||||||
n1 := cx.cfg.clusterSize
|
memIDToRemove, clusterID := cx.memberToRemove()
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ordinal user cannot remove a member
|
// ordinal user cannot remove a member
|
||||||
cx.user, cx.pass = "test-user", "pass"
|
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")
|
cx.t.Fatalf("ordinal user must not be allowed to remove a member")
|
||||||
}
|
}
|
||||||
|
|
||||||
// root can remove a member
|
// root can remove a member
|
||||||
cx.user, cx.pass = "root", "root"
|
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)
|
cx.t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,23 +71,8 @@ func getMemberList(cx ctlCtx) (etcdserverpb.MemberListResponse, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func memberRemoveTest(cx ctlCtx) {
|
func memberRemoveTest(cx ctlCtx) {
|
||||||
n1 := cx.cfg.clusterSize
|
memIDToRemove, clusterID := cx.memberToRemove()
|
||||||
if n1 < 2 {
|
if err := ctlV3MemberRemove(cx, memIDToRemove, clusterID); err != nil {
|
||||||
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 {
|
|
||||||
cx.t.Fatal(err)
|
cx.t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,3 +214,30 @@ func (cx *ctlCtx) PrefixArgs() []string {
|
|||||||
func isGRPCTimedout(err error) bool {
|
func isGRPCTimedout(err error) bool {
|
||||||
return strings.Contains(err.Error(), "grpc: timed out trying to connect")
|
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
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user