Merge pull request #99147 from aojea/waitreadyrunning

e2e createSync() method wait for pod running and ready
This commit is contained in:
Kubernetes Prow Robot 2021-02-18 03:46:51 -08:00 committed by GitHub
commit 960e5e7825
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 8 deletions

View File

@ -213,7 +213,8 @@ var _ = ginkgo.Describe("[sig-storage] ConfigMap", func() {
})
ginkgo.By("Creating the pod")
f.PodClient().CreateSync(pod)
f.PodClient().Create(pod)
e2epod.WaitForPodNameRunningInNamespace(f.ClientSet, pod.Name, f.Namespace.Name)
pollLogs1 := func() (string, error) {
return e2epod.GetPodLogs(f.ClientSet, f.Namespace.Name, pod.Name, pod.Spec.Containers[0].Name)

View File

@ -282,7 +282,8 @@ var _ = ginkgo.Describe("[sig-storage] EmptyDir volumes", func() {
}
ginkgo.By("Creating Pod")
pod = f.PodClient().CreateSync(pod)
f.PodClient().Create(pod)
e2epod.WaitForPodNameRunningInNamespace(f.ClientSet, pod.Name, f.Namespace.Name)
ginkgo.By("Reading file content from the nginx-container")
result := f.ExecShellInContainer(pod.Name, busyBoxMainContainerName, fmt.Sprintf("cat %s", busyBoxMainVolumeFilePath))

View File

@ -19,6 +19,7 @@ package common
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"runtime/debug"
@ -28,7 +29,6 @@ import (
"golang.org/x/net/websocket"
"encoding/json"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -813,7 +813,8 @@ var _ = framework.KubeDescribe("Pods", func() {
}
ginkgo.By("submitting the pod to kubernetes")
podClient.CreateSync(pod)
f.PodClient().Create(pod)
e2epod.WaitForPodNameRunningInNamespace(f.ClientSet, pod.Name, f.Namespace.Name)
framework.ExpectEqual(podClient.PodIsReady(podName), false, "Expect pod's Ready condition to be false initially.")
ginkgo.By(fmt.Sprintf("patching pod status with condition %q to true", readinessGate1))

View File

@ -357,7 +357,7 @@ func WaitForPodNoLongerRunningInNamespace(c clientset.Interface, podName, namesp
return WaitTimeoutForPodNoLongerRunningInNamespace(c, podName, namespace, defaultPodDeletionTimeout)
}
// WaitTimeoutForPodReadyInNamespace waits the given timeout diration for the
// WaitTimeoutForPodReadyInNamespace waits the given timeout duration for the
// specified pod to be ready and running.
func WaitTimeoutForPodReadyInNamespace(c clientset.Interface, podName, namespace string, timeout time.Duration) error {
return wait.PollImmediate(poll, timeout, podRunningAndReady(c, podName, namespace))

View File

@ -96,12 +96,12 @@ func (c *PodClient) Create(pod *v1.Pod) *v1.Pod {
return p
}
// CreateSync creates a new pod according to the framework specifications, and wait for it to start.
// CreateSync creates a new pod according to the framework specifications, and wait for it to start and be running and ready.
func (c *PodClient) CreateSync(pod *v1.Pod) *v1.Pod {
namespace := c.f.Namespace.Name
p := c.Create(pod)
ExpectNoError(e2epod.WaitForPodNameRunningInNamespace(c.f.ClientSet, p.Name, namespace))
// Get the newest pod after it becomes running, some status may change after pod created, such as pod ip.
ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(c.f.ClientSet, p.Name, namespace, PodStartTimeout))
// Get the newest pod after it becomes running and ready, some status may change after pod created, such as pod ip.
p, err := c.Get(context.TODO(), p.Name, metav1.GetOptions{})
ExpectNoError(err)
return p