From 75449c075df341e580acf2f2333ec854b4c75826 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Mon, 14 Feb 2022 10:04:50 +0100 Subject: [PATCH] tests: Allow sepecting member to in curl commands --- tests/e2e/cluster_downgrade_test.go | 5 +++-- tests/e2e/v3_curl_test.go | 5 +++-- tests/framework/e2e/curl.go | 20 ++++++++++---------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/tests/e2e/cluster_downgrade_test.go b/tests/e2e/cluster_downgrade_test.go index e5e74528a3e..84ed7183c73 100644 --- a/tests/e2e/cluster_downgrade_test.go +++ b/tests/e2e/cluster_downgrade_test.go @@ -16,6 +16,7 @@ package e2e import ( "fmt" + "math/rand" "testing" "time" @@ -105,13 +106,13 @@ func validateVersion(t *testing.T, epc *e2e.EtcdProcessCluster, expect version.V // Two separate calls to expect as it doesn't support multiple matches on the same line testutils.ExecuteWithTimeout(t, 20*time.Second, func() { if expect.Server != "" { - err := e2e.SpawnWithExpects(e2e.CURLPrefixArgs(epc, "GET", e2e.CURLReq{Endpoint: "/version"}), nil, `"etcdserver":"`+expect.Server) + err := e2e.SpawnWithExpects(e2e.CURLPrefixArgs(epc.Cfg, epc.Procs[rand.Intn(epc.Cfg.ClusterSize)], "GET", e2e.CURLReq{Endpoint: "/version"}), nil, `"etcdserver":"`+expect.Server) if err != nil { t.Fatal(err) } } if expect.Cluster != "" { - err := e2e.SpawnWithExpects(e2e.CURLPrefixArgs(epc, "GET", e2e.CURLReq{Endpoint: "/version"}), nil, `"etcdcluster":"`+expect.Cluster) + err := e2e.SpawnWithExpects(e2e.CURLPrefixArgs(epc.Cfg, epc.Procs[rand.Intn(epc.Cfg.ClusterSize)], "GET", e2e.CURLReq{Endpoint: "/version"}), nil, `"etcdcluster":"`+expect.Cluster) if err != nil { t.Fatal(err) } diff --git a/tests/e2e/v3_curl_test.go b/tests/e2e/v3_curl_test.go index 17fe6590be8..35450bbe418 100644 --- a/tests/e2e/v3_curl_test.go +++ b/tests/e2e/v3_curl_test.go @@ -18,6 +18,7 @@ import ( "encoding/base64" "encoding/json" "fmt" + "math/rand" "path" "strconv" "testing" @@ -243,7 +244,7 @@ func testV3CurlAuth(cx ctlCtx) { lineFunc = func(txt string) bool { return true } ) - cmdArgs = e2e.CURLPrefixArgs(cx.epc, "POST", e2e.CURLReq{Endpoint: path.Join(p, "/auth/authenticate"), Value: string(authreq)}) + cmdArgs = e2e.CURLPrefixArgs(cx.epc.Cfg, cx.epc.Procs[rand.Intn(cx.epc.Cfg.ClusterSize)], "POST", e2e.CURLReq{Endpoint: path.Join(p, "/auth/authenticate"), Value: string(authreq)}) proc, err := e2e.SpawnCmd(cmdArgs, cx.envMap) testutil.AssertNil(cx.t, err) defer proc.Close() @@ -282,7 +283,7 @@ func testV3CurlCampaign(cx ctlCtx) { if err != nil { cx.t.Fatal(err) } - cargs := e2e.CURLPrefixArgs(cx.epc, "POST", e2e.CURLReq{ + cargs := e2e.CURLPrefixArgs(cx.epc.Cfg, cx.epc.Procs[rand.Intn(cx.epc.Cfg.ClusterSize)], "POST", e2e.CURLReq{ Endpoint: path.Join(cx.apiPrefix, "/election/campaign"), Value: string(cdata), }) diff --git a/tests/framework/e2e/curl.go b/tests/framework/e2e/curl.go index 284b49aaa91..a3b11de8591 100644 --- a/tests/framework/e2e/curl.go +++ b/tests/framework/e2e/curl.go @@ -40,20 +40,20 @@ type CURLReq struct { // CURLPrefixArgs builds the beginning of a curl command for a given key // addressed to a random URL in the given cluster. -func CURLPrefixArgs(clus *EtcdProcessCluster, method string, req CURLReq) []string { +func CURLPrefixArgs(cfg *EtcdProcessClusterConfig, member EtcdProcess, method string, req CURLReq) []string { var ( cmdArgs = []string{"curl"} - acurl = clus.Procs[rand.Intn(clus.Cfg.ClusterSize)].Config().Acurl + acurl = member.Config().Acurl ) if req.MetricsURLScheme != "https" { if req.IsTLS { - if clus.Cfg.ClientTLS != ClientTLSAndNonTLS { + if cfg.ClientTLS != ClientTLSAndNonTLS { panic("should not use cURLPrefixArgsUseTLS when serving only TLS or non-TLS") } cmdArgs = append(cmdArgs, "--cacert", CaPath, "--cert", CertPath, "--key", PrivateKeyPath) - acurl = ToTLS(clus.Procs[rand.Intn(clus.Cfg.ClusterSize)].Config().Acurl) - } else if clus.Cfg.ClientTLS == ClientTLS { - if !clus.Cfg.NoCN { + acurl = ToTLS(member.Config().Acurl) + } else if cfg.ClientTLS == ClientTLS { + if !cfg.NoCN { cmdArgs = append(cmdArgs, "--cacert", CaPath, "--cert", CertPath, "--key", PrivateKeyPath) } else { cmdArgs = append(cmdArgs, "--cacert", CaPath, "--cert", CertPath3, "--key", PrivateKeyPath3) @@ -61,7 +61,7 @@ func CURLPrefixArgs(clus *EtcdProcessCluster, method string, req CURLReq) []stri } } if req.MetricsURLScheme != "" { - acurl = clus.Procs[rand.Intn(clus.Cfg.ClusterSize)].EndpointsMetrics()[0] + acurl = member.EndpointsMetrics()[0] } ep := acurl + req.Endpoint @@ -94,13 +94,13 @@ func CURLPrefixArgs(clus *EtcdProcessCluster, method string, req CURLReq) []stri } func CURLPost(clus *EtcdProcessCluster, req CURLReq) error { - return SpawnWithExpect(CURLPrefixArgs(clus, "POST", req), req.Expected) + return SpawnWithExpect(CURLPrefixArgs(clus.Cfg, clus.Procs[rand.Intn(clus.Cfg.ClusterSize)], "POST", req), req.Expected) } func CURLPut(clus *EtcdProcessCluster, req CURLReq) error { - return SpawnWithExpect(CURLPrefixArgs(clus, "PUT", req), req.Expected) + return SpawnWithExpect(CURLPrefixArgs(clus.Cfg, clus.Procs[rand.Intn(clus.Cfg.ClusterSize)], "PUT", req), req.Expected) } func CURLGet(clus *EtcdProcessCluster, req CURLReq) error { - return SpawnWithExpect(CURLPrefixArgs(clus, "GET", req), req.Expected) + return SpawnWithExpect(CURLPrefixArgs(clus.Cfg, clus.Procs[rand.Intn(clus.Cfg.ClusterSize)], "GET", req), req.Expected) }