mirror of https://github.com/k3s-io/k3s
Merge pull request #70823 from mkimuram/issue/70822
Fix volumes e2e test to check fsTypepull/564/head
commit
b6701153b5
|
@ -120,8 +120,10 @@ func (util *AWSDiskUtil) CreateVolume(c *awsElasticBlockStoreProvisioner, node *
|
|||
}
|
||||
|
||||
fstype := ""
|
||||
if v, ok := c.options.Parameters[volume.VolumeParameterFSType]; ok {
|
||||
fstype = v
|
||||
for k, v := range c.options.Parameters {
|
||||
if strings.ToLower(k) == volume.VolumeParameterFSType {
|
||||
fstype = v
|
||||
}
|
||||
}
|
||||
|
||||
return name, volumeOptions.CapacityGB, labels, fstype, nil
|
||||
|
|
|
@ -91,7 +91,7 @@ var _ = Describe("[sig-storage] GCP Volumes", func() {
|
|||
}
|
||||
|
||||
// Must match content of test/images/volumes-tester/nfs/index.html
|
||||
framework.TestVolumeClient(c, config, nil, tests)
|
||||
framework.TestVolumeClient(c, config, nil, "" /* fsType */, tests)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -114,7 +114,7 @@ var _ = Describe("[sig-storage] GCP Volumes", func() {
|
|||
},
|
||||
}
|
||||
// Must match content of test/images/volume-tester/nfs/index.html
|
||||
framework.TestVolumeClient(c, config, nil, tests)
|
||||
framework.TestVolumeClient(c, config, nil, "" /* fsType */, tests)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -147,7 +147,7 @@ var _ = Describe("[sig-storage] GCP Volumes", func() {
|
|||
ExpectedContent: "Hello from GlusterFS!",
|
||||
},
|
||||
}
|
||||
framework.TestVolumeClient(c, config, nil, tests)
|
||||
framework.TestVolumeClient(c, config, nil, "" /* fsType */, tests)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -401,7 +401,7 @@ func VolumeTestCleanup(f *Framework, config VolumeTestConfig) {
|
|||
// and check that the pod sees expected data, e.g. from the server pod.
|
||||
// Multiple VolumeTests can be specified to mount multiple volumes to a single
|
||||
// pod.
|
||||
func TestVolumeClient(client clientset.Interface, config VolumeTestConfig, fsGroup *int64, tests []VolumeTest) {
|
||||
func TestVolumeClient(client clientset.Interface, config VolumeTestConfig, fsGroup *int64, fsType string, tests []VolumeTest) {
|
||||
By(fmt.Sprint("starting ", config.Prefix, " client"))
|
||||
var gracePeriod int64 = 1
|
||||
clientPod := &v1.Pod{
|
||||
|
@ -476,6 +476,12 @@ func TestVolumeClient(client clientset.Interface, config VolumeTestConfig, fsGro
|
|||
_, err = LookForStringInPodExec(config.Namespace, clientPod.Name, []string{"ls", "-ld", "/opt/0"}, strconv.Itoa(int(*fsGroup)), time.Minute)
|
||||
Expect(err).NotTo(HaveOccurred(), "failed: getting the right privileges in the file %v", int(*fsGroup))
|
||||
}
|
||||
|
||||
if fsType != "" {
|
||||
By("Checking fsType is correct.")
|
||||
_, err = LookForStringInPodExec(config.Namespace, clientPod.Name, []string{"grep", " /opt/0 ", "/proc/mounts"}, fsType, time.Minute)
|
||||
Expect(err).NotTo(HaveOccurred(), "failed: getting the right fsType %s", fsType)
|
||||
}
|
||||
}
|
||||
|
||||
// Insert index.html with given content into given volume. It does so by
|
||||
|
|
|
@ -304,6 +304,9 @@ func (g *gcePDCSIDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
|||
// tests to fail.
|
||||
framework.SkipIfMultizone(f.ClientSet)
|
||||
}
|
||||
if pattern.FsType == "xfs" {
|
||||
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||
}
|
||||
}
|
||||
|
||||
func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass {
|
||||
|
@ -312,6 +315,9 @@ func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storage
|
|||
suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
|
||||
|
||||
parameters := map[string]string{"type": "pd-standard"}
|
||||
if fsType != "" {
|
||||
parameters["csi.storage.k8s.io/fstype"] = fsType
|
||||
}
|
||||
|
||||
return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
|
||||
}
|
||||
|
@ -404,6 +410,9 @@ func (g *gcePDExternalCSIDriver) GetDriverInfo() *testsuites.DriverInfo {
|
|||
func (g *gcePDExternalCSIDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||
framework.SkipUnlessProviderIs("gce", "gke")
|
||||
framework.SkipIfMultizone(g.driverInfo.Config.Framework.ClientSet)
|
||||
if pattern.FsType == "xfs" {
|
||||
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||
}
|
||||
}
|
||||
|
||||
func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass {
|
||||
|
@ -412,6 +421,9 @@ func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string)
|
|||
suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
|
||||
|
||||
parameters := map[string]string{"type": "pd-standard"}
|
||||
if fsType != "" {
|
||||
parameters["csi.storage.k8s.io/fstype"] = fsType
|
||||
}
|
||||
|
||||
return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
|
||||
}
|
||||
|
|
|
@ -259,9 +259,6 @@ func (g *glusterFSDriver) GetDriverInfo() *testsuites.DriverInfo {
|
|||
|
||||
func (g *glusterFSDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||
framework.SkipUnlessNodeOSDistroIs("gci", "ubuntu", "custom")
|
||||
if pattern.FsType == "xfs" {
|
||||
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||
}
|
||||
}
|
||||
|
||||
func (g *glusterFSDriver) GetVolumeSource(readOnly bool, fsType string, testResource interface{}) *v1.VolumeSource {
|
||||
|
@ -1178,9 +1175,6 @@ func (g *gcePdDriver) GetDriverInfo() *testsuites.DriverInfo {
|
|||
|
||||
func (g *gcePdDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||
framework.SkipUnlessProviderIs("gce", "gke")
|
||||
if pattern.FsType == "xfs" {
|
||||
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||
}
|
||||
}
|
||||
|
||||
func (g *gcePdDriver) GetVolumeSource(readOnly bool, fsType string, testResource interface{}) *v1.VolumeSource {
|
||||
|
|
|
@ -63,7 +63,7 @@ func testFlexVolume(driver string, cs clientset.Interface, config framework.Volu
|
|||
ExpectedContent: "Hello from flexvolume!",
|
||||
},
|
||||
}
|
||||
framework.TestVolumeClient(cs, config, nil, tests)
|
||||
framework.TestVolumeClient(cs, config, nil, "" /* fsType */, tests)
|
||||
|
||||
framework.VolumeTestCleanup(f, config)
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ func RunTestSuite(f *framework.Framework, driver TestDriver, tsInits []func() Te
|
|||
// is not suitable to be tested.
|
||||
// Whether it needs to be skipped is checked by following steps:
|
||||
// 1. Check if Whether volType is supported by driver from its interface
|
||||
// 2. Check if fsType is supported by driver
|
||||
// 2. Check if fsType is supported
|
||||
// 3. Check with driver specific logic
|
||||
// 4. Check with testSuite specific logic
|
||||
func skipUnsupportedTest(suite TestSuite, driver TestDriver, pattern testpatterns.TestPattern) {
|
||||
|
@ -103,10 +103,13 @@ func skipUnsupportedTest(suite TestSuite, driver TestDriver, pattern testpattern
|
|||
framework.Skipf("Driver %s doesn't support %v -- skipping", dInfo.Name, pattern.VolType)
|
||||
}
|
||||
|
||||
// 2. Check if fsType is supported by driver
|
||||
// 2. Check if fsType is supported
|
||||
if !dInfo.SupportedFsType.Has(pattern.FsType) {
|
||||
framework.Skipf("Driver %s doesn't support %v -- skipping", dInfo.Name, pattern.FsType)
|
||||
}
|
||||
if pattern.FsType == "xfs" && framework.NodeOSDistroIs("gci") {
|
||||
framework.Skipf("Distro doesn't support xfs -- skipping")
|
||||
}
|
||||
|
||||
// 3. Check with driver specific logic
|
||||
driver.SkipUnsupportedTest(pattern)
|
||||
|
|
|
@ -111,6 +111,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo
|
|||
config: &dInfo.Config,
|
||||
fsGroup: fsGroup,
|
||||
resource: resource,
|
||||
fsType: pattern.FsType,
|
||||
tests: []framework.VolumeTest{
|
||||
{
|
||||
Volume: *volSource,
|
||||
|
@ -160,6 +161,7 @@ type volumesTestInput struct {
|
|||
name string
|
||||
config *TestConfig
|
||||
fsGroup *int64
|
||||
fsType string
|
||||
tests []framework.VolumeTest
|
||||
resource genericVolumeTestResource
|
||||
}
|
||||
|
@ -175,7 +177,7 @@ func testVolumes(input *volumesTestInput) {
|
|||
volumeTest := input.tests
|
||||
config := convertTestConfig(input.config)
|
||||
framework.InjectHtml(cs, config, volumeTest[0].Volume, volumeTest[0].ExpectedContent)
|
||||
framework.TestVolumeClient(cs, config, input.fsGroup, input.tests)
|
||||
framework.TestVolumeClient(cs, config, input.fsGroup, input.fsType, input.tests)
|
||||
})
|
||||
It("should allow exec of files on the volume", func() {
|
||||
f := input.f
|
||||
|
|
|
@ -106,7 +106,7 @@ var _ = utils.SIGDescribe("Volumes", func() {
|
|||
ExpectedContent: "this is the second file",
|
||||
},
|
||||
}
|
||||
framework.TestVolumeClient(cs, config, nil, tests)
|
||||
framework.TestVolumeClient(cs, config, nil, "" /* fsType */, tests)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue