test: test framework change due to k8s 1.26 lib upgrade
This commit is contained in:
parent
8e6d14d8a2
commit
b458e3a53f
@ -53,7 +53,7 @@ func (t *DynamicallyProvisionedDeletePodTest) Run(client clientset.Interface, na
|
|||||||
|
|
||||||
if t.PodCheck != nil {
|
if t.PodCheck != nil {
|
||||||
ginkgo.By("checking pod exec")
|
ginkgo.By("checking pod exec")
|
||||||
tDeployment.Exec(t.PodCheck.Cmd, t.PodCheck.ExpectedString)
|
tDeployment.PollForStringInPodsExec(t.PodCheck.Cmd, t.PodCheck.ExpectedString)
|
||||||
}
|
}
|
||||||
|
|
||||||
ginkgo.By("deleting the pod for deployment")
|
ginkgo.By("deleting the pod for deployment")
|
||||||
@ -65,6 +65,6 @@ func (t *DynamicallyProvisionedDeletePodTest) Run(client clientset.Interface, na
|
|||||||
if t.PodCheck != nil {
|
if t.PodCheck != nil {
|
||||||
ginkgo.By("checking pod exec")
|
ginkgo.By("checking pod exec")
|
||||||
// pod will be restarted so expect to see 2 instances of string
|
// pod will be restarted so expect to see 2 instances of string
|
||||||
tDeployment.Exec(t.PodCheck.Cmd, t.PodCheck.ExpectedString+t.PodCheck.ExpectedString)
|
tDeployment.PollForStringInPodsExec(t.PodCheck.Cmd, t.PodCheck.ExpectedString+t.PodCheck.ExpectedString)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,10 +35,13 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
"k8s.io/kubernetes/test/e2e/framework/deployment"
|
"k8s.io/kubernetes/test/e2e/framework/deployment"
|
||||||
|
e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl"
|
||||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||||
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
|
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
@ -50,6 +53,9 @@ const (
|
|||||||
slowPodStartTimeout = 15 * time.Minute
|
slowPodStartTimeout = 15 * time.Minute
|
||||||
// Description that will printed during tests
|
// Description that will printed during tests
|
||||||
failedConditionDescription = "Error status code"
|
failedConditionDescription = "Error status code"
|
||||||
|
poll = 2 * time.Second
|
||||||
|
pollLongTimeout = 5 * time.Minute
|
||||||
|
pollForStringTimeout = 1 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
type TestStorageClass struct {
|
type TestStorageClass struct {
|
||||||
@ -504,9 +510,38 @@ func (t *TestDeployment) WaitForPodReady() {
|
|||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TestDeployment) Exec(command []string, expectedString string) {
|
func (t *TestDeployment) PollForStringInPodsExec(command []string, expectedString string) {
|
||||||
_, err := framework.LookForStringInPodExec(t.namespace.Name, t.podName, command, expectedString, execTimeout)
|
pollForStringInPodsExec(t.namespace.Name, []string{t.podName}, command, expectedString)
|
||||||
framework.ExpectNoError(err)
|
}
|
||||||
|
|
||||||
|
// Execute the command for all pods in the namespace, looking for expectedString in stdout
|
||||||
|
func pollForStringInPodsExec(namespace string, pods []string, command []string, expectedString string) {
|
||||||
|
ch := make(chan error, len(pods))
|
||||||
|
for _, pod := range pods {
|
||||||
|
go pollForStringWorker(namespace, pod, command, expectedString, ch)
|
||||||
|
}
|
||||||
|
errs := make([]error, 0, len(pods))
|
||||||
|
for range pods {
|
||||||
|
errs = append(errs, <-ch)
|
||||||
|
}
|
||||||
|
framework.ExpectNoError(utilerrors.NewAggregate(errs), "Failed to find %q in at least one pod's output.", expectedString)
|
||||||
|
}
|
||||||
|
|
||||||
|
func pollForStringWorker(namespace string, pod string, command []string, expectedString string, ch chan<- error) {
|
||||||
|
args := append([]string{"exec", pod, "--"}, command...)
|
||||||
|
err := wait.PollImmediate(poll, pollForStringTimeout, func() (bool, error) {
|
||||||
|
stdout, err := e2ekubectl.RunKubectl(namespace, args...)
|
||||||
|
if err != nil {
|
||||||
|
framework.Logf("Error waiting for output %q in pod %q: %v.", expectedString, pod, err)
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
if !strings.Contains(stdout, expectedString) {
|
||||||
|
framework.Logf("The stdout did not contain output %q in pod %q, found: %q.", expectedString, pod, stdout)
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
})
|
||||||
|
ch <- err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TestDeployment) DeletePodAndWait() {
|
func (t *TestDeployment) DeletePodAndWait() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user