mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
Add an integration test for flannel-backend=none
Signed-off-by: Manuel Buil <mbuil@suse.com>
This commit is contained in:
parent
3b4f13f28d
commit
736fb2bc8d
2
.github/workflows/integration.yaml
vendored
2
.github/workflows/integration.yaml
vendored
@ -38,7 +38,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
itest: [certrotation, etcdrestore, localstorage, startup, custometcdargs, etcdsnapshot, kubeflags, longhorn, secretsencryption]
|
||||
itest: [certrotation, etcdrestore, localstorage, startup, custometcdargs, etcdsnapshot, kubeflags, longhorn, secretsencryption, flannelnone]
|
||||
max-parallel: 3
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
86
tests/integration/flannelnone/flannelnone_int_test.go
Normal file
86
tests/integration/flannelnone/flannelnone_int_test.go
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
This test verifies that even if we use flannel-backend=none, kube-api starts correctly so that it can
|
||||
accept the custom CNI plugin manifest. We want to catch regressions in which kube-api is unresponsive.
|
||||
To do so we check for 25s that we can consistently query kube-api. We check that pods are in pending
|
||||
state, which is what should happen if there is no cni plugin
|
||||
*/
|
||||
package integration
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
testutil "github.com/k3s-io/k3s/tests/integration"
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
var server *testutil.K3sServer
|
||||
var flannelNoneServerArgs = []string{
|
||||
"--flannel-backend=none",
|
||||
}
|
||||
var testLock int
|
||||
|
||||
var _ = BeforeSuite(func() {
|
||||
if !testutil.IsExistingServer() {
|
||||
var err error
|
||||
testLock, err = testutil.K3sTestLock()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
server, err = testutil.K3sStartServer(flannelNoneServerArgs...)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
})
|
||||
|
||||
var _ = Describe("flannel-backend=none", Ordered, func() {
|
||||
BeforeEach(func() {
|
||||
if testutil.IsExistingServer() && !testutil.ServerArgsPresent(flannelNoneServerArgs) {
|
||||
Skip("Test needs k3s server with: " + strings.Join(flannelNoneServerArgs, " "))
|
||||
}
|
||||
})
|
||||
When("Pods can be queried and their status is Pending", func() {
|
||||
It("checks pods status", func() {
|
||||
// Wait for pods to come up before running the real test
|
||||
Eventually(func() int {
|
||||
pods, _ := testutil.ParsePods("kube-system", metav1.ListOptions{})
|
||||
return len(pods)
|
||||
}, "180s", "5s").Should(BeNumerically(">", 0))
|
||||
|
||||
|
||||
pods, err := testutil.ParsePods("kube-system", metav1.ListOptions{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
// Pods should remain in Pending state because there is no network plugin
|
||||
Consistently(func () bool {
|
||||
for _, pod := range pods {
|
||||
if !strings.Contains(string(pod.Status.Phase), "Pending") {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}, "25s").Should(BeTrue())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
var failed bool
|
||||
var _ = AfterEach(func() {
|
||||
failed = failed || CurrentSpecReport().Failed()
|
||||
})
|
||||
|
||||
var _ = AfterSuite(func() {
|
||||
if !testutil.IsExistingServer() && os.Getenv("CI") != "true" {
|
||||
if failed {
|
||||
testutil.K3sSaveLog(server, false)
|
||||
}
|
||||
Expect(testutil.K3sKillServer(server)).To(Succeed())
|
||||
Expect(testutil.K3sCleanup(testLock, "")).To(Succeed())
|
||||
}
|
||||
})
|
||||
|
||||
func Test_Integrationflannelnone(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "flannel-backend=none Suite")
|
||||
}
|
Loading…
Reference in New Issue
Block a user