mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #70823 from mkimuram/issue/70822
Fix volumes e2e test to check fsType
This commit is contained in:
commit
b6701153b5
@ -120,8 +120,10 @@ func (util *AWSDiskUtil) CreateVolume(c *awsElasticBlockStoreProvisioner, node *
|
|||||||
}
|
}
|
||||||
|
|
||||||
fstype := ""
|
fstype := ""
|
||||||
if v, ok := c.options.Parameters[volume.VolumeParameterFSType]; ok {
|
for k, v := range c.options.Parameters {
|
||||||
fstype = v
|
if strings.ToLower(k) == volume.VolumeParameterFSType {
|
||||||
|
fstype = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return name, volumeOptions.CapacityGB, labels, fstype, nil
|
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
|
// 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
|
// 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!",
|
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.
|
// 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
|
// Multiple VolumeTests can be specified to mount multiple volumes to a single
|
||||||
// pod.
|
// 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"))
|
By(fmt.Sprint("starting ", config.Prefix, " client"))
|
||||||
var gracePeriod int64 = 1
|
var gracePeriod int64 = 1
|
||||||
clientPod := &v1.Pod{
|
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)
|
_, 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))
|
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
|
// 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.
|
// tests to fail.
|
||||||
framework.SkipIfMultizone(f.ClientSet)
|
framework.SkipIfMultizone(f.ClientSet)
|
||||||
}
|
}
|
||||||
|
if pattern.FsType == "xfs" {
|
||||||
|
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass {
|
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)
|
suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
|
||||||
|
|
||||||
parameters := map[string]string{"type": "pd-standard"}
|
parameters := map[string]string{"type": "pd-standard"}
|
||||||
|
if fsType != "" {
|
||||||
|
parameters["csi.storage.k8s.io/fstype"] = fsType
|
||||||
|
}
|
||||||
|
|
||||||
return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
|
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) {
|
func (g *gcePDExternalCSIDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||||
framework.SkipUnlessProviderIs("gce", "gke")
|
framework.SkipUnlessProviderIs("gce", "gke")
|
||||||
framework.SkipIfMultizone(g.driverInfo.Config.Framework.ClientSet)
|
framework.SkipIfMultizone(g.driverInfo.Config.Framework.ClientSet)
|
||||||
|
if pattern.FsType == "xfs" {
|
||||||
|
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass {
|
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)
|
suffix := fmt.Sprintf("%s-sc", g.driverInfo.Name)
|
||||||
|
|
||||||
parameters := map[string]string{"type": "pd-standard"}
|
parameters := map[string]string{"type": "pd-standard"}
|
||||||
|
if fsType != "" {
|
||||||
|
parameters["csi.storage.k8s.io/fstype"] = fsType
|
||||||
|
}
|
||||||
|
|
||||||
return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
|
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) {
|
func (g *glusterFSDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||||
framework.SkipUnlessNodeOSDistroIs("gci", "ubuntu", "custom")
|
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 {
|
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) {
|
func (g *gcePdDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern) {
|
||||||
framework.SkipUnlessProviderIs("gce", "gke")
|
framework.SkipUnlessProviderIs("gce", "gke")
|
||||||
if pattern.FsType == "xfs" {
|
|
||||||
framework.SkipUnlessNodeOSDistroIs("ubuntu", "custom")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *gcePdDriver) GetVolumeSource(readOnly bool, fsType string, testResource interface{}) *v1.VolumeSource {
|
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!",
|
ExpectedContent: "Hello from flexvolume!",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
framework.TestVolumeClient(cs, config, nil, tests)
|
framework.TestVolumeClient(cs, config, nil, "" /* fsType */, tests)
|
||||||
|
|
||||||
framework.VolumeTestCleanup(f, config)
|
framework.VolumeTestCleanup(f, config)
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ func RunTestSuite(f *framework.Framework, driver TestDriver, tsInits []func() Te
|
|||||||
// is not suitable to be tested.
|
// is not suitable to be tested.
|
||||||
// Whether it needs to be skipped is checked by following steps:
|
// Whether it needs to be skipped is checked by following steps:
|
||||||
// 1. Check if Whether volType is supported by driver from its interface
|
// 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
|
// 3. Check with driver specific logic
|
||||||
// 4. Check with testSuite specific logic
|
// 4. Check with testSuite specific logic
|
||||||
func skipUnsupportedTest(suite TestSuite, driver TestDriver, pattern testpatterns.TestPattern) {
|
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)
|
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) {
|
if !dInfo.SupportedFsType.Has(pattern.FsType) {
|
||||||
framework.Skipf("Driver %s doesn't support %v -- skipping", dInfo.Name, 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
|
// 3. Check with driver specific logic
|
||||||
driver.SkipUnsupportedTest(pattern)
|
driver.SkipUnsupportedTest(pattern)
|
||||||
|
@ -111,6 +111,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo
|
|||||||
config: &dInfo.Config,
|
config: &dInfo.Config,
|
||||||
fsGroup: fsGroup,
|
fsGroup: fsGroup,
|
||||||
resource: resource,
|
resource: resource,
|
||||||
|
fsType: pattern.FsType,
|
||||||
tests: []framework.VolumeTest{
|
tests: []framework.VolumeTest{
|
||||||
{
|
{
|
||||||
Volume: *volSource,
|
Volume: *volSource,
|
||||||
@ -160,6 +161,7 @@ type volumesTestInput struct {
|
|||||||
name string
|
name string
|
||||||
config *TestConfig
|
config *TestConfig
|
||||||
fsGroup *int64
|
fsGroup *int64
|
||||||
|
fsType string
|
||||||
tests []framework.VolumeTest
|
tests []framework.VolumeTest
|
||||||
resource genericVolumeTestResource
|
resource genericVolumeTestResource
|
||||||
}
|
}
|
||||||
@ -175,7 +177,7 @@ func testVolumes(input *volumesTestInput) {
|
|||||||
volumeTest := input.tests
|
volumeTest := input.tests
|
||||||
config := convertTestConfig(input.config)
|
config := convertTestConfig(input.config)
|
||||||
framework.InjectHtml(cs, config, volumeTest[0].Volume, volumeTest[0].ExpectedContent)
|
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() {
|
It("should allow exec of files on the volume", func() {
|
||||||
f := input.f
|
f := input.f
|
||||||
|
@ -106,7 +106,7 @@ var _ = utils.SIGDescribe("Volumes", func() {
|
|||||||
ExpectedContent: "this is the second file",
|
ExpectedContent: "this is the second file",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
framework.TestVolumeClient(cs, config, nil, tests)
|
framework.TestVolumeClient(cs, config, nil, "" /* fsType */, tests)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user