From 4b7e12baa1c5f9cf54410068dbdb446774fc321b Mon Sep 17 00:00:00 2001 From: Mark Mandel Date: Fri, 29 Oct 2021 19:13:32 -0700 Subject: [PATCH] Combination of fixes for e2e flakiness * Retries on UDP packet sending * Failing on UDP packet sending dumps gameserver details * Drop parallelism on e2e tests from 32 to 16. --- build/e2e-image/e2e.sh | 2 +- test/e2e/framework/framework.go | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/build/e2e-image/e2e.sh b/build/e2e-image/e2e.sh index f0f1a65a09..2e38c83feb 100755 --- a/build/e2e-image/e2e.sh +++ b/build/e2e-image/e2e.sh @@ -20,5 +20,5 @@ set -e echo "installing current release" DOCKER_RUN= make install FEATURE_GATES='"'$FEATURES'"' echo "starting e2e test" -DOCKER_RUN= make test-e2e ARGS=-parallel=32 FEATURE_GATES='"'$FEATURES'"' +DOCKER_RUN= make test-e2e ARGS=-parallel=16 FEATURE_GATES='"'$FEATURES'"' echo "completed e2e test" \ No newline at end of file diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index c46bc7c51b..5f359d688d 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -498,16 +498,16 @@ func (f *Framework) SendGameServerUDPToPort(t *testing.T, gs *agonesv1.GameServe if err != nil { log.WithField("gs", gs.ObjectMeta.Name).WithField("status", fmt.Sprintf("%+v", gs.Status)).Info("Failed to send UDP packet to GameServer. Dumping Events!") - f.LogEvents(t, gs.ObjectMeta.Name, log, gs) + f.LogEvents(t, log, gs.ObjectMeta.Namespace, gs) } return reply, err } // SendUDP sends a message to an address, and returns its reply if -// it returns one in 30 seconds +// it returns one in 10 seconds. Will retry 5 times, in case UDP packets drop. func (f *Framework) SendUDP(t *testing.T, address, msg string) (string, error) { - log := TestLogger(t) + log := TestLogger(t).WithField("address", address) b := make([]byte, 1024) var n int // sometimes we get I/O timeout, so let's do a retry @@ -515,7 +515,7 @@ func (f *Framework) SendUDP(t *testing.T, address, msg string) (string, error) { conn, err := net.Dial("udp", address) if err != nil { - log.WithError(err).Error("could not dial GameServer address") + log.WithError(err).Info("could not dial address") return false, nil } @@ -525,25 +525,28 @@ func (f *Framework) SendUDP(t *testing.T, address, msg string) (string, error) { _, err = conn.Write([]byte(msg)) if err != nil { - log.WithError(err).Error("could not write message to GameServer") + log.WithError(err).Info("could not write message to address") + return false, nil } err = conn.SetReadDeadline(time.Now().Add(10 * time.Second)) + if err != nil { + log.WithError(err).Info("Could not set read deadline") + return false, nil + } + n, err = conn.Read(b) + if err != nil { + log.WithError(err).Info("Could not read from address") + } return err == nil, nil }) - if err != nil { - return "", errors.Wrap(err, "could not send message to GameServer after retries") - } if err != nil { - return "", err - } - n, err := conn.Read(b) - if err != nil { - return "", err + return "", errors.Wrap(err, "timed out attempting to send UDP packet to address") } + return string(b[:n]), nil }