Skip to content

Commit 83d3f70

Browse files
authored
Merge pull request kubernetes#69441 from mkimuram/provision
Move minimum set of dynamic provisioning e2e test to testsuites
2 parents 327a2bb + 4fcb36e commit 83d3f70

15 files changed

+650
-513
lines changed

test/e2e/storage/csi_volumes.go

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
csiv1alpha1 "k8s.io/csi-api/pkg/apis/csi/v1alpha1"
3232
csiclient "k8s.io/csi-api/pkg/client/clientset/versioned"
3333
"k8s.io/kubernetes/test/e2e/framework"
34+
"k8s.io/kubernetes/test/e2e/storage/testsuites"
3435
"k8s.io/kubernetes/test/e2e/storage/utils"
3536
imageutils "k8s.io/kubernetes/test/utils/image"
3637

@@ -49,7 +50,7 @@ const (
4950
type csiTestDriver interface {
5051
createCSIDriver()
5152
cleanupCSIDriver()
52-
createStorageClassTest(node v1.Node) storageClassTest
53+
createStorageClassTest(node v1.Node) testsuites.StorageClassTest
5354
}
5455

5556
var csiTestDrivers = map[string]func(f *framework.Framework, config framework.VolumeTestConfig) csiTestDriver{
@@ -110,7 +111,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
110111
claim := newClaim(t, ns.GetName(), "")
111112
class := newStorageClass(t, ns.GetName(), "")
112113
claim.Spec.StorageClassName = &class.ObjectMeta.Name
113-
testDynamicProvisioning(t, cs, claim, class)
114+
testsuites.TestDynamicProvisioning(t, cs, claim, class)
114115
})
115116
})
116117
}
@@ -187,7 +188,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
187188
By("Checking if VolumeAttachment was created for the pod")
188189
// Check that VolumeAttachment does not exist
189190
handle := getVolumeHandle(cs, claim)
190-
attachmentHash := sha256.Sum256([]byte(fmt.Sprintf("%s%s%s", handle, t.provisioner, node.Name)))
191+
attachmentHash := sha256.Sum256([]byte(fmt.Sprintf("%s%s%s", handle, t.Provisioner, node.Name)))
191192
attachmentName := fmt.Sprintf("csi-%x", attachmentHash)
192193
_, err = cs.StorageV1beta1().VolumeAttachments().Get(attachmentName, metav1.GetOptions{})
193194
if err != nil {
@@ -242,7 +243,7 @@ func getVolumeHandle(cs clientset.Interface, claim *v1.PersistentVolumeClaim) st
242243
return pv.Spec.CSI.VolumeHandle
243244
}
244245

245-
func startPausePod(cs clientset.Interface, t storageClassTest, ns string) (*storagev1.StorageClass, *v1.PersistentVolumeClaim, *v1.Pod) {
246+
func startPausePod(cs clientset.Interface, t testsuites.StorageClassTest, ns string) (*storagev1.StorageClass, *v1.PersistentVolumeClaim, *v1.Pod) {
246247
class := newStorageClass(t, ns, "")
247248
class, err := cs.StorageV1().StorageClasses().Create(class)
248249
framework.ExpectNoError(err, "Failed to create class : %v", err)
@@ -283,8 +284,8 @@ func startPausePod(cs clientset.Interface, t storageClassTest, ns string) (*stor
283284
},
284285
}
285286

286-
if len(t.nodeName) != 0 {
287-
pod.Spec.NodeName = t.nodeName
287+
if len(t.NodeName) != 0 {
288+
pod.Spec.NodeName = t.NodeName
288289
}
289290
pod, err = cs.CoreV1().Pods(ns).Create(pod)
290291
framework.ExpectNoError(err, "Failed to create pod: %v", err)
@@ -311,14 +312,14 @@ func initCSIHostpath(f *framework.Framework, config framework.VolumeTestConfig)
311312
}
312313
}
313314

314-
func (h *hostpathCSIDriver) createStorageClassTest(node v1.Node) storageClassTest {
315-
return storageClassTest{
316-
name: "csi-hostpath",
317-
provisioner: "csi-hostpath",
318-
parameters: map[string]string{},
319-
claimSize: "1Gi",
320-
expectedSize: "1Gi",
321-
nodeName: node.Name,
315+
func (h *hostpathCSIDriver) createStorageClassTest(node v1.Node) testsuites.StorageClassTest {
316+
return testsuites.StorageClassTest{
317+
Name: "csi-hostpath",
318+
Provisioner: "csi-hostpath",
319+
Parameters: map[string]string{},
320+
ClaimSize: "1Gi",
321+
ExpectedSize: "1Gi",
322+
NodeName: node.Name,
322323
}
323324
}
324325

@@ -379,14 +380,14 @@ func initCSIgcePD(f *framework.Framework, config framework.VolumeTestConfig) csi
379380
}
380381
}
381382

382-
func (g *gcePDCSIDriver) createStorageClassTest(node v1.Node) storageClassTest {
383-
return storageClassTest{
384-
name: "com.google.csi.gcepd",
385-
provisioner: "com.google.csi.gcepd",
386-
parameters: map[string]string{"type": "pd-standard"},
387-
claimSize: "5Gi",
388-
expectedSize: "5Gi",
389-
nodeName: node.Name,
383+
func (g *gcePDCSIDriver) createStorageClassTest(node v1.Node) testsuites.StorageClassTest {
384+
return testsuites.StorageClassTest{
385+
Name: "com.google.csi.gcepd",
386+
Provisioner: "com.google.csi.gcepd",
387+
Parameters: map[string]string{"type": "pd-standard"},
388+
ClaimSize: "5Gi",
389+
ExpectedSize: "5Gi",
390+
NodeName: node.Name,
390391
}
391392
}
392393

test/e2e/storage/drivers/base.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,13 @@ type DriverInfo struct {
8181
Name string // Name of the driver
8282
FeatureTag string // FeatureTag for the driver
8383

84-
MaxFileSize int64 // Max file size to be tested for this driver
85-
SupportedFsType sets.String // Map of string for supported fs type
86-
IsPersistent bool // Flag to represent whether it provides persistency
87-
IsFsGroupSupported bool // Flag to represent whether it supports fsGroup
88-
IsBlockSupported bool // Flag to represent whether it supports Block Volume
84+
MaxFileSize int64 // Max file size to be tested for this driver
85+
SupportedFsType sets.String // Map of string for supported fs type
86+
SupportedMountOption sets.String // Map of string for supported mount option
87+
RequiredMountOption sets.String // Map of string for required mount option (Optional)
88+
IsPersistent bool // Flag to represent whether it provides persistency
89+
IsFsGroupSupported bool // Flag to represent whether it supports fsGroup
90+
IsBlockSupported bool // Flag to represent whether it supports Block Volume
8991

9092
// Parameters below will be set inside test loop by using SetCommonDriverParameters.
9193
// Drivers that implement TestDriver is required to set all the above parameters
@@ -104,8 +106,8 @@ func GetDriverNameWithFeatureTags(driver TestDriver) string {
104106
return fmt.Sprintf("[Driver: %s]%s", dInfo.Name, dInfo.FeatureTag)
105107
}
106108

109+
// CreateVolume creates volume for test unless dynamicPV test
107110
func CreateVolume(driver TestDriver, volType testpatterns.TestVolType) interface{} {
108-
// Create Volume for test unless dynamicPV test
109111
switch volType {
110112
case testpatterns.InlineVolume:
111113
fallthrough
@@ -121,8 +123,8 @@ func CreateVolume(driver TestDriver, volType testpatterns.TestVolType) interface
121123
return nil
122124
}
123125

126+
// DeleteVolume deletes volume for test unless dynamicPV test
124127
func DeleteVolume(driver TestDriver, volType testpatterns.TestVolType, testResource interface{}) {
125-
// Delete Volume for test unless dynamicPV test
126128
switch volType {
127129
case testpatterns.InlineVolume:
128130
fallthrough

test/e2e/storage/drivers/in_tree.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,11 @@ func InitNFSDriver() TestDriver {
8888
SupportedFsType: sets.NewString(
8989
"", // Default fsType
9090
),
91-
IsPersistent: true,
92-
IsFsGroupSupported: false,
93-
IsBlockSupported: false,
91+
SupportedMountOption: sets.NewString("proto=tcp", "nosuid"),
92+
RequiredMountOption: sets.NewString("vers=4.1"),
93+
IsPersistent: true,
94+
IsFsGroupSupported: false,
95+
IsBlockSupported: false,
9496
},
9597
}
9698
}
@@ -673,7 +675,7 @@ var _ TestDriver = &hostPathDriver{}
673675
var _ PreprovisionedVolumeTestDriver = &hostPathDriver{}
674676
var _ InlineVolumeTestDriver = &hostPathDriver{}
675677

676-
// InitHostpathDriver returns hostPathDriver that implements TestDriver interface
678+
// InitHostPathDriver returns hostPathDriver that implements TestDriver interface
677679
func InitHostPathDriver() TestDriver {
678680
return &hostPathDriver{
679681
driverInfo: DriverInfo{
@@ -1118,9 +1120,10 @@ func InitGcePdDriver() TestDriver {
11181120
"ext4",
11191121
"xfs",
11201122
),
1121-
IsPersistent: true,
1122-
IsFsGroupSupported: true,
1123-
IsBlockSupported: true,
1123+
SupportedMountOption: sets.NewString("debug", "nouid32"),
1124+
IsPersistent: true,
1125+
IsFsGroupSupported: true,
1126+
IsBlockSupported: true,
11241127
},
11251128
}
11261129
}
@@ -1460,9 +1463,10 @@ func InitAwsDriver() TestDriver {
14601463
"", // Default fsType
14611464
"ext3",
14621465
),
1463-
IsPersistent: true,
1464-
IsFsGroupSupported: true,
1465-
IsBlockSupported: true,
1466+
SupportedMountOption: sets.NewString("debug", "nouid32"),
1467+
IsPersistent: true,
1468+
IsFsGroupSupported: true,
1469+
IsBlockSupported: true,
14661470
},
14671471
}
14681472
}

test/e2e/storage/generic_persistent_volume-disruptive.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"k8s.io/api/core/v1"
2424
clientset "k8s.io/client-go/kubernetes"
2525
"k8s.io/kubernetes/test/e2e/framework"
26+
"k8s.io/kubernetes/test/e2e/storage/testsuites"
2627
"k8s.io/kubernetes/test/e2e/storage/utils"
2728
)
2829

@@ -85,9 +86,9 @@ var _ = utils.SIGDescribe("GenericPersistentVolume[Disruptive]", func() {
8586

8687
func createPodPVCFromSC(f *framework.Framework, c clientset.Interface, ns string) (*v1.Pod, *v1.PersistentVolumeClaim, *v1.PersistentVolume) {
8788
var err error
88-
test := storageClassTest{
89-
name: "default",
90-
claimSize: "2Gi",
89+
test := testsuites.StorageClassTest{
90+
Name: "default",
91+
ClaimSize: "2Gi",
9192
}
9293
pvc := newClaim(test, ns, "default")
9394
pvc, err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Create(pvc)

test/e2e/storage/in_tree_volumes.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ var testSuites = []func() testsuites.TestSuite{
5050
testsuites.InitVolumeIOTestSuite,
5151
testsuites.InitVolumeModeTestSuite,
5252
testsuites.InitSubPathTestSuite,
53+
testsuites.InitProvisioningTestSuite,
5354
}
5455

5556
// This executes testSuites for in-tree volumes.

test/e2e/storage/mounted_volume_resize.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
clientset "k8s.io/client-go/kubernetes"
3232
"k8s.io/kubernetes/pkg/client/conditions"
3333
"k8s.io/kubernetes/test/e2e/framework"
34+
"k8s.io/kubernetes/test/e2e/storage/testsuites"
3435
"k8s.io/kubernetes/test/e2e/storage/utils"
3536
)
3637

@@ -72,9 +73,9 @@ var _ = utils.SIGDescribe("Mounted volume expand[Slow]", func() {
7273
isNodeLabeled = true
7374
}
7475

75-
test := storageClassTest{
76-
name: "default",
77-
claimSize: "2Gi",
76+
test := testsuites.StorageClassTest{
77+
Name: "default",
78+
ClaimSize: "2Gi",
7879
}
7980
resizableSc, err = createResizableStorageClass(test, ns, "resizing", c)
8081
Expect(err).NotTo(HaveOccurred(), "Error creating resizable storage class")

test/e2e/storage/pvc_protection.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"k8s.io/kubernetes/pkg/util/slice"
2727
volumeutil "k8s.io/kubernetes/pkg/volume/util"
2828
"k8s.io/kubernetes/test/e2e/framework"
29+
"k8s.io/kubernetes/test/e2e/storage/testsuites"
2930
"k8s.io/kubernetes/test/e2e/storage/utils"
3031
)
3132

@@ -47,8 +48,8 @@ var _ = utils.SIGDescribe("PVC Protection", func() {
4748
By("Creating a PVC")
4849
suffix := "pvc-protection"
4950
defaultSC := getDefaultStorageClassName(client)
50-
testStorageClass := storageClassTest{
51-
claimSize: "1Gi",
51+
testStorageClass := testsuites.StorageClassTest{
52+
ClaimSize: "1Gi",
5253
}
5354
pvc = newClaim(testStorageClass, nameSpace, suffix)
5455
pvc.Spec.StorageClassName = &defaultSC

0 commit comments

Comments
 (0)