diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 6770e8266a5..791e83d0787 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -2076,15 +2076,32 @@ func AssertCleanup(ns string, selectors ...string) { if ns != "" { nsArg = fmt.Sprintf("--namespace=%s", ns) } - for _, selector := range selectors { - resources := RunKubectlOrDie("get", "rc,svc", "-l", selector, "--no-headers", nsArg) - if resources != "" { - Failf("Resources left running after stop:\n%s", resources) - } - pods := RunKubectlOrDie("get", "pods", "-l", selector, nsArg, "-o", "go-template={{ range .items }}{{ if not .metadata.deletionTimestamp }}{{ .metadata.name }}{{ \"\\n\" }}{{ end }}{{ end }}") - if pods != "" { - Failf("Pods left unterminated after stop:\n%s", pods) + + backoff := wait.Backoff{ + Duration: 5 * time.Second, + Factor: 2, + Steps: 3, + } + var e error + verifyCleanupFunc := func() (bool, error) { + e = nil + for _, selector := range selectors { + resources := RunKubectlOrDie("get", "rc,svc", "-l", selector, "--no-headers", nsArg) + if resources != "" { + e = fmt.Errorf("Resources left running after stop:\n%s", resources) + return false, nil + } + pods := RunKubectlOrDie("get", "pods", "-l", selector, nsArg, "-o", "go-template={{ range .items }}{{ if not .metadata.deletionTimestamp }}{{ .metadata.name }}{{ \"\\n\" }}{{ end }}{{ end }}") + if pods != "" { + e = fmt.Errorf("Pods left unterminated after stop:\n%s", pods) + return false, nil + } } + return true, nil + } + err := wait.ExponentialBackoff(backoff, verifyCleanupFunc) + if err != nil { + Failf(e.Error()) } }