End-to-end (e2e) tests for YuniKorn-K8shim provide a mechanism to test end-to-end behavior of the system, and is the last signal to ensure end user operations match developer specifications.
The primary objectives of the e2e tests are to ensure a consistent and reliable behavior of the yunikorn code base, and to catch hard-to-test bugs before users do, when unit and integration tests are insufficient.
The e2e tests are built atop of Ginkgo and Gomega. There are a host of features that this Behavior-Driven Development (BDD) testing framework provides, and it is recommended that the developer read the documentation prior to diving into the tests.
Below is the structure of the project.
test/e2e/
contains tests for YuniKorn Features like Scheduling, Predicates etctest/e2e/framework/configManager
manages & maintains the test and cluster configurationtest/e2e/framework/helpers
contains utility modules for k8s client, (de)serializers, rest api client and other common libraries.test/e2e/testdata
contains all the test related data like configmaps, pod specs etcThis project requires Go to be installed. On OS X with Homebrew you can just run brew install go
. OR follow this doc for deploying go https://golang.org/doc/install
yk-namespace
- namespace under which YuniKorn is deployed. [Required]kube-config
- path to kube config file, needed for k8s client [Required]yk-host
- hostname of the YuniKorn REST Server, defaults to localhost.yk-port
- port number of the YuniKorn REST Server, defaults to 9080.yk-scheme
- scheme of the YuniKorn REST Server, defaults to http.timeout
- timeout for all tests, defaults to 24 hours$ kubectl config use-context <<cluster-under-test-context>> $ ginkgo -r -v CI -timeout=2h -- -yk-namespace "yunikorn" -kube-config "$HOME/.kube/config"
$ ginkgo -r -v -timeout=2h -- -yk-namespace "yunikorn" -kube-config "$HOME/.kube/config"