From 33c213577e81cd520eb0370e8ea95286ee900bcc Mon Sep 17 00:00:00 2001 From: Michelle Au Date: Tue, 13 Aug 2019 11:57:33 -0700 Subject: [PATCH] Skip preprovisioned and inline volume tests if driver supports dynamic provisioning. Also remove FS VolMode disruptive tests because they are already covered through the subpath disruptive test cases. Change-Id: Ice4b30b0d8fdcb1f7fd61e54d27f53557de9f13a --- test/e2e/storage/testpatterns/testpattern.go | 11 ++++++++++- test/e2e/storage/testsuites/base.go | 11 +++++++++++ test/e2e/storage/testsuites/disruptive.go | 11 ++++++----- test/e2e/storage/testsuites/ephemeral.go | 3 +++ test/e2e/storage/testsuites/multivolume.go | 4 ++++ test/e2e/storage/testsuites/provisioning.go | 3 +++ test/e2e/storage/testsuites/snapshottable.go | 3 +++ test/e2e/storage/testsuites/subpath.go | 6 ++++++ test/e2e/storage/testsuites/volume_expand.go | 3 +++ test/e2e/storage/testsuites/volume_io.go | 6 ++++++ test/e2e/storage/testsuites/volumemode.go | 3 +++ test/e2e/storage/testsuites/volumes.go | 4 ++-- 12 files changed, 60 insertions(+), 8 deletions(-) diff --git a/test/e2e/storage/testpatterns/testpattern.go b/test/e2e/storage/testpatterns/testpattern.go index a723e6dd52c..5aaa872c829 100644 --- a/test/e2e/storage/testpatterns/testpattern.go +++ b/test/e2e/storage/testpatterns/testpattern.go @@ -17,7 +17,7 @@ limitations under the License. package testpatterns import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" "k8s.io/kubernetes/test/e2e/framework/volume" ) @@ -233,3 +233,12 @@ var ( AllowExpansion: true, } ) + +// NewVolTypeMap creates a map with the given TestVolTypes enabled +func NewVolTypeMap(types ...TestVolType) map[TestVolType]bool { + m := map[TestVolType]bool{} + for _, t := range types { + m[t] = true + } + return m +} diff --git a/test/e2e/storage/testsuites/base.go b/test/e2e/storage/testsuites/base.go index 5393dde3c1f..9177483fe74 100644 --- a/test/e2e/storage/testsuites/base.go +++ b/test/e2e/storage/testsuites/base.go @@ -61,6 +61,8 @@ type TestSuite interface { // Called inside a Ginkgo context that reflects the current driver and test pattern, // so the test suite can define tests directly with ginkgo.It. defineTests(TestDriver, testpatterns.TestPattern) + // skipRedundantSuite will skip the test suite based on the given TestPattern and TestDriver + skipRedundantSuite(TestDriver, testpatterns.TestPattern) } // TestSuiteInfo represents a set of parameters for TestSuite @@ -90,6 +92,7 @@ func DefineTestSuite(driver TestDriver, tsInits []func() TestSuite) { ginkgo.Context(getTestNameStr(suite, p), func() { ginkgo.BeforeEach(func() { // Skip unsupported tests to avoid unnecessary resource initialization + suite.skipRedundantSuite(driver, p) skipUnsupportedTest(driver, p) }) suite.defineTests(driver, p) @@ -614,3 +617,11 @@ func validateMigrationVolumeOpCounts(cs clientset.Interface, pluginName string, // guarantees (as well as more informative metrics). } } + +// Skip skipVolTypes patterns if the driver supports dynamic provisioning +func skipVolTypePatterns(pattern testpatterns.TestPattern, driver TestDriver, skipVolTypes map[testpatterns.TestVolType]bool) { + _, supportsProvisioning := driver.(DynamicPVTestDriver) + if supportsProvisioning && skipVolTypes[pattern.VolType] { + framework.Skipf("Driver supports dynamic provisioning, skipping %s pattern", pattern.VolType) + } +} diff --git a/test/e2e/storage/testsuites/disruptive.go b/test/e2e/storage/testsuites/disruptive.go index 929582b426c..f401e4e60e0 100644 --- a/test/e2e/storage/testsuites/disruptive.go +++ b/test/e2e/storage/testsuites/disruptive.go @@ -18,7 +18,7 @@ package testsuites import ( "github.com/onsi/ginkgo" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/storage/testpatterns" @@ -38,20 +38,21 @@ func InitDisruptiveTestSuite() TestSuite { name: "disruptive", featureTag: "[Disruptive]", testPatterns: []testpatterns.TestPattern{ - testpatterns.DefaultFsInlineVolume, - testpatterns.FsVolModePreprovisionedPV, - testpatterns.FsVolModeDynamicPV, + // FSVolMode is already covered in subpath testsuite testpatterns.BlockVolModePreprovisionedPV, testpatterns.BlockVolModeDynamicPV, }, }, } } - func (s *disruptiveTestSuite) getTestSuiteInfo() TestSuiteInfo { return s.tsInfo } +func (s *disruptiveTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { + skipVolTypePatterns(pattern, driver, testpatterns.NewVolTypeMap(testpatterns.PreprovisionedPV)) +} + func (s *disruptiveTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/ephemeral.go b/test/e2e/storage/testsuites/ephemeral.go index ee9cfcbf71a..b6af252c54a 100644 --- a/test/e2e/storage/testsuites/ephemeral.go +++ b/test/e2e/storage/testsuites/ephemeral.go @@ -57,6 +57,9 @@ func (p *ephemeralTestSuite) getTestSuiteInfo() TestSuiteInfo { return p.tsInfo } +func (p *ephemeralTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { +} + func (p *ephemeralTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/multivolume.go b/test/e2e/storage/testsuites/multivolume.go index 46f8c3532f7..4767c0022d4 100644 --- a/test/e2e/storage/testsuites/multivolume.go +++ b/test/e2e/storage/testsuites/multivolume.go @@ -56,6 +56,10 @@ func (t *multiVolumeTestSuite) getTestSuiteInfo() TestSuiteInfo { return t.tsInfo } +func (t *multiVolumeTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { + skipVolTypePatterns(pattern, driver, testpatterns.NewVolTypeMap(testpatterns.PreprovisionedPV)) +} + func (t *multiVolumeTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/provisioning.go b/test/e2e/storage/testsuites/provisioning.go index aa7565243ce..30c3224fe27 100644 --- a/test/e2e/storage/testsuites/provisioning.go +++ b/test/e2e/storage/testsuites/provisioning.go @@ -81,6 +81,9 @@ func (p *provisioningTestSuite) getTestSuiteInfo() TestSuiteInfo { return p.tsInfo } +func (p *provisioningTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { +} + func (p *provisioningTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/snapshottable.go b/test/e2e/storage/testsuites/snapshottable.go index e4a4d586fcb..0a8a2f53c52 100644 --- a/test/e2e/storage/testsuites/snapshottable.go +++ b/test/e2e/storage/testsuites/snapshottable.go @@ -66,6 +66,9 @@ func (s *snapshottableTestSuite) getTestSuiteInfo() TestSuiteInfo { return s.tsInfo } +func (s *snapshottableTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { +} + func (s *snapshottableTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { var ( sDriver SnapshottableTestDriver diff --git a/test/e2e/storage/testsuites/subpath.go b/test/e2e/storage/testsuites/subpath.go index 4d23bef12c1..6542993b046 100644 --- a/test/e2e/storage/testsuites/subpath.go +++ b/test/e2e/storage/testsuites/subpath.go @@ -74,6 +74,12 @@ func (s *subPathTestSuite) getTestSuiteInfo() TestSuiteInfo { return s.tsInfo } +func (s *subPathTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { + skipVolTypePatterns(pattern, driver, testpatterns.NewVolTypeMap( + testpatterns.PreprovisionedPV, + testpatterns.InlineVolume)) +} + func (s *subPathTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/volume_expand.go b/test/e2e/storage/testsuites/volume_expand.go index 08b5d0dcc94..ae4457dc73f 100644 --- a/test/e2e/storage/testsuites/volume_expand.go +++ b/test/e2e/storage/testsuites/volume_expand.go @@ -64,6 +64,9 @@ func (v *volumeExpandTestSuite) getTestSuiteInfo() TestSuiteInfo { return v.tsInfo } +func (v *volumeExpandTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { +} + func (v *volumeExpandTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/volume_io.go b/test/e2e/storage/testsuites/volume_io.go index 3b4bfc25932..88c2c20309f 100644 --- a/test/e2e/storage/testsuites/volume_io.go +++ b/test/e2e/storage/testsuites/volume_io.go @@ -77,6 +77,12 @@ func (t *volumeIOTestSuite) getTestSuiteInfo() TestSuiteInfo { return t.tsInfo } +func (t *volumeIOTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { + skipVolTypePatterns(pattern, driver, testpatterns.NewVolTypeMap( + testpatterns.PreprovisionedPV, + testpatterns.InlineVolume)) +} + func (t *volumeIOTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/volumemode.go b/test/e2e/storage/testsuites/volumemode.go index 89dadb3ca73..afa4c73382e 100644 --- a/test/e2e/storage/testsuites/volumemode.go +++ b/test/e2e/storage/testsuites/volumemode.go @@ -60,6 +60,9 @@ func (t *volumeModeTestSuite) getTestSuiteInfo() TestSuiteInfo { return t.tsInfo } +func (t *volumeModeTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { +} + func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpatterns.TestPattern) { type local struct { config *PerTestConfig diff --git a/test/e2e/storage/testsuites/volumes.go b/test/e2e/storage/testsuites/volumes.go index 2bc6eb3c640..a26fcbc258b 100644 --- a/test/e2e/storage/testsuites/volumes.go +++ b/test/e2e/storage/testsuites/volumes.go @@ -26,7 +26,7 @@ import ( "github.com/onsi/ginkgo" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework/volume" @@ -78,7 +78,7 @@ func (t *volumesTestSuite) getTestSuiteInfo() TestSuiteInfo { return t.tsInfo } -func (t *volumesTestSuite) skipUnsupportedTest(pattern testpatterns.TestPattern, driver TestDriver) { +func (t *volumesTestSuite) skipRedundantSuite(driver TestDriver, pattern testpatterns.TestPattern) { } func skipExecTest(driver TestDriver) {