mirror of https://github.com/k3s-io/k3s
Skip kubectl tests that don't work before v1.1 when running against a pre-v1.1 cluster; fixes #18581
parent
348858061d
commit
14e6910364
|
@ -46,6 +46,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
"k8s.io/kubernetes/pkg/version"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
|
@ -73,7 +74,27 @@ const (
|
||||||
runJobTimeout = 5 * time.Minute
|
runJobTimeout = 5 * time.Minute
|
||||||
)
|
)
|
||||||
|
|
||||||
var proxyRegexp = regexp.MustCompile("Starting to serve on 127.0.0.1:([0-9]+)")
|
var (
|
||||||
|
proxyRegexp = regexp.MustCompile("Starting to serve on 127.0.0.1:([0-9]+)")
|
||||||
|
|
||||||
|
// Extended pod logging options were introduced in #13780 (v1.1.0) so we don't expect tests
|
||||||
|
// that rely on extended pod logging options to work on clusters before that.
|
||||||
|
//
|
||||||
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
|
extendedPodLogFilterVersion = version.MustParse("v1.1.0")
|
||||||
|
|
||||||
|
// NodePorts were made optional in #12831 (v1.1.0) so we don't expect tests that used to
|
||||||
|
// require NodePorts but no longer include them to work on clusters before that.
|
||||||
|
//
|
||||||
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
|
nodePortsOptionalVersion = version.MustParse("v1.1.0")
|
||||||
|
|
||||||
|
// Jobs were introduced in v1.1, so we don't expect tests that rely on jobs to work on
|
||||||
|
// clusters before that.
|
||||||
|
//
|
||||||
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
|
jobsVersion = version.MustParse("v1.1.0")
|
||||||
|
)
|
||||||
|
|
||||||
var _ = Describe("Kubectl client", func() {
|
var _ = Describe("Kubectl client", func() {
|
||||||
defer GinkgoRecover()
|
defer GinkgoRecover()
|
||||||
|
@ -133,6 +154,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should create and stop a working application [Conformance]", func() {
|
It("should create and stop a working application [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(nodePortsOptionalVersion, c)
|
||||||
|
|
||||||
defer cleanup(guestbookPath, ns, frontendSelector, redisMasterSelector, redisSlaveSelector)
|
defer cleanup(guestbookPath, ns, frontendSelector, redisMasterSelector, redisSlaveSelector)
|
||||||
|
|
||||||
By("creating all guestbook components")
|
By("creating all guestbook components")
|
||||||
|
@ -409,6 +432,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should support inline execution and attach", func() {
|
It("should support inline execution and attach", func() {
|
||||||
|
SkipUnlessServerVersionGTE(jobsVersion, c)
|
||||||
|
|
||||||
nsFlag := fmt.Sprintf("--namespace=%v", ns)
|
nsFlag := fmt.Sprintf("--namespace=%v", ns)
|
||||||
|
|
||||||
By("executing a command with run and attach with stdin")
|
By("executing a command with run and attach with stdin")
|
||||||
|
@ -524,6 +549,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
|
|
||||||
Describe("Kubectl describe", func() {
|
Describe("Kubectl describe", func() {
|
||||||
It("should check if kubectl describe prints relevant information for rc and pods [Conformance]", func() {
|
It("should check if kubectl describe prints relevant information for rc and pods [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(nodePortsOptionalVersion, c)
|
||||||
|
|
||||||
mkpath := func(file string) string {
|
mkpath := func(file string) string {
|
||||||
return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
|
return filepath.Join(testContext.RepoRoot, "examples/guestbook-go", file)
|
||||||
}
|
}
|
||||||
|
@ -742,6 +769,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should be able to retrieve and filter logs [Conformance]", func() {
|
It("should be able to retrieve and filter logs [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(extendedPodLogFilterVersion, c)
|
||||||
|
|
||||||
forEachPod(c, ns, "app", "redis", func(pod api.Pod) {
|
forEachPod(c, ns, "app", "redis", func(pod api.Pod) {
|
||||||
By("checking for a matching strings")
|
By("checking for a matching strings")
|
||||||
_, err := lookForStringInLog(ns, pod.Name, containerName, "The server is now ready to accept connections", podStartTimeout)
|
_, err := lookForStringInLog(ns, pod.Name, containerName, "The server is now ready to accept connections", podStartTimeout)
|
||||||
|
@ -881,6 +910,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should create a job from an image when restart is OnFailure [Conformance]", func() {
|
It("should create a job from an image when restart is OnFailure [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(jobsVersion, c)
|
||||||
|
|
||||||
image := "nginx"
|
image := "nginx"
|
||||||
|
|
||||||
By("running the image " + image)
|
By("running the image " + image)
|
||||||
|
@ -900,6 +931,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should create a job from an image when restart is Never [Conformance]", func() {
|
It("should create a job from an image when restart is Never [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(jobsVersion, c)
|
||||||
|
|
||||||
image := "nginx"
|
image := "nginx"
|
||||||
|
|
||||||
By("running the image " + image)
|
By("running the image " + image)
|
||||||
|
@ -925,6 +958,8 @@ var _ = Describe("Kubectl client", func() {
|
||||||
jobName := "e2e-test-rm-busybox-job"
|
jobName := "e2e-test-rm-busybox-job"
|
||||||
|
|
||||||
It("should create a job from an image, then delete the job [Conformance]", func() {
|
It("should create a job from an image, then delete the job [Conformance]", func() {
|
||||||
|
SkipUnlessServerVersionGTE(jobsVersion, c)
|
||||||
|
|
||||||
By("executing a command with run --rm and attach with stdin")
|
By("executing a command with run --rm and attach with stdin")
|
||||||
t := time.NewTimer(runJobTimeout)
|
t := time.NewTimer(runJobTimeout)
|
||||||
defer t.Stop()
|
defer t.Stop()
|
||||||
|
|
|
@ -290,6 +290,16 @@ func providerIs(providers ...string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SkipUnlessServerVersionGTE(v semver.Version, c client.ServerVersionInterface) {
|
||||||
|
gte, err := serverVersionGTE(v, c)
|
||||||
|
if err != nil {
|
||||||
|
Failf("Failed to get server version: %v", err)
|
||||||
|
}
|
||||||
|
if !gte {
|
||||||
|
Skipf("Not supported for server versions before %q", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// providersWithSSH are those providers where each node is accessible with SSH
|
// providersWithSSH are those providers where each node is accessible with SSH
|
||||||
var providersWithSSH = []string{"gce", "gke", "aws"}
|
var providersWithSSH = []string{"gce", "gke", "aws"}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue