test: Fix e2e_node restart_test flake
In the `should correctly account for terminated pods after restart`, the test first creates a set of `restartNever` pods, followed by a set of `restartAlways` pods. Both the `restartNever` and `restartAlways` pods request an entire CPU. As a result, the `restartAlways` pods will not be admitted, if the `restartNever` pods did not terminate yet. Depending on the timing/how fast the pods terminate, the test can pass sometimes fail which results in flakes. To de-flake the test, the test should wait until the `restartNever` pods enter a terminal `Succeeded` phase, before creating the `restartAlways` pods. To do this, generalize the function `waitForPods` to accept a pod condition (`testutils.PodRunningReadyOrSucceeded`, or `testutils.PodSucceeded`). Also introduce a new "Succeeded" pod condition, so the test can explicitly wait until the pods enter the Succeeded phase. Signed-off-by: David Porter <david@porter.me>
This commit is contained in:
@@ -19,7 +19,7 @@ package utils
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
|
||||
)
|
||||
|
||||
@@ -52,6 +52,10 @@ func PodRunningReadyOrSucceeded(p *v1.Pod) (bool, error) {
|
||||
return PodRunningReady(p)
|
||||
}
|
||||
|
||||
func PodSucceeded(p *v1.Pod) (bool, error) {
|
||||
return p.Status.Phase == v1.PodSucceeded, nil
|
||||
}
|
||||
|
||||
// FailedContainers inspects all containers in a pod and returns failure
|
||||
// information for containers that have failed or been restarted.
|
||||
// A map is returned where the key is the containerID and the value is a
|
||||
|
Reference in New Issue
Block a user