Commit dfcf2ca3 authored by Patrick Ohly's avatar Patrick Ohly

e2e/storage: separate generic testsuites from specific drivers

This makes it possible to use the testsuites package out-of-tree without pulling in unnecessary dependencies and code (in test/e2e/storage/vsphere) that defines tests that are not wanted in a custom test suite.
parent 41ab9449
...@@ -43,7 +43,7 @@ import ( ...@@ -43,7 +43,7 @@ import (
) )
// List of testDrivers to be executed in below loop // List of testDrivers to be executed in below loop
var csiTestDrivers = []func() drivers.TestDriver{ var csiTestDrivers = []func() testsuites.TestDriver{
drivers.InitHostPathCSIDriver, drivers.InitHostPathCSIDriver,
drivers.InitGcePDCSIDriver, drivers.InitGcePDCSIDriver,
drivers.InitGcePDExternalCSIDriver, drivers.InitGcePDExternalCSIDriver,
...@@ -126,12 +126,12 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { ...@@ -126,12 +126,12 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
for _, initDriver := range csiTestDrivers { for _, initDriver := range csiTestDrivers {
curDriver := initDriver() curDriver := initDriver()
Context(drivers.GetDriverNameWithFeatureTags(curDriver), func() { Context(testsuites.GetDriverNameWithFeatureTags(curDriver), func() {
driver := curDriver driver := curDriver
BeforeEach(func() { BeforeEach(func() {
// setupDriver // setupDriver
drivers.SetCommonDriverParameters(driver, f, config) testsuites.SetCommonDriverParameters(driver, f, config)
driver.CreateDriver() driver.CreateDriver()
}) })
...@@ -149,14 +149,14 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { ...@@ -149,14 +149,14 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
var ( var (
cs clientset.Interface cs clientset.Interface
csics csiclient.Interface csics csiclient.Interface
driver drivers.TestDriver driver testsuites.TestDriver
) )
BeforeEach(func() { BeforeEach(func() {
cs = f.ClientSet cs = f.ClientSet
csics = f.CSIClientSet csics = f.CSIClientSet
driver = drivers.InitHostPathCSIDriver() driver = drivers.InitHostPathCSIDriver()
drivers.SetCommonDriverParameters(driver, f, config) testsuites.SetCommonDriverParameters(driver, f, config)
driver.CreateDriver() driver.CreateDriver()
}) })
...@@ -193,7 +193,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { ...@@ -193,7 +193,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
test := t test := t
It(test.name, func() { It(test.name, func() {
if test.driverExists { if test.driverExists {
csiDriver := createCSIDriver(csics, drivers.GetUniqueDriverName(driver), test.driverAttachable) csiDriver := createCSIDriver(csics, testsuites.GetUniqueDriverName(driver), test.driverAttachable)
if csiDriver != nil { if csiDriver != nil {
defer csics.CsiV1alpha1().CSIDrivers().Delete(csiDriver.Name, nil) defer csics.CsiV1alpha1().CSIDrivers().Delete(csiDriver.Name, nil)
} }
...@@ -201,7 +201,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() { ...@@ -201,7 +201,7 @@ var _ = utils.SIGDescribe("CSI Volumes", func() {
By("Creating pod") By("Creating pod")
var sc *storagev1.StorageClass var sc *storagev1.StorageClass
if dDriver, ok := driver.(drivers.DynamicPVTestDriver); ok { if dDriver, ok := driver.(testsuites.DynamicPVTestDriver); ok {
sc = dDriver.GetDynamicProvisionStorageClass("") sc = dDriver.GetDynamicProvisionStorageClass("")
} }
nodeName := driver.GetDriverInfo().Config.ClientNodeName nodeName := driver.GetDriverInfo().Config.ClientNodeName
......
...@@ -44,38 +44,39 @@ import ( ...@@ -44,38 +44,39 @@ import (
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
"k8s.io/kubernetes/test/e2e/storage/testsuites"
"k8s.io/kubernetes/test/e2e/storage/utils" "k8s.io/kubernetes/test/e2e/storage/utils"
) )
// hostpathCSI // hostpathCSI
type hostpathCSIDriver struct { type hostpathCSIDriver struct {
cleanup func() cleanup func()
driverInfo DriverInfo driverInfo testsuites.DriverInfo
manifests []string manifests []string
} }
func initHostPathCSIDriver(name string, manifests ...string) TestDriver { func initHostPathCSIDriver(name string, manifests ...string) testsuites.TestDriver {
return &hostpathCSIDriver{ return &hostpathCSIDriver{
driverInfo: DriverInfo{ driverInfo: testsuites.DriverInfo{
Name: name, Name: name,
FeatureTag: "", FeatureTag: "",
MaxFileSize: testpatterns.FileSizeMedium, MaxFileSize: testpatterns.FileSizeMedium,
SupportedFsType: sets.NewString( SupportedFsType: sets.NewString(
"", // Default fsType "", // Default fsType
), ),
Capabilities: map[Capability]bool{ Capabilities: map[testsuites.Capability]bool{
CapPersistence: true, testsuites.CapPersistence: true,
}, },
}, },
manifests: manifests, manifests: manifests,
} }
} }
var _ TestDriver = &hostpathCSIDriver{} var _ testsuites.TestDriver = &hostpathCSIDriver{}
var _ DynamicPVTestDriver = &hostpathCSIDriver{} var _ testsuites.DynamicPVTestDriver = &hostpathCSIDriver{}
// InitHostPathCSIDriver returns hostpathCSIDriver that implements TestDriver interface // InitHostPathCSIDriver returns hostpathCSIDriver that implements TestDriver interface
func InitHostPathCSIDriver() TestDriver { func InitHostPathCSIDriver() testsuites.TestDriver {
return initHostPathCSIDriver("csi-hostpath", return initHostPathCSIDriver("csi-hostpath",
"test/e2e/testing-manifests/storage-csi/driver-registrar/rbac.yaml", "test/e2e/testing-manifests/storage-csi/driver-registrar/rbac.yaml",
"test/e2e/testing-manifests/storage-csi/external-attacher/rbac.yaml", "test/e2e/testing-manifests/storage-csi/external-attacher/rbac.yaml",
...@@ -87,7 +88,7 @@ func InitHostPathCSIDriver() TestDriver { ...@@ -87,7 +88,7 @@ func InitHostPathCSIDriver() TestDriver {
) )
} }
func (h *hostpathCSIDriver) GetDriverInfo() *DriverInfo { func (h *hostpathCSIDriver) GetDriverInfo() *testsuites.DriverInfo {
return &h.driverInfo return &h.driverInfo
} }
...@@ -95,12 +96,12 @@ func (h *hostpathCSIDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern ...@@ -95,12 +96,12 @@ func (h *hostpathCSIDriver) SkipUnsupportedTest(pattern testpatterns.TestPattern
} }
func (h *hostpathCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass { func (h *hostpathCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storagev1.StorageClass {
provisioner := GetUniqueDriverName(h) provisioner := testsuites.GetUniqueDriverName(h)
parameters := map[string]string{} parameters := map[string]string{}
ns := h.driverInfo.Framework.Namespace.Name ns := h.driverInfo.Framework.Namespace.Name
suffix := fmt.Sprintf("%s-sc", provisioner) suffix := fmt.Sprintf("%s-sc", provisioner)
return getStorageClass(provisioner, parameters, nil, ns, suffix) return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
} }
func (h *hostpathCSIDriver) GetClaimSize() string { func (h *hostpathCSIDriver) GetClaimSize() string {
...@@ -122,7 +123,7 @@ func (h *hostpathCSIDriver) CreateDriver() { ...@@ -122,7 +123,7 @@ func (h *hostpathCSIDriver) CreateDriver() {
// settings are ignored for this test. We could patch the image definitions. // settings are ignored for this test. We could patch the image definitions.
o := utils.PatchCSIOptions{ o := utils.PatchCSIOptions{
OldDriverName: h.driverInfo.Name, OldDriverName: h.driverInfo.Name,
NewDriverName: GetUniqueDriverName(h), NewDriverName: testsuites.GetUniqueDriverName(h),
DriverContainerName: "hostpath", DriverContainerName: "hostpath",
ProvisionerContainerName: "csi-provisioner", ProvisionerContainerName: "csi-provisioner",
NodeName: h.driverInfo.Config.ServerNodeName, NodeName: h.driverInfo.Config.ServerNodeName,
...@@ -145,7 +146,7 @@ func (h *hostpathCSIDriver) CleanupDriver() { ...@@ -145,7 +146,7 @@ func (h *hostpathCSIDriver) CleanupDriver() {
} }
// InitHostPathV0CSIDriver returns a variant of hostpathCSIDriver with different manifests. // InitHostPathV0CSIDriver returns a variant of hostpathCSIDriver with different manifests.
func InitHostPathV0CSIDriver() TestDriver { func InitHostPathV0CSIDriver() testsuites.TestDriver {
return initHostPathCSIDriver("csi-hostpath-v0", return initHostPathCSIDriver("csi-hostpath-v0",
"test/e2e/testing-manifests/storage-csi/driver-registrar/rbac.yaml", "test/e2e/testing-manifests/storage-csi/driver-registrar/rbac.yaml",
"test/e2e/testing-manifests/storage-csi/external-attacher/rbac.yaml", "test/e2e/testing-manifests/storage-csi/external-attacher/rbac.yaml",
...@@ -160,16 +161,16 @@ func InitHostPathV0CSIDriver() TestDriver { ...@@ -160,16 +161,16 @@ func InitHostPathV0CSIDriver() TestDriver {
// gce-pd // gce-pd
type gcePDCSIDriver struct { type gcePDCSIDriver struct {
cleanup func() cleanup func()
driverInfo DriverInfo driverInfo testsuites.DriverInfo
} }
var _ TestDriver = &gcePDCSIDriver{} var _ testsuites.TestDriver = &gcePDCSIDriver{}
var _ DynamicPVTestDriver = &gcePDCSIDriver{} var _ testsuites.DynamicPVTestDriver = &gcePDCSIDriver{}
// InitGcePDCSIDriver returns gcePDCSIDriver that implements TestDriver interface // InitGcePDCSIDriver returns gcePDCSIDriver that implements TestDriver interface
func InitGcePDCSIDriver() TestDriver { func InitGcePDCSIDriver() testsuites.TestDriver {
return &gcePDCSIDriver{ return &gcePDCSIDriver{
driverInfo: DriverInfo{ driverInfo: testsuites.DriverInfo{
Name: "pd.csi.storage.gke.io", Name: "pd.csi.storage.gke.io",
FeatureTag: "[Serial]", FeatureTag: "[Serial]",
MaxFileSize: testpatterns.FileSizeMedium, MaxFileSize: testpatterns.FileSizeMedium,
...@@ -180,16 +181,16 @@ func InitGcePDCSIDriver() TestDriver { ...@@ -180,16 +181,16 @@ func InitGcePDCSIDriver() TestDriver {
"ext4", "ext4",
"xfs", "xfs",
), ),
Capabilities: map[Capability]bool{ Capabilities: map[testsuites.Capability]bool{
CapPersistence: true, testsuites.CapPersistence: true,
CapFsGroup: true, testsuites.CapFsGroup: true,
CapExec: true, testsuites.CapExec: true,
}, },
}, },
} }
} }
func (g *gcePDCSIDriver) GetDriverInfo() *DriverInfo { func (g *gcePDCSIDriver) GetDriverInfo() *testsuites.DriverInfo {
return &g.driverInfo return &g.driverInfo
} }
...@@ -206,7 +207,7 @@ func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storage ...@@ -206,7 +207,7 @@ func (g *gcePDCSIDriver) GetDynamicProvisionStorageClass(fsType string) *storage
parameters := map[string]string{"type": "pd-standard"} parameters := map[string]string{"type": "pd-standard"}
return getStorageClass(provisioner, parameters, nil, ns, suffix) return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
} }
func (g *gcePDCSIDriver) GetClaimSize() string { func (g *gcePDCSIDriver) GetClaimSize() string {
...@@ -223,7 +224,7 @@ func (g *gcePDCSIDriver) CreateDriver() { ...@@ -223,7 +224,7 @@ func (g *gcePDCSIDriver) CreateDriver() {
// These are the options which would have to be used: // These are the options which would have to be used:
// o := utils.PatchCSIOptions{ // o := utils.PatchCSIOptions{
// OldDriverName: g.driverInfo.Name, // OldDriverName: g.driverInfo.Name,
// NewDriverName: GetUniqueDriverName(g), // NewDriverName: testsuites.GetUniqueDriverName(g),
// DriverContainerName: "gce-driver", // DriverContainerName: "gce-driver",
// ProvisionerContainerName: "csi-external-provisioner", // ProvisionerContainerName: "csi-external-provisioner",
// } // }
...@@ -252,17 +253,18 @@ func (g *gcePDCSIDriver) CleanupDriver() { ...@@ -252,17 +253,18 @@ func (g *gcePDCSIDriver) CleanupDriver() {
// gcePd-external // gcePd-external
type gcePDExternalCSIDriver struct { type gcePDExternalCSIDriver struct {
driverInfo DriverInfo driverInfo testsuites.DriverInfo
} }
var _ TestDriver = &gcePDExternalCSIDriver{} var _ testsuites.TestDriver = &gcePDExternalCSIDriver{}
var _ DynamicPVTestDriver = &gcePDExternalCSIDriver{} var _ testsuites.DynamicPVTestDriver = &gcePDExternalCSIDriver{}
// InitGcePDExternalCSIDriver returns gcePDExternalCSIDriver that implements TestDriver interface // InitGcePDExternalCSIDriver returns gcePDExternalCSIDriver that implements TestDriver interface
func InitGcePDExternalCSIDriver() TestDriver { func InitGcePDExternalCSIDriver() testsuites.TestDriver {
return &gcePDExternalCSIDriver{ return &gcePDExternalCSIDriver{
driverInfo: DriverInfo{ driverInfo: testsuites.DriverInfo{
Name: "pd.csi.storage.gke.io", Name: "pd.csi.storage.gke.io",
// TODO(#70258): this is temporary until we can figure out how to make e2e tests a library // TODO(#70258): this is temporary until we can figure out how to make e2e tests a library
FeatureTag: "[Feature: gcePD-external]", FeatureTag: "[Feature: gcePD-external]",
MaxFileSize: testpatterns.FileSizeMedium, MaxFileSize: testpatterns.FileSizeMedium,
...@@ -273,16 +275,16 @@ func InitGcePDExternalCSIDriver() TestDriver { ...@@ -273,16 +275,16 @@ func InitGcePDExternalCSIDriver() TestDriver {
"ext4", "ext4",
"xfs", "xfs",
), ),
Capabilities: map[Capability]bool{ Capabilities: map[testsuites.Capability]bool{
CapPersistence: true, testsuites.CapPersistence: true,
CapFsGroup: true, testsuites.CapFsGroup: true,
CapExec: true, testsuites.CapExec: true,
}, },
}, },
} }
} }
func (g *gcePDExternalCSIDriver) GetDriverInfo() *DriverInfo { func (g *gcePDExternalCSIDriver) GetDriverInfo() *testsuites.DriverInfo {
return &g.driverInfo return &g.driverInfo
} }
...@@ -298,7 +300,7 @@ func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string) ...@@ -298,7 +300,7 @@ func (g *gcePDExternalCSIDriver) GetDynamicProvisionStorageClass(fsType string)
parameters := map[string]string{"type": "pd-standard"} parameters := map[string]string{"type": "pd-standard"}
return getStorageClass(provisioner, parameters, nil, ns, suffix) return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
} }
func (g *gcePDExternalCSIDriver) GetClaimSize() string { func (g *gcePDExternalCSIDriver) GetClaimSize() string {
......
...@@ -27,7 +27,7 @@ import ( ...@@ -27,7 +27,7 @@ import (
) )
// List of testDrivers to be executed in below loop // List of testDrivers to be executed in below loop
var testDrivers = []func() drivers.TestDriver{ var testDrivers = []func() testsuites.TestDriver{
drivers.InitNFSDriver, drivers.InitNFSDriver,
drivers.InitGlusterFSDriver, drivers.InitGlusterFSDriver,
drivers.InitISCSIDriver, drivers.InitISCSIDriver,
...@@ -75,12 +75,12 @@ var _ = utils.SIGDescribe("In-tree Volumes", func() { ...@@ -75,12 +75,12 @@ var _ = utils.SIGDescribe("In-tree Volumes", func() {
for _, initDriver := range testDrivers { for _, initDriver := range testDrivers {
curDriver := initDriver() curDriver := initDriver()
Context(drivers.GetDriverNameWithFeatureTags(curDriver), func() { Context(testsuites.GetDriverNameWithFeatureTags(curDriver), func() {
driver := curDriver driver := curDriver
BeforeEach(func() { BeforeEach(func() {
// setupDriver // setupDriver
drivers.SetCommonDriverParameters(driver, f, config) testsuites.SetCommonDriverParameters(driver, f, config)
driver.CreateDriver() driver.CreateDriver()
}) })
......
...@@ -30,7 +30,6 @@ import ( ...@@ -30,7 +30,6 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors" utilerrors "k8s.io/apimachinery/pkg/util/errors"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
) )
...@@ -39,9 +38,9 @@ type TestSuite interface { ...@@ -39,9 +38,9 @@ type TestSuite interface {
// getTestSuiteInfo returns the TestSuiteInfo for this TestSuite // getTestSuiteInfo returns the TestSuiteInfo for this TestSuite
getTestSuiteInfo() TestSuiteInfo getTestSuiteInfo() TestSuiteInfo
// skipUnsupportedTest skips the test if this TestSuite is not suitable to be tested with the combination of TestPattern and TestDriver // skipUnsupportedTest skips the test if this TestSuite is not suitable to be tested with the combination of TestPattern and TestDriver
skipUnsupportedTest(testpatterns.TestPattern, drivers.TestDriver) skipUnsupportedTest(testpatterns.TestPattern, TestDriver)
// execTest executes test of the testpattern for the driver // execTest executes test of the testpattern for the driver
execTest(drivers.TestDriver, testpatterns.TestPattern) execTest(TestDriver, testpatterns.TestPattern)
} }
// TestSuiteInfo represents a set of parameters for TestSuite // TestSuiteInfo represents a set of parameters for TestSuite
...@@ -55,9 +54,9 @@ type TestSuiteInfo struct { ...@@ -55,9 +54,9 @@ type TestSuiteInfo struct {
type TestResource interface { type TestResource interface {
// setupResource sets up test resources to be used for the tests with the // setupResource sets up test resources to be used for the tests with the
// combination of TestDriver and TestPattern // combination of TestDriver and TestPattern
setupResource(drivers.TestDriver, testpatterns.TestPattern) setupResource(TestDriver, testpatterns.TestPattern)
// cleanupResource clean up the test resources created in SetupResource // cleanupResource clean up the test resources created in SetupResource
cleanupResource(drivers.TestDriver, testpatterns.TestPattern) cleanupResource(TestDriver, testpatterns.TestPattern)
} }
func getTestNameStr(suite TestSuite, pattern testpatterns.TestPattern) string { func getTestNameStr(suite TestSuite, pattern testpatterns.TestPattern) string {
...@@ -66,7 +65,7 @@ func getTestNameStr(suite TestSuite, pattern testpatterns.TestPattern) string { ...@@ -66,7 +65,7 @@ func getTestNameStr(suite TestSuite, pattern testpatterns.TestPattern) string {
} }
// RunTestSuite runs all testpatterns of all testSuites for a driver // RunTestSuite runs all testpatterns of all testSuites for a driver
func RunTestSuite(f *framework.Framework, config framework.VolumeTestConfig, driver drivers.TestDriver, tsInits []func() TestSuite, tunePatternFunc func([]testpatterns.TestPattern) []testpatterns.TestPattern) { func RunTestSuite(f *framework.Framework, config framework.VolumeTestConfig, driver TestDriver, tsInits []func() TestSuite, tunePatternFunc func([]testpatterns.TestPattern) []testpatterns.TestPattern) {
for _, testSuiteInit := range tsInits { for _, testSuiteInit := range tsInits {
suite := testSuiteInit() suite := testSuiteInit()
patterns := tunePatternFunc(suite.getTestSuiteInfo().testPatterns) patterns := tunePatternFunc(suite.getTestSuiteInfo().testPatterns)
...@@ -84,18 +83,18 @@ func RunTestSuite(f *framework.Framework, config framework.VolumeTestConfig, dri ...@@ -84,18 +83,18 @@ func RunTestSuite(f *framework.Framework, config framework.VolumeTestConfig, dri
// 2. Check if fsType is supported by driver // 2. Check if fsType is supported by driver
// 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 drivers.TestDriver, pattern testpatterns.TestPattern) { func skipUnsupportedTest(suite TestSuite, driver TestDriver, pattern testpatterns.TestPattern) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
// 1. Check if Whether volType is supported by driver from its interface // 1. Check if Whether volType is supported by driver from its interface
var isSupported bool var isSupported bool
switch pattern.VolType { switch pattern.VolType {
case testpatterns.InlineVolume: case testpatterns.InlineVolume:
_, isSupported = driver.(drivers.InlineVolumeTestDriver) _, isSupported = driver.(InlineVolumeTestDriver)
case testpatterns.PreprovisionedPV: case testpatterns.PreprovisionedPV:
_, isSupported = driver.(drivers.PreprovisionedPVTestDriver) _, isSupported = driver.(PreprovisionedPVTestDriver)
case testpatterns.DynamicPV: case testpatterns.DynamicPV:
_, isSupported = driver.(drivers.DynamicPVTestDriver) _, isSupported = driver.(DynamicPVTestDriver)
default: default:
isSupported = false isSupported = false
} }
...@@ -121,7 +120,7 @@ func skipUnsupportedTest(suite TestSuite, driver drivers.TestDriver, pattern tes ...@@ -121,7 +120,7 @@ func skipUnsupportedTest(suite TestSuite, driver drivers.TestDriver, pattern tes
// See volume_io.go or volumes.go in test/e2e/storage/testsuites/ for how to use this resource. // See volume_io.go or volumes.go in test/e2e/storage/testsuites/ for how to use this resource.
// Also, see subpath.go in the same directory for how to extend and use it. // Also, see subpath.go in the same directory for how to extend and use it.
type genericVolumeTestResource struct { type genericVolumeTestResource struct {
driver drivers.TestDriver driver TestDriver
volType string volType string
volSource *v1.VolumeSource volSource *v1.VolumeSource
pvc *v1.PersistentVolumeClaim pvc *v1.PersistentVolumeClaim
...@@ -134,7 +133,7 @@ type genericVolumeTestResource struct { ...@@ -134,7 +133,7 @@ type genericVolumeTestResource struct {
var _ TestResource = &genericVolumeTestResource{} var _ TestResource = &genericVolumeTestResource{}
// setupResource sets up genericVolumeTestResource // setupResource sets up genericVolumeTestResource
func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (r *genericVolumeTestResource) setupResource(driver TestDriver, pattern testpatterns.TestPattern) {
r.driver = driver r.driver = driver
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
...@@ -143,18 +142,18 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat ...@@ -143,18 +142,18 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat
volType := pattern.VolType volType := pattern.VolType
// Create volume for pre-provisioned volume tests // Create volume for pre-provisioned volume tests
r.driverTestResource = drivers.CreateVolume(driver, volType) r.driverTestResource = CreateVolume(driver, volType)
switch volType { switch volType {
case testpatterns.InlineVolume: case testpatterns.InlineVolume:
framework.Logf("Creating resource for inline volume") framework.Logf("Creating resource for inline volume")
if iDriver, ok := driver.(drivers.InlineVolumeTestDriver); ok { if iDriver, ok := driver.(InlineVolumeTestDriver); ok {
r.volSource = iDriver.GetVolumeSource(false, fsType, r.driverTestResource) r.volSource = iDriver.GetVolumeSource(false, fsType, r.driverTestResource)
r.volType = dInfo.Name r.volType = dInfo.Name
} }
case testpatterns.PreprovisionedPV: case testpatterns.PreprovisionedPV:
framework.Logf("Creating resource for pre-provisioned PV") framework.Logf("Creating resource for pre-provisioned PV")
if pDriver, ok := driver.(drivers.PreprovisionedPVTestDriver); ok { if pDriver, ok := driver.(PreprovisionedPVTestDriver); ok {
pvSource := pDriver.GetPersistentVolumeSource(false, fsType, r.driverTestResource) pvSource := pDriver.GetPersistentVolumeSource(false, fsType, r.driverTestResource)
if pvSource != nil { if pvSource != nil {
r.volSource, r.pv, r.pvc = createVolumeSourceWithPVCPV(f, dInfo.Name, pvSource, false) r.volSource, r.pv, r.pvc = createVolumeSourceWithPVCPV(f, dInfo.Name, pvSource, false)
...@@ -163,7 +162,7 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat ...@@ -163,7 +162,7 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat
} }
case testpatterns.DynamicPV: case testpatterns.DynamicPV:
framework.Logf("Creating resource for dynamic PV") framework.Logf("Creating resource for dynamic PV")
if dDriver, ok := driver.(drivers.DynamicPVTestDriver); ok { if dDriver, ok := driver.(DynamicPVTestDriver); ok {
claimSize := dDriver.GetClaimSize() claimSize := dDriver.GetClaimSize()
r.sc = dDriver.GetDynamicProvisionStorageClass(fsType) r.sc = dDriver.GetDynamicProvisionStorageClass(fsType)
...@@ -188,7 +187,7 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat ...@@ -188,7 +187,7 @@ func (r *genericVolumeTestResource) setupResource(driver drivers.TestDriver, pat
} }
// cleanupResource cleans up genericVolumeTestResource // cleanupResource cleans up genericVolumeTestResource
func (r *genericVolumeTestResource) cleanupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (r *genericVolumeTestResource) cleanupResource(driver TestDriver, pattern testpatterns.TestPattern) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
volType := pattern.VolType volType := pattern.VolType
...@@ -222,7 +221,7 @@ func (r *genericVolumeTestResource) cleanupResource(driver drivers.TestDriver, p ...@@ -222,7 +221,7 @@ func (r *genericVolumeTestResource) cleanupResource(driver drivers.TestDriver, p
} }
// Cleanup volume for pre-provisioned volume tests // Cleanup volume for pre-provisioned volume tests
drivers.DeleteVolume(driver, volType, r.driverTestResource) DeleteVolume(driver, volType, r.driverTestResource)
} }
func createVolumeSourceWithPVCPV( func createVolumeSourceWithPVCPV(
......
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package testsuites
import (
"fmt"
storagev1 "k8s.io/api/storage/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/testpatterns"
)
// GetDriverNameWithFeatureTags returns driver name with feature tags
// For example)
// - [Driver: nfs]
// - [Driver: rbd][Feature:Volumes]
func GetDriverNameWithFeatureTags(driver TestDriver) string {
dInfo := driver.GetDriverInfo()
return fmt.Sprintf("[Driver: %s]%s", dInfo.Name, dInfo.FeatureTag)
}
// CreateVolume creates volume for test unless dynamicPV test
func CreateVolume(driver TestDriver, volType testpatterns.TestVolType) interface{} {
switch volType {
case testpatterns.InlineVolume:
fallthrough
case testpatterns.PreprovisionedPV:
if pDriver, ok := driver.(PreprovisionedVolumeTestDriver); ok {
return pDriver.CreateVolume(volType)
}
case testpatterns.DynamicPV:
// No need to create volume
default:
framework.Failf("Invalid volType specified: %v", volType)
}
return nil
}
// DeleteVolume deletes volume for test unless dynamicPV test
func DeleteVolume(driver TestDriver, volType testpatterns.TestVolType, testResource interface{}) {
switch volType {
case testpatterns.InlineVolume:
fallthrough
case testpatterns.PreprovisionedPV:
if pDriver, ok := driver.(PreprovisionedVolumeTestDriver); ok {
pDriver.DeleteVolume(volType, testResource)
}
case testpatterns.DynamicPV:
// No need to delete volume
default:
framework.Failf("Invalid volType specified: %v", volType)
}
}
// SetCommonDriverParameters sets a common driver parameters to TestDriver
// This function is intended to be called in BeforeEach() inside test loop.
func SetCommonDriverParameters(
driver TestDriver,
f *framework.Framework,
config framework.VolumeTestConfig,
) {
dInfo := driver.GetDriverInfo()
dInfo.Framework = f
dInfo.Config = config
}
// GetStorageClass constructs a new StorageClass instance
// with a unique name that is based on namespace + suffix.
func GetStorageClass(
provisioner string,
parameters map[string]string,
bindingMode *storagev1.VolumeBindingMode,
ns string,
suffix string,
) *storagev1.StorageClass {
if bindingMode == nil {
defaultBindingMode := storagev1.VolumeBindingImmediate
bindingMode = &defaultBindingMode
}
return &storagev1.StorageClass{
TypeMeta: metav1.TypeMeta{
Kind: "StorageClass",
},
ObjectMeta: metav1.ObjectMeta{
// Name must be unique, so let's base it on namespace name
Name: ns + "-" + suffix,
},
Provisioner: provisioner,
Parameters: parameters,
VolumeBindingMode: bindingMode,
}
}
// GetUniqueDriverName returns unique driver name that can be used parallelly in tests
func GetUniqueDriverName(driver TestDriver) string {
return fmt.Sprintf("%s-%s", driver.GetDriverInfo().Name, driver.GetDriverInfo().Framework.UniqueName)
}
...@@ -31,7 +31,6 @@ import ( ...@@ -31,7 +31,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
) )
...@@ -74,10 +73,10 @@ func (p *provisioningTestSuite) getTestSuiteInfo() TestSuiteInfo { ...@@ -74,10 +73,10 @@ func (p *provisioningTestSuite) getTestSuiteInfo() TestSuiteInfo {
return p.tsInfo return p.tsInfo
} }
func (p *provisioningTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver drivers.TestDriver) { func (p *provisioningTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) {
} }
func createProvisioningTestInput(driver drivers.TestDriver, pattern testpatterns.TestPattern) (provisioningTestResource, provisioningTestInput) { func createProvisioningTestInput(driver TestDriver, pattern testpatterns.TestPattern) (provisioningTestResource, provisioningTestInput) {
// Setup test resource for driver and testpattern // Setup test resource for driver and testpattern
resource := provisioningTestResource{} resource := provisioningTestResource{}
resource.setupResource(driver, pattern) resource.setupResource(driver, pattern)
...@@ -100,7 +99,7 @@ func createProvisioningTestInput(driver drivers.TestDriver, pattern testpatterns ...@@ -100,7 +99,7 @@ func createProvisioningTestInput(driver drivers.TestDriver, pattern testpatterns
return resource, input return resource, input
} }
func (p *provisioningTestSuite) execTest(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (p *provisioningTestSuite) execTest(driver TestDriver, pattern testpatterns.TestPattern) {
Context(getTestNameStr(p, pattern), func() { Context(getTestNameStr(p, pattern), func() {
var ( var (
resource provisioningTestResource resource provisioningTestResource
...@@ -132,7 +131,7 @@ func (p *provisioningTestSuite) execTest(driver drivers.TestDriver, pattern test ...@@ -132,7 +131,7 @@ func (p *provisioningTestSuite) execTest(driver drivers.TestDriver, pattern test
} }
type provisioningTestResource struct { type provisioningTestResource struct {
driver drivers.TestDriver driver TestDriver
claimSize string claimSize string
sc *storage.StorageClass sc *storage.StorageClass
...@@ -141,11 +140,11 @@ type provisioningTestResource struct { ...@@ -141,11 +140,11 @@ type provisioningTestResource struct {
var _ TestResource = &provisioningTestResource{} var _ TestResource = &provisioningTestResource{}
func (p *provisioningTestResource) setupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (p *provisioningTestResource) setupResource(driver TestDriver, pattern testpatterns.TestPattern) {
// Setup provisioningTest resource // Setup provisioningTest resource
switch pattern.VolType { switch pattern.VolType {
case testpatterns.DynamicPV: case testpatterns.DynamicPV:
if dDriver, ok := driver.(drivers.DynamicPVTestDriver); ok { if dDriver, ok := driver.(DynamicPVTestDriver); ok {
p.sc = dDriver.GetDynamicProvisionStorageClass("") p.sc = dDriver.GetDynamicProvisionStorageClass("")
if p.sc == nil { if p.sc == nil {
framework.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", driver.GetDriverInfo().Name) framework.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", driver.GetDriverInfo().Name)
...@@ -161,7 +160,7 @@ func (p *provisioningTestResource) setupResource(driver drivers.TestDriver, patt ...@@ -161,7 +160,7 @@ func (p *provisioningTestResource) setupResource(driver drivers.TestDriver, patt
} }
} }
func (p *provisioningTestResource) cleanupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (p *provisioningTestResource) cleanupResource(driver TestDriver, pattern testpatterns.TestPattern) {
} }
type provisioningTestInput struct { type provisioningTestInput struct {
...@@ -169,7 +168,7 @@ type provisioningTestInput struct { ...@@ -169,7 +168,7 @@ type provisioningTestInput struct {
cs clientset.Interface cs clientset.Interface
pvc *v1.PersistentVolumeClaim pvc *v1.PersistentVolumeClaim
sc *storage.StorageClass sc *storage.StorageClass
dInfo *drivers.DriverInfo dInfo *DriverInfo
} }
func testProvisioning(input *provisioningTestInput) { func testProvisioning(input *provisioningTestInput) {
...@@ -187,7 +186,7 @@ func testProvisioning(input *provisioningTestInput) { ...@@ -187,7 +186,7 @@ func testProvisioning(input *provisioningTestInput) {
}) })
It("should create and delete block persistent volumes", func() { It("should create and delete block persistent volumes", func() {
if !input.dInfo.Capabilities[drivers.CapBlock] { if !input.dInfo.Capabilities[CapBlock] {
framework.Skipf("Driver %q does not support BlockVolume - skipping", input.dInfo.Name) framework.Skipf("Driver %q does not support BlockVolume - skipping", input.dInfo.Name)
} }
block := v1.PersistentVolumeBlock block := v1.PersistentVolumeBlock
......
...@@ -27,7 +27,6 @@ import ( ...@@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
"k8s.io/kubernetes/test/e2e/storage/utils" "k8s.io/kubernetes/test/e2e/storage/utils"
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
...@@ -72,7 +71,7 @@ func (s *subPathTestSuite) getTestSuiteInfo() TestSuiteInfo { ...@@ -72,7 +71,7 @@ func (s *subPathTestSuite) getTestSuiteInfo() TestSuiteInfo {
return s.tsInfo return s.tsInfo
} }
func (s *subPathTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver drivers.TestDriver) { func (s *subPathTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) {
} }
func createSubPathTestInput(pattern testpatterns.TestPattern, resource subPathTestResource) subPathTestInput { func createSubPathTestInput(pattern testpatterns.TestPattern, resource subPathTestResource) subPathTestInput {
...@@ -95,7 +94,7 @@ func createSubPathTestInput(pattern testpatterns.TestPattern, resource subPathTe ...@@ -95,7 +94,7 @@ func createSubPathTestInput(pattern testpatterns.TestPattern, resource subPathTe
} }
} }
func (s *subPathTestSuite) execTest(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (s *subPathTestSuite) execTest(driver TestDriver, pattern testpatterns.TestPattern) {
Context(getTestNameStr(s, pattern), func() { Context(getTestNameStr(s, pattern), func() {
var ( var (
resource subPathTestResource resource subPathTestResource
...@@ -137,7 +136,7 @@ type subPathTestResource struct { ...@@ -137,7 +136,7 @@ type subPathTestResource struct {
var _ TestResource = &subPathTestResource{} var _ TestResource = &subPathTestResource{}
func (s *subPathTestResource) setupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (s *subPathTestResource) setupResource(driver TestDriver, pattern testpatterns.TestPattern) {
s.driver = driver s.driver = driver
dInfo := s.driver.GetDriverInfo() dInfo := s.driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
...@@ -150,7 +149,7 @@ func (s *subPathTestResource) setupResource(driver drivers.TestDriver, pattern t ...@@ -150,7 +149,7 @@ func (s *subPathTestResource) setupResource(driver drivers.TestDriver, pattern t
// Setup subPath test dependent resource // Setup subPath test dependent resource
switch volType { switch volType {
case testpatterns.InlineVolume: case testpatterns.InlineVolume:
if iDriver, ok := driver.(drivers.InlineVolumeTestDriver); ok { if iDriver, ok := driver.(InlineVolumeTestDriver); ok {
s.roVolSource = iDriver.GetVolumeSource(true, fsType, s.genericVolumeTestResource.driverTestResource) s.roVolSource = iDriver.GetVolumeSource(true, fsType, s.genericVolumeTestResource.driverTestResource)
} }
case testpatterns.PreprovisionedPV: case testpatterns.PreprovisionedPV:
...@@ -182,7 +181,7 @@ func (s *subPathTestResource) setupResource(driver drivers.TestDriver, pattern t ...@@ -182,7 +181,7 @@ func (s *subPathTestResource) setupResource(driver drivers.TestDriver, pattern t
s.formatPod.Spec.NodeSelector = config.NodeSelector s.formatPod.Spec.NodeSelector = config.NodeSelector
} }
func (s *subPathTestResource) cleanupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (s *subPathTestResource) cleanupResource(driver TestDriver, pattern testpatterns.TestPattern) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
......
...@@ -14,14 +14,11 @@ See the License for the specific language governing permissions and ...@@ -14,14 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package drivers package testsuites
import ( import (
"fmt"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
storagev1 "k8s.io/api/storage/v1" storagev1 "k8s.io/api/storage/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
...@@ -108,89 +105,3 @@ type DriverInfo struct { ...@@ -108,89 +105,3 @@ type DriverInfo struct {
Framework *framework.Framework // Framework for the test Framework *framework.Framework // Framework for the test
Config framework.VolumeTestConfig // VolumeTestConfig for thet test Config framework.VolumeTestConfig // VolumeTestConfig for thet test
} }
// GetDriverNameWithFeatureTags returns driver name with feature tags
// For example)
// - [Driver: nfs]
// - [Driver: rbd][Feature:Volumes]
func GetDriverNameWithFeatureTags(driver TestDriver) string {
dInfo := driver.GetDriverInfo()
return fmt.Sprintf("[Driver: %s]%s", dInfo.Name, dInfo.FeatureTag)
}
// CreateVolume creates volume for test unless dynamicPV test
func CreateVolume(driver TestDriver, volType testpatterns.TestVolType) interface{} {
switch volType {
case testpatterns.InlineVolume:
fallthrough
case testpatterns.PreprovisionedPV:
if pDriver, ok := driver.(PreprovisionedVolumeTestDriver); ok {
return pDriver.CreateVolume(volType)
}
case testpatterns.DynamicPV:
// No need to create volume
default:
framework.Failf("Invalid volType specified: %v", volType)
}
return nil
}
// DeleteVolume deletes volume for test unless dynamicPV test
func DeleteVolume(driver TestDriver, volType testpatterns.TestVolType, testResource interface{}) {
switch volType {
case testpatterns.InlineVolume:
fallthrough
case testpatterns.PreprovisionedPV:
if pDriver, ok := driver.(PreprovisionedVolumeTestDriver); ok {
pDriver.DeleteVolume(volType, testResource)
}
case testpatterns.DynamicPV:
// No need to delete volume
default:
framework.Failf("Invalid volType specified: %v", volType)
}
}
// SetCommonDriverParameters sets a common driver parameters to TestDriver
// This function is intended to be called in BeforeEach() inside test loop.
func SetCommonDriverParameters(
driver TestDriver,
f *framework.Framework,
config framework.VolumeTestConfig,
) {
dInfo := driver.GetDriverInfo()
dInfo.Framework = f
dInfo.Config = config
}
func getStorageClass(
provisioner string,
parameters map[string]string,
bindingMode *storagev1.VolumeBindingMode,
ns string,
suffix string,
) *storagev1.StorageClass {
if bindingMode == nil {
defaultBindingMode := storagev1.VolumeBindingImmediate
bindingMode = &defaultBindingMode
}
return &storagev1.StorageClass{
TypeMeta: metav1.TypeMeta{
Kind: "StorageClass",
},
ObjectMeta: metav1.ObjectMeta{
// Name must be unique, so let's base it on namespace name
Name: ns + "-" + suffix,
},
Provisioner: provisioner,
Parameters: parameters,
VolumeBindingMode: bindingMode,
}
}
// GetUniqueDriverName returns unique driver name that can be used parallelly in tests
func GetUniqueDriverName(driver TestDriver) string {
return fmt.Sprintf("%s-%s", driver.GetDriverInfo().Name, driver.GetDriverInfo().Framework.UniqueName)
}
...@@ -35,7 +35,6 @@ import ( ...@@ -35,7 +35,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
"k8s.io/kubernetes/test/e2e/storage/utils" "k8s.io/kubernetes/test/e2e/storage/utils"
) )
...@@ -75,7 +74,7 @@ func (t *volumeIOTestSuite) getTestSuiteInfo() TestSuiteInfo { ...@@ -75,7 +74,7 @@ func (t *volumeIOTestSuite) getTestSuiteInfo() TestSuiteInfo {
return t.tsInfo return t.tsInfo
} }
func (t *volumeIOTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver drivers.TestDriver) { func (t *volumeIOTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) {
} }
func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericVolumeTestResource) volumeIOTestInput { func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericVolumeTestResource) volumeIOTestInput {
...@@ -90,7 +89,7 @@ func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericV ...@@ -90,7 +89,7 @@ func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericV
framework.Skipf("Driver %q does not define volumeSource - skipping", dInfo.Name) framework.Skipf("Driver %q does not define volumeSource - skipping", dInfo.Name)
} }
if dInfo.Capabilities[drivers.CapFsGroup] { if dInfo.Capabilities[CapFsGroup] {
fsGroupVal := int64(1234) fsGroupVal := int64(1234)
fsGroup = &fsGroupVal fsGroup = &fsGroupVal
} }
...@@ -108,7 +107,7 @@ func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericV ...@@ -108,7 +107,7 @@ func createVolumeIOTestInput(pattern testpatterns.TestPattern, resource genericV
} }
} }
func (t *volumeIOTestSuite) execTest(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (t *volumeIOTestSuite) execTest(driver TestDriver, pattern testpatterns.TestPattern) {
Context(getTestNameStr(t, pattern), func() { Context(getTestNameStr(t, pattern), func() {
var ( var (
resource genericVolumeTestResource resource genericVolumeTestResource
......
...@@ -27,7 +27,6 @@ import ( ...@@ -27,7 +27,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilerrors "k8s.io/apimachinery/pkg/util/errors" utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
"k8s.io/kubernetes/test/e2e/storage/utils" "k8s.io/kubernetes/test/e2e/storage/utils"
) )
...@@ -62,7 +61,7 @@ func (t *volumeModeTestSuite) getTestSuiteInfo() TestSuiteInfo { ...@@ -62,7 +61,7 @@ func (t *volumeModeTestSuite) getTestSuiteInfo() TestSuiteInfo {
return t.tsInfo return t.tsInfo
} }
func (t *volumeModeTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver drivers.TestDriver) { func (t *volumeModeTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) {
} }
func createVolumeModeTestInput(pattern testpatterns.TestPattern, resource volumeModeTestResource) volumeModeTestInput { func createVolumeModeTestInput(pattern testpatterns.TestPattern, resource volumeModeTestResource) volumeModeTestInput {
...@@ -78,13 +77,13 @@ func createVolumeModeTestInput(pattern testpatterns.TestPattern, resource volume ...@@ -78,13 +77,13 @@ func createVolumeModeTestInput(pattern testpatterns.TestPattern, resource volume
testVolType: pattern.VolType, testVolType: pattern.VolType,
nodeName: dInfo.Config.ClientNodeName, nodeName: dInfo.Config.ClientNodeName,
volMode: pattern.VolMode, volMode: pattern.VolMode,
isBlockSupported: dInfo.Capabilities[drivers.CapBlock], isBlockSupported: dInfo.Capabilities[CapBlock],
} }
} }
func getVolumeModeTestFunc(pattern testpatterns.TestPattern, driver drivers.TestDriver) func(*volumeModeTestInput) { func getVolumeModeTestFunc(pattern testpatterns.TestPattern, driver TestDriver) func(*volumeModeTestInput) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
isBlockSupported := dInfo.Capabilities[drivers.CapBlock] isBlockSupported := dInfo.Capabilities[CapBlock]
volMode := pattern.VolMode volMode := pattern.VolMode
volType := pattern.VolType volType := pattern.VolType
...@@ -105,7 +104,7 @@ func getVolumeModeTestFunc(pattern testpatterns.TestPattern, driver drivers.Test ...@@ -105,7 +104,7 @@ func getVolumeModeTestFunc(pattern testpatterns.TestPattern, driver drivers.Test
return nil return nil
} }
func (t *volumeModeTestSuite) execTest(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (t *volumeModeTestSuite) execTest(driver TestDriver, pattern testpatterns.TestPattern) {
Context(getTestNameStr(t, pattern), func() { Context(getTestNameStr(t, pattern), func() {
var ( var (
resource volumeModeTestResource resource volumeModeTestResource
...@@ -141,7 +140,7 @@ func (t *volumeModeTestSuite) execTest(driver drivers.TestDriver, pattern testpa ...@@ -141,7 +140,7 @@ func (t *volumeModeTestSuite) execTest(driver drivers.TestDriver, pattern testpa
} }
type volumeModeTestResource struct { type volumeModeTestResource struct {
driver drivers.TestDriver driver TestDriver
sc *storagev1.StorageClass sc *storagev1.StorageClass
pvc *v1.PersistentVolumeClaim pvc *v1.PersistentVolumeClaim
...@@ -152,7 +151,7 @@ type volumeModeTestResource struct { ...@@ -152,7 +151,7 @@ type volumeModeTestResource struct {
var _ TestResource = &volumeModeTestResource{} var _ TestResource = &volumeModeTestResource{}
func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (s *volumeModeTestResource) setupResource(driver TestDriver, pattern testpatterns.TestPattern) {
s.driver = driver s.driver = driver
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
...@@ -168,7 +167,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter ...@@ -168,7 +167,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter
) )
// Create volume for pre-provisioned volume tests // Create volume for pre-provisioned volume tests
s.driverTestResource = drivers.CreateVolume(driver, volType) s.driverTestResource = CreateVolume(driver, volType)
switch volType { switch volType {
case testpatterns.PreprovisionedPV: case testpatterns.PreprovisionedPV:
...@@ -177,7 +176,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter ...@@ -177,7 +176,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter
} else if volMode == v1.PersistentVolumeFilesystem { } else if volMode == v1.PersistentVolumeFilesystem {
scName = fmt.Sprintf("%s-%s-sc-for-file", ns.Name, dInfo.Name) scName = fmt.Sprintf("%s-%s-sc-for-file", ns.Name, dInfo.Name)
} }
if pDriver, ok := driver.(drivers.PreprovisionedPVTestDriver); ok { if pDriver, ok := driver.(PreprovisionedPVTestDriver); ok {
pvSource = pDriver.GetPersistentVolumeSource(false, fsType, s.driverTestResource) pvSource = pDriver.GetPersistentVolumeSource(false, fsType, s.driverTestResource)
if pvSource == nil { if pvSource == nil {
framework.Skipf("Driver %q does not define PersistentVolumeSource - skipping", dInfo.Name) framework.Skipf("Driver %q does not define PersistentVolumeSource - skipping", dInfo.Name)
...@@ -189,7 +188,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter ...@@ -189,7 +188,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter
s.pvc = framework.MakePersistentVolumeClaim(pvcConfig, ns.Name) s.pvc = framework.MakePersistentVolumeClaim(pvcConfig, ns.Name)
} }
case testpatterns.DynamicPV: case testpatterns.DynamicPV:
if dDriver, ok := driver.(drivers.DynamicPVTestDriver); ok { if dDriver, ok := driver.(DynamicPVTestDriver); ok {
s.sc = dDriver.GetDynamicProvisionStorageClass(fsType) s.sc = dDriver.GetDynamicProvisionStorageClass(fsType)
if s.sc == nil { if s.sc == nil {
framework.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", dInfo.Name) framework.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", dInfo.Name)
...@@ -206,7 +205,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter ...@@ -206,7 +205,7 @@ func (s *volumeModeTestResource) setupResource(driver drivers.TestDriver, patter
} }
} }
func (s *volumeModeTestResource) cleanupResource(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (s *volumeModeTestResource) cleanupResource(driver TestDriver, pattern testpatterns.TestPattern) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
f := dInfo.Framework f := dInfo.Framework
cs := f.ClientSet cs := f.ClientSet
...@@ -224,7 +223,7 @@ func (s *volumeModeTestResource) cleanupResource(driver drivers.TestDriver, patt ...@@ -224,7 +223,7 @@ func (s *volumeModeTestResource) cleanupResource(driver drivers.TestDriver, patt
} }
// Cleanup volume for pre-provisioned volume tests // Cleanup volume for pre-provisioned volume tests
drivers.DeleteVolume(driver, volType, s.driverTestResource) DeleteVolume(driver, volType, s.driverTestResource)
} }
type volumeModeTestInput struct { type volumeModeTestInput struct {
......
...@@ -31,7 +31,6 @@ import ( ...@@ -31,7 +31,6 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/storage/drivers"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
) )
...@@ -73,19 +72,19 @@ func (t *volumesTestSuite) getTestSuiteInfo() TestSuiteInfo { ...@@ -73,19 +72,19 @@ func (t *volumesTestSuite) getTestSuiteInfo() TestSuiteInfo {
return t.tsInfo return t.tsInfo
} }
func (t *volumesTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver drivers.TestDriver) { func (t *volumesTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) {
} }
func skipPersistenceTest(driver drivers.TestDriver) { func skipPersistenceTest(driver TestDriver) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
if !dInfo.Capabilities[drivers.CapPersistence] { if !dInfo.Capabilities[CapPersistence] {
framework.Skipf("Driver %q does not provide persistency - skipping", dInfo.Name) framework.Skipf("Driver %q does not provide persistency - skipping", dInfo.Name)
} }
} }
func skipExecTest(driver drivers.TestDriver) { func skipExecTest(driver TestDriver) {
dInfo := driver.GetDriverInfo() dInfo := driver.GetDriverInfo()
if !dInfo.Capabilities[drivers.CapExec] { if !dInfo.Capabilities[CapExec] {
framework.Skipf("Driver %q does not support exec - skipping", dInfo.Name) framework.Skipf("Driver %q does not support exec - skipping", dInfo.Name)
} }
} }
...@@ -101,7 +100,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo ...@@ -101,7 +100,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo
framework.Skipf("Driver %q does not define volumeSource - skipping", dInfo.Name) framework.Skipf("Driver %q does not define volumeSource - skipping", dInfo.Name)
} }
if dInfo.Capabilities[drivers.CapFsGroup] { if dInfo.Capabilities[CapFsGroup] {
fsGroupVal := int64(1234) fsGroupVal := int64(1234)
fsGroup = &fsGroupVal fsGroup = &fsGroupVal
} }
...@@ -124,7 +123,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo ...@@ -124,7 +123,7 @@ func createVolumesTestInput(pattern testpatterns.TestPattern, resource genericVo
} }
} }
func (t *volumesTestSuite) execTest(driver drivers.TestDriver, pattern testpatterns.TestPattern) { func (t *volumesTestSuite) execTest(driver TestDriver, pattern testpatterns.TestPattern) {
Context(getTestNameStr(t, pattern), func() { Context(getTestNameStr(t, pattern), func() {
var ( var (
resource genericVolumeTestResource resource genericVolumeTestResource
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment