e2e storage: eliminate explicit test driver cleanup

Cleanup can be handled inside the setup code with ginkgo.DeferCleanup. This
simplifies the code.
This commit is contained in:
Patrick Ohly 2022-10-07 18:02:53 +02:00
parent 83415e5c9e
commit d8d3dc9476
24 changed files with 125 additions and 187 deletions

View File

@ -181,8 +181,7 @@ var _ = utils.SIGDescribe("CSI mock volume", func() {
}
m.driver = drivers.InitMockCSIDriver(driverOpts)
config, testCleanup := m.driver.PrepareTest(f)
m.testCleanups = append(m.testCleanups, testCleanup)
config := m.driver.PrepareTest(f)
m.config = config
m.provisioner = config.GetUniqueDriverName()

View File

@ -206,7 +206,7 @@ func (h *hostpathCSIDriver) GetSnapshotClass(config *storageframework.PerTestCon
return utils.GenerateSnapshotClassSpec(snapshotter, parameters, ns)
}
func (h *hostpathCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (h *hostpathCSIDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
// Create secondary namespace which will be used for creating driver
driverNamespace := utils.CreateDriverNamespace(f)
driverns := driverNamespace.Name
@ -285,8 +285,9 @@ func (h *hostpathCSIDriver) PrepareTest(f *framework.Framework) (*storageframewo
driverns,
cleanup,
cancelLogging)
ginkgo.DeferCleanup(cleanupFunc)
return config, cleanupFunc
return config
}
// mockCSI
@ -531,7 +532,7 @@ func (m *mockCSIDriver) GetSnapshotClass(config *storageframework.PerTestConfig,
return utils.GenerateSnapshotClassSpec(snapshotter, parameters, ns)
}
func (m *mockCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (m *mockCSIDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
m.clientSet = f.ClientSet
// Create secondary namespace which will be used for creating driver
@ -689,12 +690,12 @@ func (m *mockCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.P
cleanup,
cancelLogging)
cleanupFunc := func() {
ginkgo.DeferCleanup(func() {
embeddedCleanup()
driverCleanupFunc()
}
})
return config, cleanupFunc
return config
}
func (m *mockCSIDriver) interceptGRPC(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
@ -860,7 +861,7 @@ func (g *gcePDCSIDriver) GetSnapshotClass(config *storageframework.PerTestConfig
return utils.GenerateSnapshotClassSpec(snapshotter, parameters, ns)
}
func (g *gcePDCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (g *gcePDCSIDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
testns := f.Namespace.Name
cfg := &storageframework.PerTestConfig{
Driver: g,
@ -870,7 +871,7 @@ func (g *gcePDCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.
if framework.ProviderIs("gke") {
framework.Logf("The csi gce-pd driver is automatically installed in GKE. Skipping driver installation.")
return cfg, func() {}
return cfg
}
ginkgo.By("deploying csi gce-pd driver")
@ -917,13 +918,14 @@ func (g *gcePDCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.
driverns,
cleanup,
cancelLogging)
ginkgo.DeferCleanup(cleanupFunc)
return &storageframework.PerTestConfig{
Driver: g,
Prefix: "gcepd",
Framework: f,
DriverNamespace: driverNamespace,
}, cleanupFunc
}
}
// WaitForCSIDriverRegistrationOnAllNodes waits for the CSINode object to be updated

View File

@ -157,7 +157,7 @@ func (n *nfsDriver) GetDynamicProvisionStorageClass(config *storageframework.Per
return storageframework.GetStorageClass(provisioner, parameters, nil, ns)
}
func (n *nfsDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (n *nfsDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
cs := f.ClientSet
ns := f.Namespace
n.externalPluginName = fmt.Sprintf("example.com/nfs-%s", ns.Name)
@ -167,6 +167,10 @@ func (n *nfsDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTe
err := e2eauth.BindClusterRole(cs.RbacV1(), "cluster-admin", ns.Name,
rbacv1.Subject{Kind: rbacv1.ServiceAccountKind, Namespace: ns.Name, Name: "default"})
framework.ExpectNoError(err)
ginkgo.DeferCleanup(func(ctx context.Context) {
clusterRoleBindingName := ns.Name + "--" + "cluster-admin"
cs.RbacV1().ClusterRoleBindings().Delete(ctx, clusterRoleBindingName, *metav1.NewDeleteOptions(0))
})
err = e2eauth.WaitForAuthorizationUpdate(cs.AuthorizationV1(),
serviceaccount.MakeUsername(ns.Name, "default"),
@ -175,16 +179,15 @@ func (n *nfsDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTe
ginkgo.By("creating an external dynamic provisioner pod")
n.externalProvisionerPod = utils.StartExternalProvisioner(cs, ns.Name, n.externalPluginName)
ginkgo.DeferCleanup(func() {
framework.ExpectNoError(e2epod.DeletePodWithWait(cs, n.externalProvisionerPod))
})
return &storageframework.PerTestConfig{
Driver: n,
Prefix: "nfs",
Framework: f,
}, func() {
framework.ExpectNoError(e2epod.DeletePodWithWait(cs, n.externalProvisionerPod))
clusterRoleBindingName := ns.Name + "--" + "cluster-admin"
cs.RbacV1().ClusterRoleBindings().Delete(context.TODO(), clusterRoleBindingName, *metav1.NewDeleteOptions(0))
}
Driver: n,
Prefix: "nfs",
Framework: f,
}
}
func (n *nfsDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -307,12 +310,12 @@ func (i *iSCSIDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2
return &pvSource, nil
}
func (i *iSCSIDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (i *iSCSIDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: i,
Prefix: "iscsi",
Framework: f,
}, func() {}
}
}
func (i *iSCSIDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -500,12 +503,12 @@ func (r *rbdDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e2ev
return &pvSource, nil
}
func (r *rbdDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (r *rbdDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: r,
Prefix: "rbd",
Framework: f,
}, func() {}
}
}
func (r *rbdDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -614,12 +617,12 @@ func (c *cephFSDriver) GetPersistentVolumeSource(readOnly bool, fsType string, e
}, nil
}
func (c *cephFSDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (c *cephFSDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: c,
Prefix: "cephfs",
Framework: f,
}, func() {}
}
}
func (c *cephFSDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -690,12 +693,12 @@ func (h *hostPathDriver) GetVolumeSource(readOnly bool, fsType string, e2evolume
}
}
func (h *hostPathDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (h *hostPathDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: h,
Prefix: "hostpath",
Framework: f,
}, func() {}
}
}
func (h *hostPathDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -770,12 +773,12 @@ func (h *hostPathSymlinkDriver) GetVolumeSource(readOnly bool, fsType string, e2
}
}
func (h *hostPathSymlinkDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (h *hostPathSymlinkDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: h,
Prefix: "hostpathsymlink",
Framework: f,
}, func() {}
}
}
func (h *hostPathSymlinkDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -911,12 +914,12 @@ func (e *emptydirDriver) CreateVolume(config *storageframework.PerTestConfig, vo
return nil
}
func (e *emptydirDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (e *emptydirDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: e,
Prefix: "emptydir",
Framework: f,
}, func() {}
}
}
// GCE
@ -1062,7 +1065,7 @@ func (g *gcePdDriver) GetDynamicProvisionStorageClass(config *storageframework.P
return storageframework.GetStorageClass(provisioner, parameters, &delayedBinding, ns)
}
func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (g *gcePdDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
config := &storageframework.PerTestConfig{
Driver: g,
Prefix: "gcepd",
@ -1076,7 +1079,7 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*storageframework.Per
},
}
}
return config, func() {}
return config
}
@ -1209,21 +1212,22 @@ func (v *vSphereDriver) GetDynamicProvisionStorageClass(config *storageframework
return storageframework.GetStorageClass(provisioner, parameters, nil, ns)
}
func (v *vSphereDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
return &storageframework.PerTestConfig{
Driver: v,
Prefix: "vsphere",
Framework: f,
}, func() {
// Driver Cleanup function
// Logout each vSphere client connection to prevent session leakage
nodes := vspheretest.GetReadySchedulableNodeInfos()
for _, node := range nodes {
if node.VSphere.Client != nil {
node.VSphere.Client.Logout(context.TODO())
}
func (v *vSphereDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
ginkgo.DeferCleanup(func() {
// Driver Cleanup function
// Logout each vSphere client connection to prevent session leakage
nodes := vspheretest.GetReadySchedulableNodeInfos()
for _, node := range nodes {
if node.VSphere.Client != nil {
node.VSphere.Client.Logout(context.TODO())
}
}
})
return &storageframework.PerTestConfig{
Driver: v,
Prefix: "vsphere",
Framework: f,
}
}
func (v *vSphereDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -1354,12 +1358,12 @@ func (a *azureDiskDriver) GetDynamicProvisionStorageClass(config *storageframewo
return storageframework.GetStorageClass(provisioner, parameters, &delayedBinding, ns)
}
func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (a *azureDiskDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: a,
Prefix: "azure",
Framework: f,
}, func() {}
}
}
func (a *azureDiskDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -1492,7 +1496,7 @@ func (a *awsDriver) GetDynamicProvisionStorageClass(config *storageframework.Per
return storageframework.GetStorageClass(provisioner, parameters, &delayedBinding, ns)
}
func (a *awsDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (a *awsDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
config := &storageframework.PerTestConfig{
Driver: a,
Prefix: "aws",
@ -1506,7 +1510,7 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTe
},
}
}
return config, func() {}
return config
}
func (a *awsDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -1628,7 +1632,7 @@ func (l *localDriver) GetDriverInfo() *storageframework.DriverInfo {
func (l *localDriver) SkipUnsupportedTest(pattern storageframework.TestPattern) {
}
func (l *localDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (l *localDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
var err error
l.node, err = e2enode.GetRandomReadySchedulableNode(f.ClientSet)
framework.ExpectNoError(err)
@ -1650,14 +1654,13 @@ func (l *localDriver) PrepareTest(f *framework.Framework) (*storageframework.Per
}
}
ginkgo.DeferCleanup(l.hostExec.Cleanup)
return &storageframework.PerTestConfig{
Driver: l,
Prefix: "local",
Framework: f,
ClientNodeSelection: e2epod.NodeSelection{Name: l.node.Name},
}, func() {
l.hostExec.Cleanup()
}
Driver: l,
Prefix: "local",
Framework: f,
ClientNodeSelection: e2epod.NodeSelection{Name: l.node.Name},
}
}
func (l *localDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {
@ -1848,12 +1851,12 @@ func (a *azureFileDriver) GetDynamicProvisionStorageClass(config *storageframewo
return storageframework.GetStorageClass(provisioner, parameters, &immediateBinding, ns)
}
func (a *azureFileDriver) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (a *azureFileDriver) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
return &storageframework.PerTestConfig{
Driver: a,
Prefix: "azure-file",
Framework: f,
}, func() {}
}
}
func (a *azureFileDriver) CreateVolume(config *storageframework.PerTestConfig, volType storageframework.TestVolType) storageframework.TestVolume {

View File

@ -415,12 +415,12 @@ func (d *driverDefinition) GetCSIDriverName(e2econfig *storageframework.PerTestC
return d.DriverInfo.Name
}
func (d *driverDefinition) PrepareTest(f *framework.Framework) (*storageframework.PerTestConfig, func()) {
func (d *driverDefinition) PrepareTest(f *framework.Framework) *storageframework.PerTestConfig {
e2econfig := &storageframework.PerTestConfig{
Driver: d,
Prefix: "external",
Framework: f,
ClientNodeSelection: e2epod.NodeSelection{Name: d.ClientNodeName},
}
return e2econfig, func() {}
return e2econfig
}

View File

@ -47,9 +47,9 @@ type TestDriver interface {
SkipUnsupportedTest(TestPattern)
// PrepareTest is called at test execution time each time a new test case is about to start.
// It sets up all necessary resources and returns the per-test configuration
// plus a cleanup function that frees all allocated resources.
PrepareTest(f *framework.Framework) (*PerTestConfig, func())
// It sets up all necessary resources and returns the per-test configuration.
// Cleanup is handled via ginkgo.DeferCleanup inside PrepareTest.
PrepareTest(f *framework.Framework) *PerTestConfig
}
// TestVolume is the result of PreprovisionedVolumeTestDriver.CreateVolume.

View File

@ -84,12 +84,11 @@ var _ = utils.SIGDescribe("[Feature:NodeOutOfServiceVolumeDetach] [Disruptive] [
// Install gce pd csi driver
ginkgo.By("deploying csi gce-pd driver")
driver := drivers.InitGcePDCSIDriver()
config, cleanup := driver.PrepareTest(f)
config := driver.PrepareTest(f)
dDriver, ok := driver.(storageframework.DynamicPVTestDriver)
if !ok {
e2eskipper.Skipf("csi driver expected DynamicPVTestDriver but got %v", driver)
}
defer cleanup()
ginkgo.By("Creating a gce-pd storage class")
sc := dDriver.GetDynamicProvisionStorageClass(config, "")
_, err := c.StorageV1().StorageClasses().Create(context.TODO(), sc, metav1.CreateOptions{})

View File

@ -33,7 +33,6 @@ import (
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -81,10 +80,9 @@ func (p *capacityTestSuite) SkipUnsupportedTests(driver storageframework.TestDri
func (p *capacityTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
var (
dInfo = driver.GetDriverInfo()
dDriver storageframework.DynamicPVTestDriver
driverCleanup func()
sc *storagev1.StorageClass
dInfo = driver.GetDriverInfo()
dDriver storageframework.DynamicPVTestDriver
sc *storagev1.StorageClass
)
// Beware that it also registers an AfterEach which renders f unusable. Any code using
@ -95,23 +93,15 @@ func (p *capacityTestSuite) DefineTests(driver storageframework.TestDriver, patt
init := func() {
dDriver, _ = driver.(storageframework.DynamicPVTestDriver)
// Now do the more expensive test initialization.
config, cleanup := driver.PrepareTest(f)
driverCleanup = cleanup
config := driver.PrepareTest(f)
sc = dDriver.GetDynamicProvisionStorageClass(config, pattern.FsType)
if sc == nil {
e2eskipper.Skipf("Driver %q does not define Dynamic Provision StorageClass - skipping", dInfo.Name)
}
}
cleanup := func() {
err := storageutils.TryFunc(driverCleanup)
driverCleanup = nil
framework.ExpectNoError(err, "while cleaning up driver")
}
ginkgo.It("provides storage capacity information", func() {
init()
defer cleanup()
timeout := time.Minute
pollInterval := time.Second

View File

@ -74,8 +74,7 @@ func (s *disruptiveTestSuite) SkipUnsupportedTests(driver storageframework.TestD
func (s *disruptiveTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
cs clientset.Interface
ns *v1.Namespace
@ -97,7 +96,7 @@ func (s *disruptiveTestSuite) DefineTests(driver storageframework.TestDriver, pa
l.cs = f.ClientSet
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
testVolumeSizeRange := s.GetTestSuiteInfo().SupportedSizeRange
l.resource = storageframework.CreateVolumeResource(driver, l.config, pattern, testVolumeSizeRange)
@ -118,8 +117,6 @@ func (s *disruptiveTestSuite) DefineTests(driver storageframework.TestDriver, pa
l.resource = nil
}
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
}

View File

@ -35,7 +35,6 @@ import (
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -104,8 +103,7 @@ func (p *ephemeralTestSuite) SkipUnsupportedTests(driver storageframework.TestDr
func (p *ephemeralTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
testCase *EphemeralTest
resource *storageframework.VolumeResource
@ -138,7 +136,7 @@ func (p *ephemeralTestSuite) DefineTests(driver storageframework.TestDriver, pat
l = local{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.resource = storageframework.CreateVolumeResource(driver, l.config, pattern, e2evolume.SizeRange{})
switch pattern.VolType {
@ -167,7 +165,6 @@ func (p *ephemeralTestSuite) DefineTests(driver storageframework.TestDriver, pat
cleanup := func() {
var cleanUpErrs []error
cleanUpErrs = append(cleanUpErrs, l.resource.CleanupResource())
cleanUpErrs = append(cleanUpErrs, storageutils.TryFunc(l.driverCleanup))
err := utilerrors.NewAggregate(cleanUpErrs)
framework.ExpectNoError(err, "while cleaning up")
}

View File

@ -96,10 +96,9 @@ func (s *fsGroupChangePolicyTestSuite) SkipUnsupportedTests(driver storageframew
func (s *fsGroupChangePolicyTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
driver storageframework.TestDriver
resource *storageframework.VolumeResource
config *storageframework.PerTestConfig
driver storageframework.TestDriver
resource *storageframework.VolumeResource
}
var l local
@ -112,7 +111,7 @@ func (s *fsGroupChangePolicyTestSuite) DefineTests(driver storageframework.TestD
e2eskipper.SkipIfNodeOSDistroIs("windows")
l = local{}
l.driver = driver
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
testVolumeSizeRange := s.GetTestSuiteInfo().SupportedSizeRange
l.resource = storageframework.CreateVolumeResource(l.driver, l.config, pattern, testVolumeSizeRange)
}
@ -126,11 +125,6 @@ func (s *fsGroupChangePolicyTestSuite) DefineTests(driver storageframework.TestD
l.resource = nil
}
if l.driverCleanup != nil {
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
}
framework.ExpectNoError(errors.NewAggregate(errs), "while cleanup resource")
}

View File

@ -87,8 +87,7 @@ func (t *multiVolumeTestSuite) SkipUnsupportedTests(driver storageframework.Test
func (t *multiVolumeTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
cs clientset.Interface
ns *v1.Namespace
@ -114,7 +113,7 @@ func (t *multiVolumeTestSuite) DefineTests(driver storageframework.TestDriver, p
l.driver = driver
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
}
@ -124,8 +123,6 @@ func (t *multiVolumeTestSuite) DefineTests(driver storageframework.TestDriver, p
errs = append(errs, resource.CleanupResource())
}
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
framework.ExpectNoError(errors.NewAggregate(errs), "while cleanup resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -114,8 +114,7 @@ func (p *provisioningTestSuite) SkipUnsupportedTests(driver storageframework.Tes
func (p *provisioningTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
testCase *StorageClassTest
cs clientset.Interface
@ -140,7 +139,7 @@ func (p *provisioningTestSuite) DefineTests(driver storageframework.TestDriver,
l = local{}
dDriver, _ = driver.(storageframework.DynamicPVTestDriver)
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
l.cs = l.config.Framework.ClientSet
testVolumeSizeRange := p.GetTestSuiteInfo().SupportedSizeRange
@ -177,10 +176,6 @@ func (p *provisioningTestSuite) DefineTests(driver storageframework.TestDriver,
}
cleanup := func() {
err := storageutils.TryFunc(l.driverCleanup)
l.driverCleanup = nil
framework.ExpectNoError(err, "while cleaning up driver")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -33,7 +33,6 @@ import (
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -44,8 +43,7 @@ type readWriteOncePodTestSuite struct {
var _ storageframework.TestSuite = &readWriteOncePodTestSuite{}
type readWriteOncePodTest struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
cs clientset.Interface
volume *storageframework.VolumeResource
@ -96,7 +94,7 @@ func (t *readWriteOncePodTestSuite) DefineTests(driver storageframework.TestDriv
init := func() {
l = readWriteOncePodTest{}
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.cs = f.ClientSet
l.pods = []*v1.Pod{}
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), driverInfo.InTreePluginName)
@ -114,7 +112,6 @@ func (t *readWriteOncePodTestSuite) DefineTests(driver storageframework.TestDriv
err := l.volume.CleanupResource()
errs = append(errs, err)
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -112,10 +112,9 @@ func (s *snapshottableTestSuite) DefineTests(driver storageframework.TestDriver,
ginkgo.Describe("volume snapshot controller", func() {
var (
err error
config *storageframework.PerTestConfig
driverCleanup func()
cleanupSteps []func()
err error
config *storageframework.PerTestConfig
cleanupSteps []func()
cs clientset.Interface
dc dynamic.Interface
@ -135,8 +134,7 @@ func (s *snapshottableTestSuite) DefineTests(driver storageframework.TestDriver,
dc = f.DynamicClient
// Now do the more expensive test initialization.
config, driverCleanup = driver.PrepareTest(f)
cleanupSteps = append(cleanupSteps, driverCleanup)
config = driver.PrepareTest(f)
cleanupSteps = append(cleanupSteps, func() {
framework.ExpectNoError(volumeResource.CleanupResource())

View File

@ -128,18 +128,17 @@ func (t *snapshottableStressTestSuite) DefineTests(driver storageframework.TestD
driverInfo = driver.GetDriverInfo()
snapshottableDriver, _ = driver.(storageframework.SnapshottableTestDriver)
cs = f.ClientSet
config, driverCleanup := driver.PrepareTest(f)
config := driver.PrepareTest(f)
ctx, cancel := context.WithCancel(context.Background())
stressTest = &snapshottableStressTest{
config: config,
driverCleanup: driverCleanup,
volumes: []*storageframework.VolumeResource{},
snapshots: []*storageframework.SnapshotResource{},
pods: []*v1.Pod{},
testOptions: *driverInfo.VolumeSnapshotStressTestOptions,
ctx: ctx,
cancel: cancel,
config: config,
volumes: []*storageframework.VolumeResource{},
snapshots: []*storageframework.SnapshotResource{},
pods: []*v1.Pod{},
testOptions: *driverInfo.VolumeSnapshotStressTestOptions,
ctx: ctx,
cancel: cancel,
}
}

View File

@ -99,8 +99,7 @@ func (s *subPathTestSuite) SkipUnsupportedTests(driver storageframework.TestDriv
func (s *subPathTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
hostExec storageutils.HostExec
resource *storageframework.VolumeResource
@ -124,7 +123,7 @@ func (s *subPathTestSuite) DefineTests(driver storageframework.TestDriver, patte
l = local{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), driver.GetDriverInfo().InTreePluginName)
testVolumeSizeRange := s.GetTestSuiteInfo().SupportedSizeRange
l.resource = storageframework.CreateVolumeResource(driver, l.config, pattern, testVolumeSizeRange)
@ -181,8 +180,6 @@ func (s *subPathTestSuite) DefineTests(driver storageframework.TestDriver, patte
l.resource = nil
}
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
if l.hostExec != nil {

View File

@ -44,8 +44,7 @@ type topologyTestSuite struct {
}
type topologyTest struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
migrationCheck *migrationOpCheck
@ -112,7 +111,7 @@ func (t *topologyTestSuite) DefineTests(driver storageframework.TestDriver, patt
l := topologyTest{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.resource = storageframework.VolumeResource{
Config: l.config,
@ -156,8 +155,6 @@ func (t *topologyTestSuite) DefineTests(driver storageframework.TestDriver, patt
cleanup := func(l topologyTest) {
t.CleanupResources(cs, &l)
err := storageutils.TryFunc(l.driverCleanup)
l.driverCleanup = nil
framework.ExpectNoError(err, "while cleaning up driver")
l.migrationCheck.validateMigrationVolumeOpCounts()

View File

@ -35,7 +35,6 @@ import (
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -102,8 +101,7 @@ func (v *volumeExpandTestSuite) SkipUnsupportedTests(driver storageframework.Tes
func (v *volumeExpandTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
resource *storageframework.VolumeResource
pod *v1.Pod
@ -122,7 +120,7 @@ func (v *volumeExpandTestSuite) DefineTests(driver storageframework.TestDriver,
l = local{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), driver.GetDriverInfo().InTreePluginName)
testVolumeSizeRange := v.GetTestSuiteInfo().SupportedSizeRange
l.resource = storageframework.CreateVolumeResource(driver, l.config, pattern, testVolumeSizeRange)
@ -149,8 +147,6 @@ func (v *volumeExpandTestSuite) DefineTests(driver storageframework.TestDriver,
l.resource = nil
}
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -41,7 +41,6 @@ import (
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -98,8 +97,7 @@ func (t *volumeIOTestSuite) SkipUnsupportedTests(driver storageframework.TestDri
func (t *volumeIOTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
resource *storageframework.VolumeResource
@ -119,7 +117,7 @@ func (t *volumeIOTestSuite) DefineTests(driver storageframework.TestDriver, patt
l = local{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
testVolumeSizeRange := t.GetTestSuiteInfo().SupportedSizeRange
@ -137,11 +135,6 @@ func (t *volumeIOTestSuite) DefineTests(driver storageframework.TestDriver, patt
l.resource = nil
}
if l.driverCleanup != nil {
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
}
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -33,7 +33,6 @@ import (
e2epv "k8s.io/kubernetes/test/e2e/framework/pv"
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -42,8 +41,7 @@ type volumeStressTestSuite struct {
}
type volumeStressTest struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
migrationCheck *migrationOpCheck
@ -121,7 +119,7 @@ func (t *volumeStressTestSuite) DefineTests(driver storageframework.TestDriver,
l = &volumeStressTest{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
l.volumes = []*storageframework.VolumeResource{}
l.pods = []*v1.Pod{}
@ -187,7 +185,6 @@ func (t *volumeStressTestSuite) DefineTests(driver storageframework.TestDriver,
}
wg.Wait()
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}

View File

@ -90,8 +90,7 @@ func (t *volumeLimitsTestSuite) SkipUnsupportedTests(driver storageframework.Tes
func (t *volumeLimitsTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
testCleanup func()
config *storageframework.PerTestConfig
cs clientset.Interface
ns *v1.Namespace
@ -137,8 +136,7 @@ func (t *volumeLimitsTestSuite) DefineTests(driver storageframework.TestDriver,
l.ns = f.Namespace
l.cs = f.ClientSet
l.config, l.testCleanup = driver.PrepareTest(f)
defer l.testCleanup()
l.config = driver.PrepareTest(f)
ginkgo.By("Picking a node")
// Some CSI drivers are deployed to a single node (e.g csi-hostpath),
@ -255,8 +253,7 @@ func (t *volumeLimitsTestSuite) DefineTests(driver storageframework.TestDriver,
l.ns = f.Namespace
l.cs = f.ClientSet
l.config, l.testCleanup = driver.PrepareTest(f)
defer l.testCleanup()
l.config = driver.PrepareTest(f)
nodeNames := []string{}
if l.config.ClientNodeSelection.Name != "" {

View File

@ -116,7 +116,7 @@ func (t *volumeModeTestSuite) DefineTests(driver storageframework.TestDriver, pa
l.cs = f.ClientSet
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
}

View File

@ -93,14 +93,13 @@ func (t *volumePerformanceTestSuite) SkipUnsupportedTests(driver storageframewor
func (t *volumePerformanceTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
testCleanup func()
cs clientset.Interface
ns *v1.Namespace
scName string
pvcs []*v1.PersistentVolumeClaim
options *storageframework.PerformanceTestOptions
stopCh chan struct{}
config *storageframework.PerTestConfig
cs clientset.Interface
ns *v1.Namespace
scName string
pvcs []*v1.PersistentVolumeClaim
options *storageframework.PerformanceTestOptions
stopCh chan struct{}
}
var (
dInfo *storageframework.DriverInfo
@ -142,7 +141,6 @@ func (t *volumePerformanceTestSuite) DefineTests(driver storageframework.TestDri
ginkgo.By(fmt.Sprintf("Deleting Storage Class %s", l.scName))
err := l.cs.StorageV1().StorageClasses().Delete(context.TODO(), l.scName, metav1.DeleteOptions{})
framework.ExpectNoError(err)
l.testCleanup()
})
ginkgo.It("should provision volumes at scale within performance constraints [Slow] [Serial]", func() {
@ -151,7 +149,7 @@ func (t *volumePerformanceTestSuite) DefineTests(driver storageframework.TestDri
ns: f.Namespace,
options: dInfo.PerformanceTestOptions,
}
l.config, l.testCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
// Stats for volume provisioning operation
// TODO: Add stats for attach, resize and snapshot

View File

@ -36,7 +36,6 @@ import (
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2evolume "k8s.io/kubernetes/test/e2e/framework/volume"
storageframework "k8s.io/kubernetes/test/e2e/storage/framework"
storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
imageutils "k8s.io/kubernetes/test/utils/image"
admissionapi "k8s.io/pod-security-admission/api"
)
@ -118,8 +117,7 @@ func skipTestIfBlockNotSupported(driver storageframework.TestDriver) {
func (t *volumesTestSuite) DefineTests(driver storageframework.TestDriver, pattern storageframework.TestPattern) {
type local struct {
config *storageframework.PerTestConfig
driverCleanup func()
config *storageframework.PerTestConfig
resource *storageframework.VolumeResource
@ -137,7 +135,7 @@ func (t *volumesTestSuite) DefineTests(driver storageframework.TestDriver, patte
l = local{}
// Now do the more expensive test initialization.
l.config, l.driverCleanup = driver.PrepareTest(f)
l.config = driver.PrepareTest(f)
l.migrationCheck = newMigrationOpCheck(f.ClientSet, f.ClientConfig(), dInfo.InTreePluginName)
testVolumeSizeRange := t.GetTestSuiteInfo().SupportedSizeRange
l.resource = storageframework.CreateVolumeResource(driver, l.config, pattern, testVolumeSizeRange)
@ -153,8 +151,6 @@ func (t *volumesTestSuite) DefineTests(driver storageframework.TestDriver, patte
l.resource = nil
}
errs = append(errs, storageutils.TryFunc(l.driverCleanup))
l.driverCleanup = nil
framework.ExpectNoError(errors.NewAggregate(errs), "while cleaning up resource")
l.migrationCheck.validateMigrationVolumeOpCounts()
}