From 41ab9449edaf6b434cf0a0d9dc60b0bdbad9dae9 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Fri, 9 Nov 2018 10:07:26 +0100 Subject: [PATCH] e2e/storage: drivers determine the claim size Different drivers support different volume sizes. Some have certain minimum sizes, some maximum sizes. Instead of hard-coding some kind of default into the testsuites, now each driver that supports dynamic provisioning has to provide the size. --- test/e2e/storage/drivers/base.go | 5 +++++ test/e2e/storage/drivers/csi.go | 12 +++++++++++ test/e2e/storage/drivers/in_tree.go | 24 +++++++++++++++++++++ test/e2e/storage/testsuites/base.go | 2 +- test/e2e/storage/testsuites/provisioning.go | 2 +- test/e2e/storage/testsuites/volumemode.go | 2 +- 6 files changed, 44 insertions(+), 3 deletions(-) diff --git a/test/e2e/storage/drivers/base.go b/test/e2e/storage/drivers/base.go index 95d6b263c33..b40ce8dcaa2 100644 --- a/test/e2e/storage/drivers/base.go +++ b/test/e2e/storage/drivers/base.go @@ -74,6 +74,11 @@ type DynamicPVTestDriver interface { // It will set fsType to the StorageClass, if TestDriver supports it. // It will return nil, if the TestDriver doesn't support it. GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass + + // GetClaimSize returns the size of the volume that is to be provisioned ("5Gi", "1Mi"). + // The size must be chosen so that the resulting volume is large enough for all + // enabled tests and within the range supported by the underlying storage. + GetClaimSize() string } // Capability represents a feature that a volume plugin supports diff --git a/test/e2e/storage/drivers/csi.go b/test/e2e/storage/drivers/csi.go index 6bedcb71813..247bdc507f4 100644 --- a/test/e2e/storage/drivers/csi.go +++ b/test/e2e/storage/drivers/csi.go @@ -103,6 +103,10 @@ func (h *hostpathCSIDriver) GetDynamicProvisionStorageClass(fsType string) *stor return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (h *hostpathCSIDriver) GetClaimSize() string { + return "5Gi" +} + func (h *hostpathCSIDriver) CreateDriver() { By(fmt.Sprintf("deploying %s driver", h.driverInfo.Name)) f := h.driverInfo.Framework @@ -205,6 +209,10 @@ func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storage return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (g *gcePDCSIDriver) GetClaimSize() string { + return "5Gi" +} + func (g *gcePDCSIDriver) CreateDriver() { By("deploying csi gce-pd driver") // It would be safer to rename the gcePD driver, but that @@ -293,6 +301,10 @@ func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string) return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (g *gcePDExternalCSIDriver) GetClaimSize() string { + return "5Gi" +} + func (g *gcePDExternalCSIDriver) CreateDriver() { } diff --git a/test/e2e/storage/drivers/in_tree.go b/test/e2e/storage/drivers/in_tree.go index cc73bd81a4c..67f0abc854c 100644 --- a/test/e2e/storage/drivers/in_tree.go +++ b/test/e2e/storage/drivers/in_tree.go @@ -138,6 +138,10 @@ func (n *nfsDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.St return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (n *nfsDriver) GetClaimSize() string { + return "5Gi" +} + func (n *nfsDriver) CreateDriver() { f := n.driverInfo.Framework cs := f.ClientSet @@ -1034,6 +1038,10 @@ func (c *cinderDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1 return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (c *cinderDriver) GetClaimSize() string { + return "5Gi" +} + func (c *cinderDriver) CreateDriver() { } @@ -1196,6 +1204,10 @@ func (g *gcePdDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1. return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (h *gcePdDriver) GetClaimSize() string { + return "5Gi" +} + func (g *gcePdDriver) CreateDriver() { } @@ -1318,6 +1330,10 @@ func (v *vSphereDriver) GetDynamicProvisionStorageClass(fsType string) *storagev return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (v *vSphereDriver) GetClaimSize() string { + return "5Gi" +} + func (v *vSphereDriver) CreateDriver() { } @@ -1436,6 +1452,10 @@ func (a *azureDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1. return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (a *azureDriver) GetClaimSize() string { + return "5Gi" +} + func (a *azureDriver) CreateDriver() { } @@ -1543,6 +1563,10 @@ func (a *awsDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.St return getStorageClass(provisioner, parameters, nil, ns, suffix) } +func (a *awsDriver) GetClaimSize() string { + return "5Gi" +} + func (a *awsDriver) CreateDriver() { } diff --git a/test/e2e/storage/testsuites/base.go b/test/e2e/storage/testsuites/base.go index 8d4f084989f..b7555470342 100644 --- a/test/e2e/storage/testsuites/base.go +++ b/test/e2e/storage/testsuites/base.go @@ -164,7 +164,7 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat case testpatterns.DynamicPV: framework.Logf("Creating resource for dynamic PV") if dDriver, ok := driver.(drivers.DynamicPVTestDriver); ok { - claimSize := "5Gi" + claimSize := dDriver.GetClaimSize() r.sc = dDriver.GetDynamicProvisionStorageClass(fsType) By("creating a StorageClass " + r.sc.Name) diff --git a/test/e2e/storage/testsuites/provisioning.go b/test/e2e/storage/testsuites/provisioning.go index ba9f8d025b3..9315bbac84e 100644 --- a/test/e2e/storage/testsuites/provisioning.go +++ b/test/e2e/storage/testsuites/provisioning.go @@ -151,7 +151,7 @@ func (p *provisioningTestResource) setupResource(driver drivers.TestDriver, patt framework.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", driver.GetDriverInfo().Name) } p.driver = driver - p.claimSize = "5Gi" + p.claimSize = dDriver.GetClaimSize() p.pvc = getClaim(p.claimSize, driver.GetDriverInfo().Framework.Namespace.Name) p.pvc.Spec.StorageClassName = &p.sc.Name framework.Logf("In creating storage class object and pvc object for driver - sc: %v, pvc: %v", p.sc, p.pvc) diff --git a/test/e2e/storage/testsuites/volumemode.go b/test/e2e/storage/testsuites/volumemode.go index 94bef7508d9..b2f113cd037 100644 --- a/test/e2e/storage/testsuites/volumemode.go +++ b/test/e2e/storage/testsuites/volumemode.go @@ -196,7 +196,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter } s.sc.VolumeBindingMode = &volBindMode - claimSize := "5Gi" + claimSize := dDriver.GetClaimSize() s.pvc = getClaim(claimSize, ns.Name) s.pvc.Spec.StorageClassName = &s.sc.Name s.pvc.Spec.VolumeMode = &volMode