ceph-csi/e2e
ShyamsundarR c5762b6b5c Modify RBD plugin to use a single ID and move the id and key into the secret
RBD plugin needs only a single ID to manage images and operations against a
pool, mentioned in the storage class. The current scheme of 2 IDs is hence not
needed and removed in this commit.

Further, unlike CephFS plugin, the RBD plugin splits the user id and the key
into the storage class and the secret respectively. Also the parameter name
for the key in the secret is noted in the storageclass making it a variant and
hampers usability/comprehension. This is also fixed by moving the id and the key
to the secret and not retaining the same in the storage class, like CephFS.

Fixes #270

Testing done:
- Basic PVC creation and mounting

Signed-off-by: ShyamsundarR <srangana@redhat.com>
2019-06-24 13:46:14 +00:00
..
cephfs.go Migrate from framwork.Logf and also use new nsenter interface 2019-06-24 13:08:29 +00:00
deploy-rook.go Migrate from framwork.Logf and also use new nsenter interface 2019-06-24 13:08:29 +00:00
e2e_test.go Add code to test snapshot,pvc clone and pvc block mode 2019-06-23 11:53:37 +00:00
rbd.go Migrate from framwork.Logf and also use new nsenter interface 2019-06-24 13:08:29 +00:00
README.md Add readme to deploy kubernetes and 2019-06-04 11:39:42 +05:30
utils.go Modify RBD plugin to use a single ID and move the id and key into the secret 2019-06-24 13:46:14 +00:00

End-to-End Testing

Introduction

End-to-end (e2e) in cephcsi provides a mechanism to test the end-to-end behavior of the system, These tests will interact with live instances of ceph cluster just like how a user would.

The primary objectives of the e2e tests are to ensure a consistent and reliable behavior of the cephcsi code base and to catch hard-to-test bugs before users do when unit and integration tests are insufficient.

The Test framework is designed to install Rook, run cephcsi tests, and uninstall Rook.

The e2e test are built on top of Ginkgo and Gomega

Install Kubernetes

The cephcsi also provides a script for starting Kubernetes using minikube so users can quickly spin up a Kubernetes cluster.

the following parameters are available to configure kubernetes cluster

flag description
up Starts a local kubernetes cluster and prepare a disk for rook
down Stops a running local kubernetes cluster
clean Deletes a local kubernetes cluster
ssh Log into or run a command on a minikube machine with SSH
cephcsi Copy built docker images to kubernetes cluster
k8s-sidecar Copy kubernetes sidecar docker images to kubernetes cluster

following environment variables can be exported to customize kubernetes deployment

ENV Description Default
MINIKUBE_VERSION minikube version to install latest
KUBE_VERSION kubernetes version to install v1.13.0
MEMORY Amount of RAM allocated to the minikube VM in MB 3000
VM_DRIVER VM driver to create virtual machine virtualbox
CEPHCSI_IMAGE_REPO Repo URL to pull cephcsi images quay.io/cephcsi
K8S_IMAGE_REPO Repo URL to pull kubernetes sidecar images quay.io/k8scsi
K8S_FEATURE_GATES Feature gates to enable on kubernetes cluster BlockVolume=true,CSIBlockVolume=true,VolumeSnapshotDataSource=true
  • creating kubernetes cluster
$./minikube.sh up
  • Teardown kubernetes cluster
$./minikube.sh clean

Test parameters

In addition to standard go tests parameters, the following custom parameters are available while running tests:

flag description
rook-version Rook version to pull yaml files to deploy rook operator (default: master)
deploy-rook Deploy rook operator to create ceph cluster (default: true)
deploy-timeout Timeout to wait for created kubernetes resources (default: 10)
kubeconfig Path to kubeconfig containing embedded authinfo (default: $HOME/.kube/config)
timeout Panic test binary after duration d (default 0, timeout disabled)
v Verbose: print additional output

Running E2E

Note:- Prior to running the tests, you may need to copy the kubernetes configuration file to$HOME/.kube/configwhich is required to communicate with kubernetes cluster or you can passkubeconfigflag while running tests.

Functional tests are run by the go test command.

$go test ./e2e/ --rook-version="v1.0.1" --deploy-rook=true -timeout=20m -v

Functional tests can be invoked by make command

$make func-test TESTOPTIONS="--rook-version=v1.0.1 --deploy-rook=true --deploy-timeout=10  -timeout=30m -v"