The yaml validation of the examples folder requires all the CRDs to be created in advance of the dry-run command. Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
Rook Test Framework
The Rook Test Framework is used to run end to end and integration tests on Rook. The framework depends on a running instance of Kubernetes. The framework also provides scripts for starting Kubernetes so users can quickly spin up a Kubernetes cluster. The Test framework is designed to install Rook, run tests, and uninstall Rook.
Install Kubernetes
You can choose any Kubernetes install of your choice. The test framework only depends on kubectl being configured.
An optional helper script is provided to install Kubernetes with minikube.
Minikube
Starting the cluster on Minikube is as simple as running:
tests/scripts/minikube.sh up
To copy Rook images generated from your local build into the Minikube VM, run the following commands after minikube.sh up succeeded:
tests/scripts/minikube.sh update
tests/scripts/minikube.sh helm
Stopping the cluster and destroying the Minikube VM can be done with:
tests/scripts/minikube.sh clean
For faster iteration during development, take a snapshot of the fresh minikube VM and then reset the VM each time you need a clean environment.
Install Helm
Use helm.sh to install Helm and set up Rook charts defined under _output/charts (generated by build):
- To install and set up Helm charts for Rook run
tests/scripts/helm.sh up. - To clean up
tests/scripts/helm.sh clean.
NOTE: These helper scripts depend on some artifacts under the _output/ directory generated during build time.
These scripts should be run from the project root. e.g., tests/script/minikube.sh up.
NOTE: If Helm is not available in your PATH, Helm will be downloaded to a temporary directory (/tmp/rook-tests-scripts-helm) and used from that directory.
Run Tests
From the project root do the following after bringing up your Kubernetes cluster such as minikube:
1. Build rook
make build
2. Start Kubernetes
Start the minikube cluster and copy the local build into minikube:
tests/scripts/minikube.sh up
3. Run integration tests
Some settings are available to run the tests under different environments. The settings are all configured with environment variables. See environment.go for the available environment variables. At least you should set the following variables.
export TEST_HELM_PATH=/tmp/rook-tests-scripts-helm/linux-amd64/helm
export TEST_BASE_DIR=WORKING_DIR
export TEST_SCRATCH_DEVICE=<block device> # for example, TEST_SCRATCH_DEVICE=/dev/sdb
Please note that the integration tests erase the contents of TEST_SCRATCH_DEVICE.
To run all integration tests:
go test -v -timeout 7200s github.com/rook/rook/tests/integration
After running tests, you can get test logs under "tests/integration/_output".
To run a specific suite (uses regex):
go test -v -timeout 1800s -run CephSmokeSuite github.com/rook/rook/tests/integration
To run specific tests inside a suite:
go test -v -timeout 1800s -run CephSmokeSuite github.com/rook/rook/tests/integration -testify.m TestARookClusterInstallation_SmokeTest
To run tests on OpenShift environment
- Setup OpenShift environment and export KUBECONFIG before executing the tests.
- Make sure
ocexecutable file is in the PATH. - Only
CephSmokeSuiteis currently supported on OpenShift. - Set few environment variables:
export TEST_ENV_NAME=openshift
export TEST_STORAGE_CLASS=gp2
export TEST_BASE_DIR=/tmp
export RETRY_MAX=40
To run the CephSmokeSuite:
go test -v -timeout 1800s -run CephSmokeSuite github.com/rook/rook/tests/integration