e2e

package
v1.4.0-1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

README

End to End Testing in YuniKorn-K8shim

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 etc
  • test/e2e/framework/configManager manages & maintains the test and cluster configuration
  • test/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 etc

Pre-requisites

This 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

Understanding the Command Line Arguments

  • 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

Launching Tests

Trigger through CLI
  • Begin by installing a new cluster dedicated to testing, such as one named 'yktest'
$ ./scripts/run-e2e-tests.sh -a install -n yktest -v kindest/node:v1.28.0
  • Launching CI tests is as simple as below.
# We need to add a 'kind' prefix to the argument of the run-e2e-tests.sh -n command.

$ kubectl config use-context kind-yktest 
$ ginkgo -r -v ci -timeout=2h -- -yk-namespace "yunikorn" -kube-config "$HOME/.kube/config"
  • Launching all the tests can be done as.
$ ginkgo -r -v -timeout=2h -- -yk-namespace "yunikorn" -kube-config "$HOME/.kube/config"
  • Launching all the tests in specified e2e folder. e.g. test/e2e/user_group_limit/
$ cd test/e2e/
$ ginkgo -r user_group_limit -v -- -yk-namespace "yunikorn" -kube-config "$HOME/.kube/config"
  • Launching specified test. e.g. Run test with ginkgo.it() spec name "Verify_maxapplications_with_a_specific_group_limit"
$ cd test/e2e/
$ ginkgo run -r -v --focus "Verify_maxapplications_with_a_specific_group_limit" \
-- -yk-namespace "yunikorn" \
-kube-config "$HOME/.kube/config"
  • Delete the cluster after we finish testing (this step is optional).
$ ./scripts/run-e2e-tests.sh -a cleanup -n yktest

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AfterEach = ginkgo.AfterEach
View Source
var AfterSuite = ginkgo.AfterSuite
View Source
var BeEquivalentTo = gomega.BeEquivalentTo
View Source
var BeNil = gomega.BeNil
View Source
var BeforeEach = ginkgo.BeforeEach
View Source
var BeforeSuite = ginkgo.BeforeSuite
View Source
var By = ginkgo.By
View Source
var Describe = ginkgo.Describe
View Source
var Equal = gomega.Equal
View Source
var HaveOccurred = gomega.HaveOccurred
View Source
var It = ginkgo.It

Functions

func LogTestClusterInfoWrapper

func LogTestClusterInfoWrapper(testName string, namespaces []string)

func LogYunikornContainer

func LogYunikornContainer(testName string)

func RestoreConfigMapWrapper

func RestoreConfigMapWrapper(oldConfigMap *v1.ConfigMap, annotation string)

func UpdateConfigMapWrapper

func UpdateConfigMapWrapper(oldConfigMap *v1.ConfigMap, schedPolicy string, annotation string)

Types

This section is empty.

Directories

Path Synopsis
framework

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL