From b22e3ff4eb900f8920f8a0d67172b3d79be7c956 Mon Sep 17 00:00:00 2001 From: Oleg Guba Date: Thu, 27 Oct 2022 14:07:49 -0700 Subject: [PATCH] Allow passing client options to Client() Signed-off-by: Oleg Guba --- tests/framework/e2e/cluster.go | 13 +++++++------ tests/framework/e2e/etcdctl.go | 7 +++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/framework/e2e/cluster.go b/tests/framework/e2e/cluster.go index 996b4cbcd..d7d30c286 100644 --- a/tests/framework/e2e/cluster.go +++ b/tests/framework/e2e/cluster.go @@ -30,6 +30,7 @@ import ( "go.etcd.io/etcd/api/v3/etcdserverpb" "go.etcd.io/etcd/api/v3/v3rpc/rpctypes" "go.etcd.io/etcd/server/v3/etcdserver" + "go.etcd.io/etcd/tests/v3/framework/config" ) const EtcdProcessBasePort = 20000 @@ -473,7 +474,7 @@ func (epc *EtcdProcessCluster) Endpoints(f func(ep EtcdProcess) []string) (ret [ return ret } -func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdProcess) bool) error { +func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdProcess) bool, opts ...config.ClientOption) error { procIndex := -1 for i := range epc.Procs { if finder(epc.Procs[i]) { @@ -495,7 +496,7 @@ func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdPr // First remove member from the cluster - memberCtl := epc.Client() + memberCtl := epc.Client(opts...) memberList, err := memberCtl.MemberList(ctx) if err != nil { return fmt.Errorf("failed to get member list: %w", err) @@ -522,7 +523,7 @@ func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdPr return proc.Close() } -func (epc *EtcdProcessCluster) StartNewProc(ctx context.Context, tb testing.TB) error { +func (epc *EtcdProcessCluster) StartNewProc(ctx context.Context, tb testing.TB, opts ...config.ClientOption) error { serverCfg := epc.Cfg.EtcdServerProcessConfig(tb, epc.nextSeq) epc.nextSeq++ @@ -536,7 +537,7 @@ func (epc *EtcdProcessCluster) StartNewProc(ctx context.Context, tb testing.TB) epc.Cfg.SetInitialOrDiscovery(serverCfg, initialCluster, "existing") // First add new member to cluster - memberCtl := epc.Client() + memberCtl := epc.Client(opts...) _, err := memberCtl.MemberAdd(ctx, serverCfg.Name, []string{serverCfg.Purl.String()}) if err != nil { return fmt.Errorf("failed to add new member: %w", err) @@ -612,8 +613,8 @@ func (epc *EtcdProcessCluster) Stop() (err error) { return err } -func (epc *EtcdProcessCluster) Client() *EtcdctlV3 { - etcdctl, err := NewEtcdctl(epc.Cfg, epc.EndpointsV3()) +func (epc *EtcdProcessCluster) Client(opts ...config.ClientOption) *EtcdctlV3 { + etcdctl, err := NewEtcdctl(epc.Cfg, epc.EndpointsV3(), opts...) if err != nil { panic(err) } diff --git a/tests/framework/e2e/etcdctl.go b/tests/framework/e2e/etcdctl.go index 44aa60522..7addd9e23 100644 --- a/tests/framework/e2e/etcdctl.go +++ b/tests/framework/e2e/etcdctl.go @@ -72,6 +72,13 @@ func WithAuth(userName, password string) config.ClientOption { } } +func WithEndpoints(endpoints []string) config.ClientOption { + return func(c any) { + ctl := c.(*EtcdctlV3) + ctl.endpoints = endpoints + } +} + func (ctl *EtcdctlV3) DowngradeEnable(ctx context.Context, version string) error { _, err := SpawnWithExpectLines(ctx, ctl.cmdArgs("downgrade", "enable", version), nil, "Downgrade enable success") return err