From e4296bbad9151846ab7203a994aa36f8bcf4599d Mon Sep 17 00:00:00 2001 From: Jingyi Hu Date: Wed, 20 Mar 2019 15:06:05 -0700 Subject: [PATCH] tests/e2e: Add test for learner member add Added an e2e test to exercise "etcdctl member add --learner". --- tests/e2e/ctl_v3_auth_test.go | 4 ++-- tests/e2e/ctl_v3_member_test.go | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/e2e/ctl_v3_auth_test.go b/tests/e2e/ctl_v3_auth_test.go index da9258966..22832c718 100644 --- a/tests/e2e/ctl_v3_auth_test.go +++ b/tests/e2e/ctl_v3_auth_test.go @@ -510,13 +510,13 @@ func authTestMemberAdd(cx ctlCtx) { peerURL := fmt.Sprintf("http://localhost:%d", etcdProcessBasePort+11) // ordinary user cannot add a new member cx.user, cx.pass = "test-user", "pass" - if err := ctlV3MemberAdd(cx, peerURL); err == nil { + if err := ctlV3MemberAdd(cx, peerURL, false); err == nil { cx.t.Fatalf("ordinary user must not be allowed to add a member") } // root can add a new member cx.user, cx.pass = "root", "root" - if err := ctlV3MemberAdd(cx, peerURL); err != nil { + if err := ctlV3MemberAdd(cx, peerURL, false); err != nil { cx.t.Fatal(err) } } diff --git a/tests/e2e/ctl_v3_member_test.go b/tests/e2e/ctl_v3_member_test.go index 1eeeebdf8..06da3b0f7 100644 --- a/tests/e2e/ctl_v3_member_test.go +++ b/tests/e2e/ctl_v3_member_test.go @@ -59,9 +59,10 @@ func TestCtlV3MemberAddClientTLS(t *testing.T) { testCtl(t, memberAddTest, withC func TestCtlV3MemberAddClientAutoTLS(t *testing.T) { testCtl(t, memberAddTest, withCfg(configClientAutoTLS)) } -func TestCtlV3MemberAddPeerTLS(t *testing.T) { testCtl(t, memberAddTest, withCfg(configPeerTLS)) } -func TestCtlV3MemberUpdate(t *testing.T) { testCtl(t, memberUpdateTest) } -func TestCtlV3MemberUpdateNoTLS(t *testing.T) { testCtl(t, memberUpdateTest, withCfg(configNoTLS)) } +func TestCtlV3MemberAddPeerTLS(t *testing.T) { testCtl(t, memberAddTest, withCfg(configPeerTLS)) } +func TestCtlV3MemberAddForLearner(t *testing.T) { testCtl(t, memberAddForLearnerTest) } +func TestCtlV3MemberUpdate(t *testing.T) { testCtl(t, memberUpdateTest) } +func TestCtlV3MemberUpdateNoTLS(t *testing.T) { testCtl(t, memberUpdateTest, withCfg(configNoTLS)) } func TestCtlV3MemberUpdateClientTLS(t *testing.T) { testCtl(t, memberUpdateTest, withCfg(configClientTLS)) } @@ -122,13 +123,22 @@ func ctlV3MemberRemove(cx ctlCtx, ep, memberID, clusterID string) error { } func memberAddTest(cx ctlCtx) { - if err := ctlV3MemberAdd(cx, fmt.Sprintf("http://localhost:%d", etcdProcessBasePort+11)); err != nil { + if err := ctlV3MemberAdd(cx, fmt.Sprintf("http://localhost:%d", etcdProcessBasePort+11), false); err != nil { cx.t.Fatal(err) } } -func ctlV3MemberAdd(cx ctlCtx, peerURL string) error { +func memberAddForLearnerTest(cx ctlCtx) { + if err := ctlV3MemberAdd(cx, fmt.Sprintf("http://localhost:%d", etcdProcessBasePort+11), true); err != nil { + cx.t.Fatal(err) + } +} + +func ctlV3MemberAdd(cx ctlCtx, peerURL string, isLearner bool) error { cmdArgs := append(cx.PrefixArgs(), "member", "add", "newmember", fmt.Sprintf("--peer-urls=%s", peerURL)) + if isLearner { + cmdArgs = append(cmdArgs, "--learner") + } return spawnWithExpect(cmdArgs, " added to cluster ") }