From 5d7d25df15fb205a5afdd6c2bf7e08a9f4fad210 Mon Sep 17 00:00:00 2001 From: Benjamin Wang Date: Thu, 24 Aug 2023 17:10:01 +0100 Subject: [PATCH] Update test case to accept random spaces in case TestV3CurlTxn Signed-off-by: Benjamin Wang --- pkg/expect/expect.go | 20 +++++++++++++++++++- tests/e2e/v3_curl_test.go | 6 +++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/pkg/expect/expect.go b/pkg/expect/expect.go index b7e2978af5c2..86d659c8a924 100644 --- a/pkg/expect/expect.go +++ b/pkg/expect/expect.go @@ -23,6 +23,7 @@ import ( "io" "os" "os/exec" + "regexp" "strings" "sync" "syscall" @@ -224,7 +225,24 @@ func (ep *ExpectProcess) ExpectFunc(ctx context.Context, f func(string) bool) (s // ExpectWithContext returns the first line containing the given string. func (ep *ExpectProcess) ExpectWithContext(ctx context.Context, s string) (string, error) { - return ep.ExpectFunc(ctx, func(txt string) bool { return strings.Contains(txt, s) }) + return ep.ExpectFunc(ctx, func(txt string) bool { + if strings.Contains(txt, s) { + return true + } + + s1 := s + if strings.HasPrefix(s1, "EXPR") { + s1 = s1[4:] + } else { + return false + } + + r, err := regexp.Compile(s1) + if err != nil { + return false + } + return r.MatchString(txt) + }) } // Expect returns the first line containing the given string. diff --git a/tests/e2e/v3_curl_test.go b/tests/e2e/v3_curl_test.go index ddd1da103dcd..08c9278af2aa 100644 --- a/tests/e2e/v3_curl_test.go +++ b/tests/e2e/v3_curl_test.go @@ -180,7 +180,7 @@ func testV3CurlTxn(cx ctlCtx) { if jerr != nil { cx.t.Fatal(jerr) } - expected := `"succeeded":true,"responses":[{"response_put":{"header":{"revision":"2"}}}]` + expected := `EXPR.*"succeeded":true,\s*"responses":\[{"response_put":{"header":{"revision":"2"}}}].*` p := cx.apiPrefix if err := e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: path.Join(p, "/kv/txn"), Value: string(jsonDat), Expected: expected}); err != nil { cx.t.Fatalf("failed testV3CurlTxn txn with curl using prefix (%s) (%v)", p, err) @@ -188,7 +188,7 @@ func testV3CurlTxn(cx ctlCtx) { // was crashing etcd server malformed := `{"compare":[{"result":0,"target":1,"key":"Zm9v","TargetUnion":null}],"success":[{"Request":{"RequestPut":{"key":"Zm9v","value":"YmFy"}}}]}` - if err := e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: path.Join(p, "/kv/txn"), Value: malformed, Expected: `"code":3,"message":"etcdserver: key not found"`}); err != nil { + if err := e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: path.Join(p, "/kv/txn"), Value: malformed, Expected: `EXPR.*"code":3,\s*"message":"etcdserver: key not found".*`}); err != nil { cx.t.Fatalf("failed testV3CurlTxn put with curl using prefix (%s) (%v)", p, err) } @@ -239,7 +239,7 @@ func testV3CurlAuth(cx ctlCtx) { testutil.AssertNil(cx.t, err) // fail put no auth - if err = e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: path.Join(p, "/kv/put"), Value: string(putreq), Expected: `"code":3,"message":"etcdserver: user name is empty"`}); err != nil { + if err = e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: path.Join(p, "/kv/put"), Value: string(putreq), Expected: `EXPR.*"code":3,\s*"message":"etcdserver: user name is empty".*`}); err != nil { cx.t.Fatalf("failed testV3CurlAuth no auth put with curl using prefix (%s) (%v)", p, err) }