From 02fc07b18c0841f1e585383dd4dfe48d94d478e9 Mon Sep 17 00:00:00 2001 From: Christophe Kalenzaga Date: Fri, 2 Jun 2023 11:50:58 +0200 Subject: [PATCH 1/5] add temp fix --- main_test.go | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/main_test.go b/main_test.go index cdc2903a..1e612ad3 100644 --- a/main_test.go +++ b/main_test.go @@ -516,14 +516,29 @@ func TestServe(t *testing.T) { "testdata/http.cache.yml", func(t *testing.T) { var buf bytes.Buffer - zw := gzip.NewWriter(&buf) - _, err := zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) - checkErr(t, err) - zw.Close() - req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) - checkErr(t, err) - req.Header.Set("Content-Encoding", "gzip") - resp, err := http.DefaultClient.Do(req) + var err error + var resp *http.Response + var maxRetries = 10 + // cf https://github.com/ContentSquare/chproxy/issues/341, this test sometimes failed on github action for an unknown reason + // we added a retry mecanism as a quick & dirty fix to make the CI stable + for i := 0; i <= maxRetries; i++ { + if err != nil { + t.Logf("an error happened during the http gzipped POST request test, retrying it, error: %s", err) + time.Sleep(20 * time.Millisecond) + } + zw := gzip.NewWriter(&buf) + _, err = zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) + checkErr(t, err) + zw.Close() + req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) + checkErr(t, err) + req.Header.Set("Content-Encoding", "gzip") + resp, err = http.DefaultClient.Do(req) + + if err != nil { + break + } + } checkErr(t, err) body, _ := io.ReadAll(resp.Body) if resp.StatusCode != http.StatusOK { From 022cc94a2d1093e035de408dc1f10082c8b6d257 Mon Sep 17 00:00:00 2001 From: christophe kalenzaga Date: Mon, 4 Sep 2023 11:14:45 +0200 Subject: [PATCH 2/5] improve logs in case of error --- main_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main_test.go b/main_test.go index 1e612ad3..21b57430 100644 --- a/main_test.go +++ b/main_test.go @@ -1176,12 +1176,14 @@ func TestReloadConfig(t *testing.T) { } func checkErr(t *testing.T, err error) { + t.Helper() if err != nil { t.Fatalf("unexpected error: %s", err) } } func getStringFromResponse(t *testing.T, r io.Reader) string { + t.Helper() if r == nil { t.Fatalf("unexpected nil reader") } @@ -1193,6 +1195,7 @@ func getStringFromResponse(t *testing.T, r io.Reader) string { } func checkResponse(t *testing.T, r io.Reader, expected string) { + t.Helper() got := getStringFromResponse(t, r) if !strings.Contains(got, expected) { t.Fatalf("got: %q; expected: %q", got, expected) @@ -1200,6 +1203,7 @@ func checkResponse(t *testing.T, r io.Reader, expected string) { } func httpGet(t *testing.T, url string, statusCode int) *http.Response { + t.Helper() resp, err := http.Get(url) if err != nil { t.Fatalf("unexpected erorr while doing GET request: %s", err) From 80bb987b6a554c49a00bd801eb209be0156f0d38 Mon Sep 17 00:00:00 2001 From: christophe kalenzaga Date: Mon, 4 Sep 2023 11:19:54 +0200 Subject: [PATCH 3/5] increase likelyhood to get an error --- main_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main_test.go b/main_test.go index 21b57430..c2dc41db 100644 --- a/main_test.go +++ b/main_test.go @@ -518,10 +518,10 @@ func TestServe(t *testing.T) { var buf bytes.Buffer var err error var resp *http.Response - var maxRetries = 10 + var maxRetries = 1 // cf https://github.com/ContentSquare/chproxy/issues/341, this test sometimes failed on github action for an unknown reason // we added a retry mecanism as a quick & dirty fix to make the CI stable - for i := 0; i <= maxRetries; i++ { + for i := 0; i < maxRetries; i++ { if err != nil { t.Logf("an error happened during the http gzipped POST request test, retrying it, error: %s", err) time.Sleep(20 * time.Millisecond) From 35fbaab9b17ed731d351f768334cf85bd640df52 Mon Sep 17 00:00:00 2001 From: christophe kalenzaga Date: Mon, 4 Sep 2023 11:38:15 +0200 Subject: [PATCH 4/5] remove fix to generate the initial error --- main_test.go | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/main_test.go b/main_test.go index c2dc41db..eb2dcf1e 100644 --- a/main_test.go +++ b/main_test.go @@ -516,29 +516,15 @@ func TestServe(t *testing.T) { "testdata/http.cache.yml", func(t *testing.T) { var buf bytes.Buffer - var err error - var resp *http.Response - var maxRetries = 1 - // cf https://github.com/ContentSquare/chproxy/issues/341, this test sometimes failed on github action for an unknown reason - // we added a retry mecanism as a quick & dirty fix to make the CI stable - for i := 0; i < maxRetries; i++ { - if err != nil { - t.Logf("an error happened during the http gzipped POST request test, retrying it, error: %s", err) - time.Sleep(20 * time.Millisecond) - } - zw := gzip.NewWriter(&buf) - _, err = zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) - checkErr(t, err) - zw.Close() - req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) - checkErr(t, err) - req.Header.Set("Content-Encoding", "gzip") - resp, err = http.DefaultClient.Do(req) - - if err != nil { - break - } - } + zw := gzip.NewWriter(&buf) + _, err := zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) + checkErr(t, err) + zw.Close() + req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) + checkErr(t, err) + req.Header.Set("Content-Encoding", "gzip") + resp, err := http.DefaultClient.Do(req) + checkErr(t, err) body, _ := io.ReadAll(resp.Body) if resp.StatusCode != http.StatusOK { From 3a474919f7a0ad84cea048fc404b6ec04b141244 Mon Sep 17 00:00:00 2001 From: christophe kalenzaga Date: Mon, 4 Sep 2023 16:28:20 +0200 Subject: [PATCH 5/5] add 2 quick & dirty fixes --- main_test.go | 53 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/main_test.go b/main_test.go index eb2dcf1e..d7340aab 100644 --- a/main_test.go +++ b/main_test.go @@ -516,14 +516,29 @@ func TestServe(t *testing.T) { "testdata/http.cache.yml", func(t *testing.T) { var buf bytes.Buffer - zw := gzip.NewWriter(&buf) - _, err := zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) - checkErr(t, err) - zw.Close() - req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) - checkErr(t, err) - req.Header.Set("Content-Encoding", "gzip") - resp, err := http.DefaultClient.Do(req) + var err error + var resp *http.Response + var maxRetries = 10 + // cf https://github.com/ContentSquare/chproxy/issues/341, this test sometimes failed on github action for an unknown reason + // we added a retry mecanism as a quick & dirty fix to make the CI stable + for i := 0; i < maxRetries; i++ { + if err != nil { + t.Logf("an error happened during the http gzipped POST request test, retrying it, error: %s", err) + time.Sleep(20 * time.Millisecond) + } + zw := gzip.NewWriter(&buf) + _, err = zw.Write([]byte("SELECT * FROM system.numbers LIMIT 10")) + checkErr(t, err) + zw.Close() + req, err := http.NewRequest("POST", "http://127.0.0.1:9090", &buf) + checkErr(t, err) + req.Header.Set("Content-Encoding", "gzip") + resp, err = http.DefaultClient.Do(req) + + if err == nil { + break + } + } checkErr(t, err) body, _ := io.ReadAll(resp.Body) @@ -540,9 +555,25 @@ func TestServe(t *testing.T) { "testdata/http.yml", func(t *testing.T) { buf := bytes.NewBufferString("SELECT * FROM system.numbers LIMIT 10") - req, err := http.NewRequest("POST", "http://127.0.0.1:9090", buf) - checkErr(t, err) - resp, err := http.DefaultClient.Do(req) + var err error + var resp *http.Response + var maxRetries = 10 + // cf https://github.com/ContentSquare/chproxy/issues/341, this test sometimes failed on github action for an unknown reason + // we added a retry mecanism as a quick & dirty fix to make the CI stable + for i := 0; i < maxRetries; i++ { + if err != nil { + t.Logf("an error happened during the http POST request test, retrying it, error: %s", err) + time.Sleep(20 * time.Millisecond) + } + req, err := http.NewRequest("POST", "http://127.0.0.1:9090", buf) + checkErr(t, err) + resp, err = http.DefaultClient.Do(req) + + if err == nil { + break + } + } + checkErr(t, err) if resp.StatusCode != http.StatusOK { t.Fatalf("unexpected status code: %d; expected: %d", resp.StatusCode, http.StatusOK)