Переглянути джерело

Merge pull request #7461 from heyitsanthony/fix-member-remove

e2e: don't remove member used to connect to etcd cluster
Anthony Romano 8 роки тому
батько
коміт
39dc5315ed
3 змінених файлів з 32 додано та 41 видалено
  1. 3 24
      e2e/ctl_v3_auth_test.go
  2. 2 17
      e2e/ctl_v3_member_test.go
  3. 27 0
      e2e/ctl_v3_test.go

+ 3 - 24
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)
 	}
 }

+ 2 - 17
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)
 	}
 }

+ 27 - 0
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
+}