From 79373b698e2a3b2d21b1e060e3d35039d30facbe Mon Sep 17 00:00:00 2001 From: Janet Kuo Date: Tue, 13 Sep 2016 17:25:19 -0700 Subject: [PATCH] Skip kubectl tests (create quota and exit code) on not supported versions --- test/e2e/framework/util.go | 10 ++++++++++ test/e2e/kubectl.go | 14 +++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 7b9fbc3f82e..e612c056fd2 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -1756,6 +1756,16 @@ func ServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface) (boo return sv.GTE(v), nil } +func SkipUnlessKubectlVersionGTE(v semver.Version) { + gte, err := KubectlVersionGTE(v) + if err != nil { + Failf("Failed to get kubectl version: %v", err) + } + if !gte { + Skipf("Not supported for kubectl versions before %q", v) + } +} + // KubectlVersionGTE returns true if the kubectl version is greater than or // equal to v. func KubectlVersionGTE(v semver.Version) (bool, error) { diff --git a/test/e2e/kubectl.go b/test/e2e/kubectl.go index 538c038aacf..7f7bfe48d4f 100644 --- a/test/e2e/kubectl.go +++ b/test/e2e/kubectl.go @@ -119,11 +119,19 @@ var ( // TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4). deploymentsVersion = version.MustParse("v1.2.0-alpha.7.726") - // Pod probe parameters were introduced in #15967 (v1.2) so we dont expect tests that use + // Pod probe parameters were introduced in #15967 (v1.2) so we don't expect tests that use // these probe parameters to work on clusters before that. // // TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4). podProbeParametersVersion = version.MustParse("v1.2.0-alpha.4") + + // 'kubectl create quota' was introduced in #28351 (v1.4) so we don't expect tests that use + // 'kubectl create quota' to work on kubectl clients before that. + kubectlCreateQuotaVersion = version.MustParse("v1.4.0-alpha.2") + + // Returning container command exit codes in kubectl run/exec was introduced in #26541 (v1.4) + // so we don't expect tests that verifies return code to work on kubectl clients before that. + kubectlContainerExitCodeVersion = version.MustParse("v1.4.0-alpha.3") ) // Stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped. @@ -351,6 +359,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() { }) It("should return command exit codes", func() { + framework.SkipUnlessKubectlVersionGTE(kubectlContainerExitCodeVersion) nsFlag := fmt.Sprintf("--namespace=%v", ns) By("execing into a container with a successful command") @@ -1316,6 +1325,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() { framework.KubeDescribe("Kubectl create quota", func() { It("should create a quota without scopes", func() { + framework.SkipUnlessKubectlVersionGTE(kubectlCreateQuotaVersion) nsFlag := fmt.Sprintf("--namespace=%v", ns) quotaName := "million" @@ -1345,6 +1355,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() { }) It("should create a quota with scopes", func() { + framework.SkipUnlessKubectlVersionGTE(kubectlCreateQuotaVersion) nsFlag := fmt.Sprintf("--namespace=%v", ns) quotaName := "scopes" @@ -1373,6 +1384,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() { }) It("should reject quota with invalid scopes", func() { + framework.SkipUnlessKubectlVersionGTE(kubectlCreateQuotaVersion) nsFlag := fmt.Sprintf("--namespace=%v", ns) quotaName := "scopes"