mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-22 13:00:19 +00:00
e2e: add timeout for pvc deletion in ephemeral e2e
this commit adds the timeout to wait for pvc deletion after the deletion of pod in test. Signed-off-by: riya-singhal31 <rsinghal@redhat.com>
This commit is contained in:
parent
16e5de5e1d
commit
d435b59656
@ -395,11 +395,19 @@ var _ = Describe(cephfsType, func() {
|
||||
}
|
||||
validateSubvolumeCount(f, 1, fileSystemName, subvolumegroup)
|
||||
validateOmapCount(f, 1, cephfsType, metadataPool, volumesType)
|
||||
pvcName := app.Spec.Volumes[0].Name
|
||||
// delete pod
|
||||
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
||||
if err != nil {
|
||||
framework.Failf("failed to delete application: %v", err)
|
||||
}
|
||||
|
||||
// wait for the associated PVC to be deleted
|
||||
err = waitForPVCToBeDeleted(f.ClientSet, app.Namespace, pvcName, deployTimeout)
|
||||
if err != nil {
|
||||
framework.Failf("failed to wait for PVC deletion: %v", err)
|
||||
}
|
||||
|
||||
validateSubvolumeCount(f, 0, fileSystemName, subvolumegroup)
|
||||
validateOmapCount(f, 0, cephfsType, metadataPool, volumesType)
|
||||
err = deleteResource(cephFSExamplePath + "storageclass.yaml")
|
||||
|
32
e2e/pvc.go
32
e2e/pvc.go
@ -430,3 +430,35 @@ func getMetricsForPVC(f *framework.Framework, pvc *v1.PersistentVolumeClaim, t i
|
||||
return false, nil
|
||||
})
|
||||
}
|
||||
|
||||
func waitForPVCToBeDeleted(c kubernetes.Interface, namespace, pvcName string, t int) error {
|
||||
timeout := time.Duration(t) * time.Minute
|
||||
ctx := context.TODO()
|
||||
start := time.Now()
|
||||
|
||||
return wait.PollUntilContextTimeout(ctx, poll, timeout, true, func(ctx context.Context) (bool, error) {
|
||||
pvc, err := c.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvcName, metav1.GetOptions{})
|
||||
// Check that the PVC is really deleted.
|
||||
framework.Logf(
|
||||
"waiting for PVC %s in state %s to be deleted (%d seconds elapsed)",
|
||||
pvcName,
|
||||
pvc.Status.String(),
|
||||
int(time.Since(start).Seconds()))
|
||||
if err == nil {
|
||||
framework.Logf("PVC %s (status: %s) has not been deleted yet, rechecking...", pvcName, pvc.Status)
|
||||
|
||||
return false, nil
|
||||
}
|
||||
if isRetryableAPIError(err) {
|
||||
framework.Logf("failed to verify deletion of PVC %s (status: %s): %v", pvcName, pvc.Status, err)
|
||||
|
||||
return false, nil
|
||||
}
|
||||
if !apierrs.IsNotFound(err) {
|
||||
return false, fmt.Errorf("get on deleted PVC %v failed with error other than \"not found\": %w", pvcName, err)
|
||||
}
|
||||
|
||||
// PVC has been successfully deleted
|
||||
return true, nil
|
||||
})
|
||||
}
|
||||
|
@ -813,10 +813,18 @@ var _ = Describe("RBD", func() {
|
||||
// validate created backend rbd images
|
||||
validateRBDImageCount(f, 1, defaultRBDPool)
|
||||
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
||||
pvcName := app.Spec.Volumes[0].Name
|
||||
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
||||
if err != nil {
|
||||
framework.Failf("failed to delete application: %v", err)
|
||||
}
|
||||
|
||||
// wait for the associated PVC to be deleted
|
||||
err = waitForPVCToBeDeleted(f.ClientSet, app.Namespace, pvcName, deployTimeout)
|
||||
if err != nil {
|
||||
framework.Failf("failed to wait for PVC deletion: %v", err)
|
||||
}
|
||||
|
||||
// validate created backend rbd images
|
||||
validateRBDImageCount(f, 0, defaultRBDPool)
|
||||
validateOmapCount(f, 0, rbdType, defaultRBDPool, volumesType)
|
||||
|
Loading…
Reference in New Issue
Block a user