From 1ac3b3784835c98925f50a548d8b39e680859fa7 Mon Sep 17 00:00:00 2001 From: "Jose A. Rivera" Date: Thu, 14 Feb 2019 06:56:17 -0600 Subject: [PATCH 1/4] CSIDriverRegistry e2e: Always clean up driver Signed-off-by: Jose A. Rivera --- test/e2e/storage/csi_volumes.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/storage/csi_volumes.go b/test/e2e/storage/csi_volumes.go index 4ff9ebfcea7..b28465fd786 100644 --- a/test/e2e/storage/csi_volumes.go +++ b/test/e2e/storage/csi_volumes.go @@ -235,10 +235,10 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { driver = drivers.InitMockCSIDriver(config, test.driverExists, test.driverAttachable, nil) driver.CreateDriver() + defer driver.CleanupDriver() if test.driverExists { defer destroyCSIDriver(csics, driver) - defer driver.CleanupDriver() } By("Creating pod") @@ -352,10 +352,10 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { driver = drivers.InitMockCSIDriver(config, test.driverExists, true, test.podInfoOnMountVersion) driver.CreateDriver() + defer driver.CleanupDriver() if test.driverExists { defer destroyCSIDriver(csics, driver) - defer driver.CleanupDriver() } By("Creating pod") From 81bc0e5ec8ae5fafeb3c292dbd900308a78239c9 Mon Sep 17 00:00:00 2001 From: "Jose A. Rivera" Date: Thu, 14 Feb 2019 06:59:43 -0600 Subject: [PATCH 2/4] CRIDriverRegistry e2e: Clarify variable name Signed-off-by: Jose A. Rivera --- test/e2e/storage/csi_volumes.go | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/test/e2e/storage/csi_volumes.go b/test/e2e/storage/csi_volumes.go index b28465fd786..fd2f7a60da8 100644 --- a/test/e2e/storage/csi_volumes.go +++ b/test/e2e/storage/csi_volumes.go @@ -205,22 +205,22 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { tests := []struct { name string driverAttachable bool - driverExists bool + deployDriverCRD bool }{ { name: "should not require VolumeAttach for drivers without attachment", driverAttachable: false, - driverExists: true, + deployDriverCRD: true, }, { name: "should require VolumeAttach for drivers with attachment", driverAttachable: true, - driverExists: true, + deployDriverCRD: true, }, { name: "should preserve attachment policy when no CSIDriver present", driverAttachable: true, - driverExists: false, + deployDriverCRD: false, }, } @@ -233,11 +233,11 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { Prefix: "csi-attach", } - driver = drivers.InitMockCSIDriver(config, test.driverExists, test.driverAttachable, nil) + driver = drivers.InitMockCSIDriver(config, test.deployDriverCRD, test.driverAttachable, nil) driver.CreateDriver() defer driver.CleanupDriver() - if test.driverExists { + if test.deployDriverCRD { defer destroyCSIDriver(csics, driver) } @@ -308,37 +308,37 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { tests := []struct { name string podInfoOnMountVersion *string - driverExists bool + deployDriverCRD bool expectPodInfo bool }{ { name: "should not be passed when podInfoOnMountVersion=nil", podInfoOnMountVersion: nil, - driverExists: true, + deployDriverCRD: true, expectPodInfo: false, }, { name: "should be passed when podInfoOnMountVersion=v1", podInfoOnMountVersion: &podInfoV1, - driverExists: true, + deployDriverCRD: true, expectPodInfo: true, }, { name: "should not be passed when podInfoOnMountVersion=", podInfoOnMountVersion: &podInfoEmpty, - driverExists: true, + deployDriverCRD: true, expectPodInfo: false, }, { name: "should not be passed when podInfoOnMountVersion=", podInfoOnMountVersion: &podInfoUnknown, - driverExists: true, + deployDriverCRD: true, expectPodInfo: false, }, { - name: "should not be passed when CSIDriver does not exist", - driverExists: false, - expectPodInfo: false, + name: "should not be passed when CSIDriver does not exist", + deployDriverCRD: false, + expectPodInfo: false, }, } for _, t := range tests { @@ -350,11 +350,11 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { Prefix: "csi-workload", } - driver = drivers.InitMockCSIDriver(config, test.driverExists, true, test.podInfoOnMountVersion) + driver = drivers.InitMockCSIDriver(config, test.deployDriverCRD, true, test.podInfoOnMountVersion) driver.CreateDriver() defer driver.CleanupDriver() - if test.driverExists { + if test.deployDriverCRD { defer destroyCSIDriver(csics, driver) } From 86c71472df96f9379ee3381ed09c10b0f4eed6ac Mon Sep 17 00:00:00 2001 From: "Jose A. Rivera" Date: Thu, 14 Feb 2019 11:23:15 -0600 Subject: [PATCH 3/4] CSIDriverRegistry e2e: Wait for CSIDriver creation Signed-off-by: Jose A. Rivera --- test/e2e/storage/csi_volumes.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/test/e2e/storage/csi_volumes.go b/test/e2e/storage/csi_volumes.go index fd2f7a60da8..fea0a31ae48 100644 --- a/test/e2e/storage/csi_volumes.go +++ b/test/e2e/storage/csi_volumes.go @@ -199,6 +199,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { Context("CSI attach test using mock driver [Feature:CSIDriverRegistry]", func() { var ( + err error driver testsuites.TestDriver ) @@ -238,6 +239,8 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { defer driver.CleanupDriver() if test.deployDriverCRD { + err = waitForCSIDriver(csics, driver) + framework.ExpectNoError(err, "Failed to get CSIDriver: %v", err) defer destroyCSIDriver(csics, driver) } @@ -273,7 +276,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { return } - err := framework.WaitForPodNameRunningInNamespace(cs, pod.Name, pod.Namespace) + err = framework.WaitForPodNameRunningInNamespace(cs, pod.Name, pod.Namespace) framework.ExpectNoError(err, "Failed to start pod: %v", err) By("Checking if VolumeAttachment was created for the pod") @@ -299,6 +302,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { Context("CSI workload information using mock driver [Feature:CSIDriverRegistry]", func() { var ( + err error driver testsuites.TestDriver podInfoV1 = "v1" podInfoUnknown = "unknown" @@ -355,6 +359,8 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { defer driver.CleanupDriver() if test.deployDriverCRD { + err = waitForCSIDriver(csics, driver) + framework.ExpectNoError(err, "Failed to get CSIDriver: %v", err) defer destroyCSIDriver(csics, driver) } @@ -393,7 +399,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { if pod == nil { return } - err := framework.WaitForPodNameRunningInNamespace(cs, pod.Name, pod.Namespace) + err = framework.WaitForPodNameRunningInNamespace(cs, pod.Name, pod.Namespace) framework.ExpectNoError(err, "Failed to start pod: %v", err) By("Checking CSI driver logs") // The driver is deployed as a statefulset with stable pod names @@ -459,6 +465,20 @@ func testTopologyNegative(cs clientset.Interface, suffix, namespace string, dela } } +func waitForCSIDriver(csics csiclient.Interface, driver testsuites.TestDriver) error { + timeout := 2 * time.Minute + driverName := testsuites.GetUniqueDriverName(driver) + + framework.Logf("waiting up to %v for CSIDriver %q", timeout, driverName) + for start := time.Now(); time.Since(start) < timeout; time.Sleep(framework.Poll) { + _, err := csics.CsiV1alpha1().CSIDrivers().Get(driverName, metav1.GetOptions{}) + if !errors.IsNotFound(err) { + return err + } + } + return fmt.Errorf("gave up after waiting %v for CSIDriver %q.", timeout, driverName) +} + func destroyCSIDriver(csics csiclient.Interface, driver testsuites.TestDriver) { driverName := testsuites.GetUniqueDriverName(driver) driverGet, err := csics.CsiV1alpha1().CSIDrivers().Get(driverName, metav1.GetOptions{}) From a33acd2ba6b739b7be0b263359d540c8eadf6c76 Mon Sep 17 00:00:00 2001 From: "Jose A. Rivera" Date: Thu, 14 Feb 2019 11:23:40 -0600 Subject: [PATCH 4/4] CSIDriverRegistry e2e: Use framework.Poll when waiting for PVC delete Signed-off-by: Jose A. Rivera --- test/e2e/storage/csi_volumes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/storage/csi_volumes.go b/test/e2e/storage/csi_volumes.go index fea0a31ae48..2ab9ca97026 100644 --- a/test/e2e/storage/csi_volumes.go +++ b/test/e2e/storage/csi_volumes.go @@ -515,7 +515,7 @@ func deleteVolume(cs clientset.Interface, claim *v1.PersistentVolumeClaim) { claim, err := cs.CoreV1().PersistentVolumeClaims(claim.Namespace).Get(claim.Name, metav1.GetOptions{}) if err == nil { cs.CoreV1().PersistentVolumeClaims(claim.Namespace).Delete(claim.Name, nil) - framework.WaitForPersistentVolumeDeleted(cs, claim.Spec.VolumeName, 2*time.Second, 2*time.Minute) + framework.WaitForPersistentVolumeDeleted(cs, claim.Spec.VolumeName, framework.Poll, 2*time.Minute) } }