From 98e15a548b143a4d4103efd58c155e7398a4e153 Mon Sep 17 00:00:00 2001 From: Mark Mandel Date: Tue, 30 Jun 2020 14:12:12 -0700 Subject: [PATCH] Flaky: e2e namespace deletion This fixes the issue if the e2e test tries to delete namespace that is already in a Terminating state. --- test/e2e/framework/framework.go | 4 ++-- test/e2e/main_test.go | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index cbb79593a7..d8fc372c9d 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -581,13 +581,13 @@ func (f *Framework) DeleteNamespace(namespace string) error { }} payloadBytes, _ := json.Marshal(payload) if _, err := kubeCore.Pods(namespace).Patch(pod.Name, types.JSONPatchType, payloadBytes); err != nil { - return errors.Errorf("updating pod %s failed: %s", pod.GetName(), err) + return errors.Wrapf(err, "updating pod %s failed", pod.GetName()) } } } if err := kubeCore.Namespaces().Delete(namespace, &metav1.DeleteOptions{}); err != nil { - return errors.Errorf("deleting namespace %s failed: %s", namespace, err) + return errors.Wrapf(err, "deleting namespace %s failed", namespace) } logrus.Infof("Namespace %s is deleted", namespace) return nil diff --git a/test/e2e/main_test.go b/test/e2e/main_test.go index ac3796d22e..a5336197db 100644 --- a/test/e2e/main_test.go +++ b/test/e2e/main_test.go @@ -21,8 +21,9 @@ import ( "time" e2eframework "agones.dev/agones/test/e2e/framework" - "github.com/sirupsen/logrus" + "github.com/pkg/errors" log "github.com/sirupsen/logrus" + k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" ) @@ -30,7 +31,7 @@ import ( var framework *e2eframework.Framework func TestMain(m *testing.M) { - logrus.SetFormatter(&logrus.TextFormatter{ + log.SetFormatter(&log.TextFormatter{ EnvironmentOverrideColors: true, FullTimestamp: true, TimestampFormat: "2006-01-02 15:04:05.000", @@ -103,7 +104,14 @@ func cleanupNamespaces(framework *e2eframework.Framework) error { // loop through them, and delete them for _, ns := range list.Items { if err := framework.DeleteNamespace(ns.ObjectMeta.Name); err != nil { - return err + cause := errors.Cause(err) + if k8serrors.IsConflict(cause) { + log.WithError(cause).Warn("namespace already being deleted") + continue + } + // here just in case we need to catch other errors + log.WithField("reason", k8serrors.ReasonForError(cause)).Info("cause for namespace deletion error") + return cause } }