From 8ab04d4160f995beca7d148b2d603f0b2fb74a95 Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Mon, 17 Aug 2020 14:07:19 +0530 Subject: [PATCH] e2e: add backend image validation for rbd validate backend rbd images count in each E2E test cases. This helps a lot to catch the issues in each test case. Signed-off-by: Madhu Rajanna (cherry picked from commit d5c19954c1c7b586b15ce4b95a3a6344f446a6ba) --- e2e/rbd.go | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 2 deletions(-) diff --git a/e2e/rbd.go b/e2e/rbd.go index 7c655a79d..0355c9fd5 100644 --- a/e2e/rbd.go +++ b/e2e/rbd.go @@ -213,16 +213,34 @@ var _ = Describe("RBD", func() { By("create a PVC and Bind it to an app", func() { validatePVCAndAppBinding(pvcPath, appPath, f) + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("create a PVC and Bind it to an app with normal user", func() { validateNormalUserPVCAccess(pvcPath, f) + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("create a PVC and Bind it to an app with ext4 as the FS ", func() { deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, map[string]string{"csi.storage.k8s.io/fstype": "ext4"}) validatePVCAndAppBinding(pvcPath, appPath, f) + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, nil) }) @@ -231,6 +249,12 @@ var _ = Describe("RBD", func() { deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, map[string]string{"encrypted": "true"}) validateEncryptedPVCAndAppBinding(pvcPath, appPath, "", f) + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, nil) }) @@ -243,6 +267,12 @@ var _ = Describe("RBD", func() { } createRBDStorageClass(f.ClientSet, f, nil, scOpts) validateEncryptedPVCAndAppBinding(pvcPath, appPath, "vault", f) + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, nil) }) @@ -432,6 +462,12 @@ var _ = Describe("RBD", func() { }(&wg, i, *pvcClone, *appClone) } wg.Wait() + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } } }) @@ -587,6 +623,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("Resize Filesystem PVC and check application directory size", func() { @@ -612,6 +654,12 @@ var _ = Describe("RBD", func() { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } } }) @@ -629,6 +677,12 @@ var _ = Describe("RBD", func() { e2elog.Logf("failed to resize block PVC %v", err) Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } } }) @@ -649,6 +703,12 @@ var _ = Describe("RBD", func() { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } // delete rbd nodeplugin pods err = deletePodWithLabel("app=csi-rbdplugin", cephCSINamespace, false) if err != nil { @@ -664,6 +724,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("create PVC in storageClass with volumeNamePrefix", func() { @@ -682,6 +748,12 @@ var _ = Describe("RBD", func() { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } // list RBD images and check if one of them has the same prefix foundIt := false for _, imgName := range listRBDImages(f) { @@ -697,6 +769,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, nil) @@ -710,6 +788,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("validate RBD static Block PVC", func() { @@ -717,6 +801,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("validate mount options in app pod", func() { @@ -725,6 +815,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) By("creating an app with a PVC, using a topology constrained StorageClass", func() { @@ -828,6 +924,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } // create an app and wait for 1 min for it to go to running state err = createApp(f.ClientSet, app, 1) if err == nil { @@ -838,6 +940,12 @@ var _ = Describe("RBD", func() { Fail(err.Error()) } + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } deleteResource(rbdExamplePath + "storageclass.yaml") createRBDStorageClass(f.ClientSet, f, nil, nil) }) @@ -866,7 +974,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } - + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } // delete pod as we should not create snapshot for in-use pvc err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout) if err != nil { @@ -881,7 +994,14 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } - + // validate created backend rbd images + images = listRBDImages(f) + // parent PVC + snapshot + totalImages := 2 + if len(images) != totalImages { + e2elog.Logf("backend image count %d expected image count %d", len(images), totalImages) + Fail("validate backend image failed") + } pvcClone, err := loadPVC(pvcClonePath) if err != nil { Fail(err.Error()) @@ -894,6 +1014,14 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + // parent pvc+ snapshot + clone + totalImages = 3 + images = listRBDImages(f) + if len(images) != totalImages { + e2elog.Logf("backend image count %d expected image count %d", len(images), totalImages) + Fail("validate backend image failed") + } appClone, err := loadApp(appClonePath) if err != nil { Fail(err.Error()) @@ -955,6 +1083,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } } }) @@ -1077,6 +1211,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } opt := metav1.ListOptions{ LabelSelector: fmt.Sprintf("app=%s", app.Name), @@ -1094,6 +1234,12 @@ var _ = Describe("RBD", func() { if err != nil { Fail(err.Error()) } + // validate created backend rbd images + images = listRBDImages(f) + if len(images) != 0 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 0) + Fail("validate backend image failed") + } }) // Make sure this should be last testcase in this file, because