diff --git a/test/e2e/framework/pod/wait_test.go b/test/e2e/framework/pod/wait_test.go index c091e3e69c3..7efe4c83313 100644 --- a/test/e2e/framework/pod/wait_test.go +++ b/test/e2e/framework/pod/wait_test.go @@ -28,6 +28,7 @@ import ( "github.com/onsi/gomega" v1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" "k8s.io/kubernetes/test/e2e/framework" @@ -46,7 +47,6 @@ import ( // // // -// // This must be line #50. var _ = ginkgo.Describe("pod", func() { @@ -74,6 +74,24 @@ var _ = ginkgo.Describe("pod", func() { ginkgo.It("failed", func(ctx context.Context) { framework.ExpectNoError(e2epod.WaitTimeoutForPodRunningInNamespace(ctx, clientSet, failedPodName, podNamespace, timeout)) }) + + ginkgo.It("gets reported with API error", func(ctx context.Context) { + called := false + getPod := func(ctx context.Context) (*v1.Pod, error) { + if called { + ginkgo.By("returning fake API error") + return nil, apierrors.NewTooManyRequests("fake API error", 10) + } + called = true + pod, err := clientSet.CoreV1().Pods(podNamespace).Get(ctx, podName, metav1.GetOptions{}) + if err != nil { + return nil, err + } + ginkgo.By("returning pod") + return pod, err + } + gomega.Eventually(ctx, framework.HandleRetry(getPod)).WithTimeout(5 * timeout).Should(e2epod.BeInPhase(v1.PodRunning)) + }) }) func getNoSuchPod(ctx context.Context) (*v1.Pod, error) { @@ -101,8 +119,8 @@ func TestFailureOutput(t *testing.T) { return regexp.MustCompile(`wait.go:[[:digit:]]*`).ReplaceAllString(in, `wait.go`) }, Suite: reporters.JUnitTestSuite{ - Tests: 6, - Failures: 6, + Tests: 7, + Failures: 7, Errors: 0, Disabled: 0, Skipped: 0, @@ -357,6 +375,73 @@ INFO: Failed inside E2E framework: Expected pod to reach phase "Running", got final phase "Failed" instead. In [It] at: wait_test.go:75