From 408f62ca4e0a6ce25a763c36de893fdd995e2e0e Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 29 May 2018 16:24:18 +0200 Subject: [PATCH] e2e test for block volume provisioning --- test/e2e/storage/volume_provisioning.go | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/e2e/storage/volume_provisioning.go b/test/e2e/storage/volume_provisioning.go index 8dd4a4cffcd..7b936ee3606 100644 --- a/test/e2e/storage/volume_provisioning.go +++ b/test/e2e/storage/volume_provisioning.go @@ -57,6 +57,7 @@ type storageClassTest struct { pvCheck func(volume *v1.PersistentVolume) error nodeName string attach bool + volumeMode *v1.PersistentVolumeMode } const ( @@ -120,6 +121,10 @@ func testDynamicProvisioning(t storageClassTest, client clientset.Interface, cla Expect(pv.Spec.PersistentVolumeReclaimPolicy).To(Equal(*class.ReclaimPolicy)) Expect(pv.Spec.MountOptions).To(Equal(class.MountOptions)) } + if t.volumeMode != nil { + Expect(pv.Spec.VolumeMode).NotTo(BeNil()) + Expect(*pv.Spec.VolumeMode).To(Equal(*t.volumeMode)) + } // Run the checker if t.pvCheck != nil { @@ -818,6 +823,34 @@ var _ = utils.SIGDescribe("Dynamic Provisioning", func() { testDynamicProvisioning(test, c, claim, class) }) }) + + Describe("Block volume provisioning [Feature:BlockVolume]", func() { + It("should create and delete block persistent volumes", func() { + + // TODO: add openstack once Cinder volume plugin supports block volumes + framework.SkipUnlessProviderIs("gce", "aws", "gke", "vsphere", "azure") + + By("creating a claim with default class") + block := v1.PersistentVolumeBlock + test := storageClassTest{ + name: "default", + claimSize: "2Gi", + expectedSize: "2Gi", + volumeMode: &block, + } + // gce or gke + if getDefaultPluginName() == "kubernetes.io/gce-pd" { + // using GB not GiB as e2e test unit since gce-pd returns GB, + // or expectedSize may be greater than claimSize. + test.claimSize = "2G" + test.expectedSize = "2G" + } + + claim := newClaim(test, ns, "default") + claim.Spec.VolumeMode = &block + testDynamicProvisioning(test, c, claim, nil) + }) + }) }) func getDefaultStorageClassName(c clientset.Interface) string {