diff --git a/e2e/rbd.go b/e2e/rbd.go index 21136e9e1..fcc29a13f 100644 --- a/e2e/rbd.go +++ b/e2e/rbd.go @@ -234,6 +234,40 @@ var _ = Describe("RBD", func() { Fail(err.Error()) } }) + + By("Test unmount after nodeplugin restart", func() { + pvc, err := loadPVC(pvcPath) + if err != nil { + Fail(err.Error()) + } + pvc.Namespace = f.UniqueName + + app, err := loadApp(appPath) + if err != nil { + Fail(err.Error()) + } + app.Namespace = f.UniqueName + err = createPVCAndApp("", f, pvc, app) + if err != nil { + Fail(err.Error()) + } + + // delete rbd nodeplugin pods + err = deletePodWithLabel("app=csi-rbdplugin") + if err != nil { + Fail(err.Error()) + } + // wait for nodeplugin pods to come up + err = waitForDaemonSets(rbdDaemonsetName, namespace, f.ClientSet, deployTimeout) + if err != nil { + Fail(err.Error()) + } + + err = deletePVCAndApp("", f, pvc, app) + if err != nil { + Fail(err.Error()) + } + }) }) }) diff --git a/e2e/utils.go b/e2e/utils.go index 0a8f40462..045f3eb07 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -611,6 +611,13 @@ func validatePVCAndAppBinding(pvcPath, appPath string, f *framework.Framework) { Fail(err.Error()) } } +func deletePodWithLabel(label string) error { + _, err := framework.RunKubectl("delete", "po", "-l", label) + if err != nil { + e2elog.Logf("failed to delete pod %v", err) + } + return err +} func validateNormalUserPVCAccess(pvcPath string, f *framework.Framework) { pvc, err := loadPVC(pvcPath)