Sfoglia il codice sorgente

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 <[email protected]>
Guillaume Tardif 5 anni fa
parent
commit
73f5f030ac
1 ha cambiato i file con 17 aggiunte e 7 eliminazioni
  1. 17 7
      tests/ecs-e2e/e2e-ecs_test.go

+ 17 - 7
tests/ecs-e2e/e2e-ecs_test.go

@@ -27,9 +27,11 @@ import (
 	"time"
 
 	"gotest.tools/v3/assert"
+	"gotest.tools/v3/poll"
 
-	. "github.com/docker/api/tests/framework"
 	"gotest.tools/v3/icmd"
+
+	. "github.com/docker/api/tests/framework"
 )
 
 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) {