package
1.35.0-alpha.0
Repository: https://github.com/kubernetes/kubernetes.git
Documentation: pkg.go.dev

# README

This directory contains a testsuite with automatic upgrade/downgrade tests for DRA. Conceptually this is like an integration test, in the sense that it starts/stops cluster components and runs tests against them.

The difference is that it starts Kubernetes components by running the actual binaries, relying on local-up-cluster.sh for the logic and configuration steps. Because local-up-cluster.sh needs additional permissions and preparations on the host, the test cannot run in "make test-integration" and just skips itself there.

To run it:

  • Make sure that hack/local-up-cluster.sh works:

    • sudo must work
    • Set env variables as necessary for your environment.
  • Ensure that /var/lib/kubelet/plugins, /var/lib/kubelet/plugins_registry, and /var/run/cdi are writable.

  • Build binaries with make.

  • Export KUBERNETES_SERVER_BIN_DIR=$(pwd)/_output/local/bin/linux/amd64 (or whatever is your GOOS/GOARCH and output directory).

  • Optional: export KUBERNETES_SERVER_CACHE_DIR=$(pwd)/_output/local/bin/linx/amd64/cache-dir to reuse downloaded release binaries across test invocations.

  • Optional: set ARTIFACTS to store component log files persistently. Otherwise a test tmp directory is used.

  • Invoke as a Go test (no need for the ginkgo CLI), for example:

      go test -v -count=1 -timeout=1h ./test/e2e_dra -args -ginkgo.v
      dlv test ./test/e2e_dra -- -ginkgo.v
      make test KUBE_TIMEOUT=-timeout=1h WHAT=test/e2e_dra FULL_LOG=true KUBE_TEST_ARGS="-count=1 -args -ginkgo.v"
    

make test instead of make test-integration is intentional: local-up-cluster.sh itself wants to start etcd. -count=1 ensures that test runs each time it is invoked. -v and -ginkgo.v make the test output visible while the test runs.

To simplify starting from scratch, ./test/e2e_dra/run.sh cleans up, sets permissions, and then invokes whatever command is specified on the command line:

 ./test/e2e_dra/run.sh go test ./test/e2e_dra

The test is implemented as a Ginkgo suite because that allows reusing the same helper code as in E2E tests. Long-term the goal is to port that helper code to ktesting, support ktesting in test/e2e, and turn this test into a normal Go test.