From ec4128af69a54863dfe206eb37f647ed800b7f3d Mon Sep 17 00:00:00 2001 From: Ivan Valdes Date: Thu, 15 Feb 2024 10:50:26 -0800 Subject: [PATCH] tests/e2e: implement EtcdProcess GoFailClientTimeout Signed-off-by: Ivan Valdes --- tests/e2e/cluster_test.go | 42 ++++++++++++++++++++------------------- tests/e2e/etcd_process.go | 28 +++++++++++++++++++------- 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/tests/e2e/cluster_test.go b/tests/e2e/cluster_test.go index e5c8533ce..d176b4520 100644 --- a/tests/e2e/cluster_test.go +++ b/tests/e2e/cluster_test.go @@ -101,12 +101,13 @@ type etcdProcessCluster struct { } type etcdProcessClusterConfig struct { - execPath string - dataDirPath string - keepDataDir bool - goFailEnabled bool - peerProxy bool - envVars map[string]string + execPath string + dataDirPath string + keepDataDir bool + goFailEnabled bool + goFailClientTimeout time.Duration + peerProxy bool + envVars map[string]string clusterSize int @@ -348,20 +349,21 @@ func (cfg *etcdProcessClusterConfig) etcdServerProcessConfigs() []*etcdServerPro } etcdCfgs[i] = &etcdServerProcessConfig{ - execPath: cfg.execPath, - args: args, - envVars: envVars, - tlsArgs: cfg.tlsArgs(), - dataDirPath: dataDirPath, - keepDataDir: cfg.keepDataDir, - name: name, - purl: peerAdvertiseUrl, - acurl: curl, - murl: murl, - initialToken: cfg.initialToken, - clientHttpUrl: clientHttpUrl, - goFailPort: gofailPort, - proxy: proxyCfg, + execPath: cfg.execPath, + args: args, + envVars: envVars, + tlsArgs: cfg.tlsArgs(), + dataDirPath: dataDirPath, + keepDataDir: cfg.keepDataDir, + name: name, + purl: peerAdvertiseUrl, + acurl: curl, + murl: murl, + initialToken: cfg.initialToken, + clientHttpUrl: clientHttpUrl, + goFailPort: gofailPort, + goFailClientTimeout: cfg.goFailClientTimeout, + proxy: proxyCfg, } } diff --git a/tests/e2e/etcd_process.go b/tests/e2e/etcd_process.go index 954fffd80..86128a1d6 100644 --- a/tests/e2e/etcd_process.go +++ b/tests/e2e/etcd_process.go @@ -92,8 +92,9 @@ type etcdServerProcessConfig struct { initialToken string initialCluster string - proxy *proxy.ServerConfig - goFailPort int + proxy *proxy.ServerConfig + goFailPort int + goFailClientTimeout time.Duration } func newEtcdServerProcess(cfg *etcdServerProcessConfig) (*etcdServerProcess, error) { @@ -107,8 +108,12 @@ func newEtcdServerProcess(cfg *etcdServerProcessConfig) (*etcdServerProcess, err } ep := &etcdServerProcess{cfg: cfg, donec: make(chan struct{})} if cfg.goFailPort != 0 { - ep.failpoints = &BinaryFailpoints{member: ep} + ep.failpoints = &BinaryFailpoints{ + member: ep, + clientTimeout: cfg.goFailClientTimeout, + } } + return ep, nil } @@ -232,6 +237,7 @@ func (ep *etcdServerProcess) Etcdctl(connType clientConnType, isAutoTLS, v2 bool type BinaryFailpoints struct { member etcdProcess availableCache map[string]string + clientTimeout time.Duration } func (f *BinaryFailpoints) SetupEnv(failpoint, payload string) error { @@ -253,6 +259,12 @@ func (f *BinaryFailpoints) SetupHTTP(ctx context.Context, failpoint, payload str if err != nil { return err } + httpClient := http.Client{ + Timeout: 1 * time.Second, + } + if f.clientTimeout != 0 { + httpClient.Timeout = f.clientTimeout + } resp, err := httpClient.Do(r) if err != nil { return err @@ -275,6 +287,12 @@ func (f *BinaryFailpoints) DeactivateHTTP(ctx context.Context, failpoint string) if err != nil { return err } + httpClient := http.Client{ + Timeout: 1 * time.Second, + } + if f.clientTimeout != 0 { + httpClient.Timeout = f.clientTimeout + } resp, err := httpClient.Do(r) if err != nil { return err @@ -286,10 +304,6 @@ func (f *BinaryFailpoints) DeactivateHTTP(ctx context.Context, failpoint string) return nil } -var httpClient = http.Client{ - Timeout: 1 * time.Second, -} - func (f *BinaryFailpoints) Enabled() bool { _, err := failpoints(f.member) if err != nil {