Merge pull request #15053 from wafuwafu13/show-as-learner

enhancement(ctlv3): display `as learner` when member add as learner
This commit is contained in:
Piotr Tabor 2022-12-29 09:44:26 +01:00 committed by GitHub
commit cf22f60e8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 4 deletions

View File

@ -126,7 +126,11 @@ func (s *simplePrinter) Alarm(resp v3.AlarmResponse) {
} }
func (s *simplePrinter) MemberAdd(r v3.MemberAddResponse) { func (s *simplePrinter) MemberAdd(r v3.MemberAddResponse) {
fmt.Printf("Member %16x added to cluster %16x\n", r.Member.ID, r.Header.ClusterId) asLearner := " "
if r.Member.IsLearner {
asLearner = " as learner "
}
fmt.Printf("Member %16x added%sto cluster %16x\n", r.Member.ID, asLearner, r.Header.ClusterId)
} }
func (s *simplePrinter) MemberRemove(id uint64, r v3.MemberRemoveResponse) { func (s *simplePrinter) MemberRemove(id uint64, r v3.MemberRemoveResponse) {

View File

@ -28,6 +28,10 @@ import (
func TestCtlV3MemberList(t *testing.T) { testCtl(t, memberListTest) } func TestCtlV3MemberList(t *testing.T) { testCtl(t, memberListTest) }
func TestCtlV3MemberListWithHex(t *testing.T) { testCtl(t, memberListWithHexTest) } func TestCtlV3MemberListWithHex(t *testing.T) { testCtl(t, memberListWithHexTest) }
func TestCtlV3MemberAdd(t *testing.T) { testCtl(t, memberAddTest) }
func TestCtlV3MemberAddAsLearner(t *testing.T) { testCtl(t, memberAddAsLearnerTest) }
func TestCtlV3MemberUpdate(t *testing.T) { testCtl(t, memberUpdateTest) } func TestCtlV3MemberUpdate(t *testing.T) { testCtl(t, memberUpdateTest) }
func TestCtlV3MemberUpdateNoTLS(t *testing.T) { func TestCtlV3MemberUpdateNoTLS(t *testing.T) {
testCtl(t, memberUpdateTest, withCfg(*e2e.NewConfigNoTLS())) testCtl(t, memberUpdateTest, withCfg(*e2e.NewConfigNoTLS()))
@ -137,12 +141,28 @@ func ctlV3MemberRemove(cx ctlCtx, ep, memberID, clusterID string) error {
return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, fmt.Sprintf("%s removed from cluster %s", memberID, clusterID)) return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, fmt.Sprintf("%s removed from cluster %s", memberID, clusterID))
} }
func memberAddTest(cx ctlCtx) {
peerURL := fmt.Sprintf("http://localhost:%d", e2e.EtcdProcessBasePort+11)
if err := ctlV3MemberAdd(cx, peerURL, false); err != nil {
cx.t.Fatal(err)
}
}
func memberAddAsLearnerTest(cx ctlCtx) {
peerURL := fmt.Sprintf("http://localhost:%d", e2e.EtcdProcessBasePort+11)
if err := ctlV3MemberAdd(cx, peerURL, true); err != nil {
cx.t.Fatal(err)
}
}
func ctlV3MemberAdd(cx ctlCtx, peerURL string, isLearner bool) error { func ctlV3MemberAdd(cx ctlCtx, peerURL string, isLearner bool) error {
cmdArgs := append(cx.PrefixArgs(), "member", "add", "newmember", fmt.Sprintf("--peer-urls=%s", peerURL)) cmdArgs := append(cx.PrefixArgs(), "member", "add", "newmember", fmt.Sprintf("--peer-urls=%s", peerURL))
asLearner := " "
if isLearner { if isLearner {
cmdArgs = append(cmdArgs, "--learner") cmdArgs = append(cmdArgs, "--learner")
asLearner = " as learner "
} }
return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, " added to cluster ") return e2e.SpawnWithExpectWithEnv(cmdArgs, cx.envMap, fmt.Sprintf(" added%sto cluster ", asLearner))
} }
func memberUpdateTest(cx ctlCtx) { func memberUpdateTest(cx ctlCtx) {

View File

@ -1557,7 +1557,7 @@ func (c *Cluster) GetLearnerMembers() ([]*pb.Member, error) {
return learners, nil return learners, nil
} }
// AddAndLaunchLearnerMember creates a leaner member, adds it to Cluster // AddAndLaunchLearnerMember creates a learner member, adds it to Cluster
// via v3 MemberAdd API, and then launches the new member. // via v3 MemberAdd API, and then launches the new member.
func (c *Cluster) AddAndLaunchLearnerMember(t testutil.TB) { func (c *Cluster) AddAndLaunchLearnerMember(t testutil.TB) {
m := c.mustNewMember(t) m := c.mustNewMember(t)