mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-22 06:10:22 +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)
|
validateSubvolumeCount(f, 1, fileSystemName, subvolumegroup)
|
||||||
validateOmapCount(f, 1, cephfsType, metadataPool, volumesType)
|
validateOmapCount(f, 1, cephfsType, metadataPool, volumesType)
|
||||||
|
pvcName := app.Spec.Volumes[0].Name
|
||||||
// delete pod
|
// delete pod
|
||||||
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("failed to delete application: %v", err)
|
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)
|
validateSubvolumeCount(f, 0, fileSystemName, subvolumegroup)
|
||||||
validateOmapCount(f, 0, cephfsType, metadataPool, volumesType)
|
validateOmapCount(f, 0, cephfsType, metadataPool, volumesType)
|
||||||
err = deleteResource(cephFSExamplePath + "storageclass.yaml")
|
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
|
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
|
// validate created backend rbd images
|
||||||
validateRBDImageCount(f, 1, defaultRBDPool)
|
validateRBDImageCount(f, 1, defaultRBDPool)
|
||||||
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
||||||
|
pvcName := app.Spec.Volumes[0].Name
|
||||||
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("failed to delete application: %v", err)
|
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
|
// validate created backend rbd images
|
||||||
validateRBDImageCount(f, 0, defaultRBDPool)
|
validateRBDImageCount(f, 0, defaultRBDPool)
|
||||||
validateOmapCount(f, 0, rbdType, defaultRBDPool, volumesType)
|
validateOmapCount(f, 0, rbdType, defaultRBDPool, volumesType)
|
||||||
|
Loading…
Reference in New Issue
Block a user