From 8737d7e0a55a66dca7651f6817fe5385de86bf58 Mon Sep 17 00:00:00 2001 From: Humble Chirammal Date: Thu, 6 Jan 2022 20:49:07 +0530 Subject: [PATCH] e2e: add rwop validation tests for rbd filemode and block mode This commit adds the validation tests for rbd block and filemode PVCs. Signed-off-by: Humble Chirammal --- e2e/rbd.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/e2e/rbd.go b/e2e/rbd.go index 9f75791f1..d39d99aef 100644 --- a/e2e/rbd.go +++ b/e2e/rbd.go @@ -70,9 +70,13 @@ var ( appPath = rbdExamplePath + "pod.yaml" rawPvcPath = rbdExamplePath + "raw-block-pvc.yaml" rawAppPath = rbdExamplePath + "raw-block-pod.yaml" + rawAppRWOPPath = rbdExamplePath + "raw-block-pod-rwop.yaml" + rawPVCRWOPPath = rbdExamplePath + "raw-block-pvc-rwop.yaml" pvcClonePath = rbdExamplePath + "pvc-restore.yaml" pvcSmartClonePath = rbdExamplePath + "pvc-clone.yaml" pvcBlockSmartClonePath = rbdExamplePath + "pvc-block-clone.yaml" + pvcRWOPPath = rbdExamplePath + "pvc-rwop.yaml" + appRWOPPath = rbdExamplePath + "pod-rwop.yaml" appClonePath = rbdExamplePath + "pod-restore.yaml" appSmartClonePath = rbdExamplePath + "pod-clone.yaml" appBlockSmartClonePath = rbdExamplePath + "block-pod-clone.yaml" @@ -506,6 +510,74 @@ var _ = Describe("RBD", func() { validateRBDImageCount(f, 0, defaultRBDPool) }) + By("create a Block mode RWOP PVC and bind it to more than one app", func() { + if k8sVersionGreaterEquals(f.ClientSet, 1, 22) { + pvc, err := loadPVC(rawPVCRWOPPath) + if err != nil { + e2elog.Failf("failed to load PVC: %v", err) + } + pvc.Namespace = f.UniqueName + + app, err := loadApp(rawAppRWOPPath) + if err != nil { + e2elog.Failf("failed to load application: %v", err) + } + app.Namespace = f.UniqueName + baseAppName := app.Name + err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) + if err != nil { + e2elog.Failf("failed to create PVC: %v", err) + } + // validate created backend rbd images + validateRBDImageCount(f, 1, defaultRBDPool) + + err = createApp(f.ClientSet, app, deployTimeout) + if err != nil { + e2elog.Failf("failed to create application: %v", err) + } + err = validateRWOPPodCreation(f, pvc, app, baseAppName) + if err != nil { + e2elog.Failf("failed to validate RWOP pod creation: %v", err) + } + // validate created backend rbd images + validateRBDImageCount(f, 0, defaultRBDPool) + } + }) + + By("create a RWOP PVC and bind it to more than one app", func() { + if k8sVersionGreaterEquals(f.ClientSet, 1, 22) { + pvc, err := loadPVC(pvcRWOPPath) + if err != nil { + e2elog.Failf("failed to load PVC: %v", err) + } + pvc.Namespace = f.UniqueName + + app, err := loadApp(appRWOPPath) + if err != nil { + e2elog.Failf("failed to load application: %v", err) + } + app.Namespace = f.UniqueName + baseAppName := app.Name + err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) + if err != nil { + e2elog.Failf("failed to create PVC: %v", err) + } + // validate created backend rbd images + validateRBDImageCount(f, 1, defaultRBDPool) + + err = createApp(f.ClientSet, app, deployTimeout) + if err != nil { + e2elog.Failf("failed to create application: %v", err) + } + err = validateRWOPPodCreation(f, pvc, app, baseAppName) + if err != nil { + e2elog.Failf("failed to validate RWOP pod creation: %v", err) + } + // validate created backend rbd images + validateRBDImageCount(f, 0, defaultRBDPool) + } + }) + By("create an erasure coded PVC and bind it to an app", func() { err := deleteResource(rbdExamplePath + "storageclass.yaml") if err != nil {