mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
Merge pull request #92479 from ii/heyste-delete-core-v1-collection-namespaced-pod-test
Create deleteCoreV1CollectionNamespacedPod test - +1 endpoint coverage
This commit is contained in:
commit
2e6d06c13a
@ -54,6 +54,8 @@ const (
|
|||||||
buildBackOffDuration = time.Minute
|
buildBackOffDuration = time.Minute
|
||||||
syncLoopFrequency = 10 * time.Second
|
syncLoopFrequency = 10 * time.Second
|
||||||
maxBackOffTolerance = time.Duration(1.3 * float64(kubelet.MaxContainerBackOff))
|
maxBackOffTolerance = time.Duration(1.3 * float64(kubelet.MaxContainerBackOff))
|
||||||
|
podRetryPeriod = 1 * time.Second
|
||||||
|
podRetryTimeout = 1 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
// testHostIP tests that a pod gets a host IP
|
// testHostIP tests that a pod gets a host IP
|
||||||
@ -829,4 +831,62 @@ var _ = framework.KubeDescribe("Pods", func() {
|
|||||||
validatePodReadiness(false)
|
validatePodReadiness(false)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ginkgo.It("should delete a collection of pods", func() {
|
||||||
|
podTestNames := []string{"test-pod-1", "test-pod-2", "test-pod-3"}
|
||||||
|
|
||||||
|
ginkgo.By("Create set of pods")
|
||||||
|
// create a set of pods in test namespace
|
||||||
|
for _, podTestName := range podTestNames {
|
||||||
|
_, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), &v1.Pod{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: podTestName,
|
||||||
|
Labels: map[string]string{
|
||||||
|
"type": "Testing"},
|
||||||
|
},
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{{
|
||||||
|
Image: imageutils.GetE2EImage(imageutils.Agnhost),
|
||||||
|
Name: "token-test",
|
||||||
|
}},
|
||||||
|
RestartPolicy: v1.RestartPolicyNever,
|
||||||
|
}}, metav1.CreateOptions{})
|
||||||
|
framework.ExpectNoError(err, "failed to create pod")
|
||||||
|
framework.Logf("created %v", podTestName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait as required for all 3 pods to be found
|
||||||
|
ginkgo.By("waiting for all 3 pods to be located")
|
||||||
|
err := wait.PollImmediate(podRetryPeriod, podRetryTimeout, checkPodListQuantity(f, "type=Testing", 3))
|
||||||
|
framework.ExpectNoError(err, "3 pods not found")
|
||||||
|
|
||||||
|
// delete Collection of pods with a label in the current namespace
|
||||||
|
err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{
|
||||||
|
LabelSelector: "type=Testing"})
|
||||||
|
framework.ExpectNoError(err, "failed to delete collection of pods")
|
||||||
|
|
||||||
|
// wait for all pods to be deleted
|
||||||
|
ginkgo.By("waiting for all pods to be deleted")
|
||||||
|
err = wait.PollImmediate(podRetryPeriod, podRetryTimeout, checkPodListQuantity(f, "type=Testing", 0))
|
||||||
|
framework.ExpectNoError(err, "found a pod(s)")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
func checkPodListQuantity(f *framework.Framework, label string, quantity int) func() (bool, error) {
|
||||||
|
return func() (bool, error) {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
list, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).List(context.TODO(), metav1.ListOptions{
|
||||||
|
LabelSelector: label})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(list.Items) != quantity {
|
||||||
|
framework.Logf("Pod quantity %d is different from expected quantity %d", len(list.Items), quantity)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user