From 73f5f030acec49c7ade881e433348817b38b83bd Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Fri, 21 Aug 2020 10:46:11 +0200 Subject: [PATCH] Fix flakiness in ECS E2E : wait when reaching nginx welcome page, sometimes stack is not fully up and we get 503 errors Signed-off-by: Guillaume Tardif --- tests/ecs-e2e/e2e-ecs_test.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/ecs-e2e/e2e-ecs_test.go b/tests/ecs-e2e/e2e-ecs_test.go index c2811222..cacb153a 100644 --- a/tests/ecs-e2e/e2e-ecs_test.go +++ b/tests/ecs-e2e/e2e-ecs_test.go @@ -27,9 +27,11 @@ import ( "time" "gotest.tools/v3/assert" + "gotest.tools/v3/poll" + + "gotest.tools/v3/icmd" . "github.com/docker/api/tests/framework" - "gotest.tools/v3/icmd" ) var binDir string @@ -99,12 +101,20 @@ func TestCompose(t *testing.T) { }) t.Run("nginx GET", func(t *testing.T) { - r, err := http.Get(url) - assert.NilError(t, err) - assert.Equal(t, r.StatusCode, http.StatusOK) - b, err := ioutil.ReadAll(r.Body) - assert.NilError(t, err) - assert.Assert(t, strings.Contains(string(b), "Welcome to nginx!")) + checkUp := func(t poll.LogT) poll.Result { + r, err := http.Get(url) + if err != nil { + return poll.Continue("Err while getting %s : %v", url, err) + } else if r.StatusCode != http.StatusOK { + return poll.Continue("status %s while getting %s", r.Status, url) + } + b, err := ioutil.ReadAll(r.Body) + if err == nil && strings.Contains(string(b), "Welcome to nginx!") { + return poll.Success() + } + return poll.Error(fmt.Errorf("No nginx welcome page received at %s: \n%s", url, string(b))) + } + poll.WaitOn(t, checkUp, poll.WithDelay(2*time.Second), poll.WithTimeout(60*time.Second)) }) t.Run("compose down", func(t *testing.T) {