zfs-localpv/ci/ci-test.sh
Pawan 21045a5b1f feat(bdd): adding snapshot and clone releated test cases
added snapshot and clone related test cases. Also restructure
the BDD framework to loop through the supported fstypes and perfrom all
the test cases we have.

Signed-off-by: Pawan <pawan@mayadata.io>
2020-07-07 23:21:20 +05:30

132 lines
3.1 KiB
Bash
Executable file

# Copyright 2019 The OpenEBS Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#!/usr/bin/env bash
set -e
export OPENEBS_NAMESPACE="openebs"
export NodeID=$HOSTNAME
ZFS_OPERATOR=deploy/zfs-operator.yaml
SNAP_CLASS=deploy/sample/zfssnapclass.yaml
TEST_DIR="tests"
# Prepare env for runnging BDD tests
# Minikube is already running
kubectl apply -f $ZFS_OPERATOR
kubectl apply -f $SNAP_CLASS
dumpAgentLogs() {
NR=$1
AgentPOD=$(kubectl get pods -l app=openebs-zfs-node -o jsonpath='{.items[0].metadata.name}' -n kube-system)
kubectl describe po $AgentPOD -n kube-system
printf "\n\n"
kubectl logs --tail=${NR} $AgentPOD -n kube-system -c openebs-zfs-plugin
printf "\n\n"
}
dumpControllerLogs() {
NR=$1
ControllerPOD=$(kubectl get pods -l app=openebs-zfs-controller -o jsonpath='{.items[0].metadata.name}' -n kube-system)
kubectl describe po $ControllerPOD -n kube-system
printf "\n\n"
kubectl logs --tail=${NR} $ControllerPOD -n kube-system -c openebs-zfs-plugin
printf "\n\n"
}
isPodReady(){
[ "$(kubectl get po "$1" -o 'jsonpath={.status.conditions[?(@.type=="Ready")].status}' -n kube-system)" = 'True' ]
}
isDriverReady(){
for pod in $zfsDriver;do
isPodReady $pod || return 1
done
}
waitForZFSDriver() {
period=120
interval=1
i=0
while [ "$i" -le "$period" ]; do
zfsDriver="$(kubectl get pods -l role=openebs-zfs -o 'jsonpath={.items[*].metadata.name}' -n kube-system)"
if isDriverReady $zfsDriver; then
return 0
fi
i=$(( i + interval ))
echo "Waiting for zfs-driver to be ready..."
sleep "$interval"
done
echo "Waited for $period seconds, but all pods are not ready yet."
return 1
}
# wait for zfs-driver to be up
waitForZFSDriver
cd $TEST_DIR
kubectl get po -n kube-system
set +e
echo "running ginkgo test case"
ginkgo -v
if [ $? -ne 0 ]; then
sudo zpool status
sudo zfs list -t all
sudo zfs get all
echo "******************** ZFS Controller logs***************************** "
dumpControllerLogs 1000
echo "********************* ZFS Agent logs *********************************"
dumpAgentLogs 1000
echo "get all the pods"
kubectl get pods -owide --all-namespaces
echo "get pvc and pv details"
kubectl get pvc,pv -oyaml --all-namespaces
echo "get snapshot details"
kubectl get volumesnapshot.snapshot -oyaml --all-namespaces
echo "get sc details"
kubectl get sc --all-namespaces -oyaml
echo "get zfs volume details"
kubectl get zfsvolumes.zfs.openebs.io -n openebs -oyaml
echo "get zfs snapshot details"
kubectl get zfssnapshots.zfs.openebs.io -n openebs -oyaml
exit 1
fi
echo "\n\n######### All test cases passed #########\n\n"