mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-02-14 09:59:57 +00:00
feat: add bash script for local-test capsule
Signed-off-by: Zemtsov Vladimir <zemtsov.v@mail366.com>
This commit is contained in:
committed by
Dario Tranchitella
parent
fe4954f39e
commit
7d1772031c
145
hack/local-test-with-kind.sh
Executable file
145
hack/local-test-with-kind.sh
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script test capsule with kind
|
||||
# Good to use it before pull request
|
||||
|
||||
USER=alice
|
||||
TENANT=oil
|
||||
GROUP=capsule.clastix.io
|
||||
KIND_CLUSTER_NAME=capsule-local-test
|
||||
|
||||
function error_action() {
|
||||
cleanup_action
|
||||
exit 1
|
||||
}
|
||||
|
||||
function cleanup_action() {
|
||||
kind delete cluster --name=${KIND_CLUSTER_NAME}
|
||||
rm -f ./tenant-test.yaml
|
||||
rm -f ${USER}-${TENANT}.crt
|
||||
rm -f ${USER}-${TENANT}.key
|
||||
rm -f ${USER}-${TENANT}.kubeconfig
|
||||
}
|
||||
|
||||
function check_command() {
|
||||
local command=$1
|
||||
|
||||
if ! command -v $command &> /dev/null; then
|
||||
echo "Error: ${command} not found"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_command kind
|
||||
check_command kubectl
|
||||
|
||||
### Prepare Kind cluster
|
||||
|
||||
echo `date`": INFO: Create Kind Cluster"
|
||||
error_create_kind=$(kind create cluster --name=${KIND_CLUSTER_NAME} 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": $error_create_kind"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Wait then Kind cluster be ready. Wait only 30 seconds"
|
||||
counter=0
|
||||
while true
|
||||
do
|
||||
if [ $counter == 30 ]; then
|
||||
echo `date`": ERROR: Kind cluster not ready for too long"
|
||||
error_action
|
||||
fi
|
||||
|
||||
kubectl get nodes | grep " Ready " &>/dev/null
|
||||
if [ $? == 0 ]; then
|
||||
break
|
||||
fi
|
||||
|
||||
((counter++))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo `date`": INFO: Kind cluster ready"
|
||||
|
||||
### Install helm capsule to Kind
|
||||
|
||||
echo `date`": INFO: Install helm capsule"
|
||||
error_install_helm=$(helm install capsule ./charts/capsule/ -n capsule-system --create-namespace 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": $error_install_helm"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Wait then capsule POD be ready. Wait only 30 seconds"
|
||||
counter=0
|
||||
while true
|
||||
do
|
||||
if [ $counter == 30 ]; then
|
||||
echo `date`": ERROR: Kind cluster not ready for too long"
|
||||
error_action
|
||||
fi
|
||||
|
||||
kubectl get pod -n capsule-system | grep " Running " &>/dev/null
|
||||
if [ $? == 0 ]; then
|
||||
break
|
||||
fi
|
||||
|
||||
((counter++))
|
||||
sleep 1
|
||||
done
|
||||
sleep 5
|
||||
|
||||
echo `date`": INFO: Capsule ready"
|
||||
|
||||
### Tests
|
||||
|
||||
echo `date`": INFO: Create tenant"
|
||||
cat >>./tenant-test.yaml<<EOF
|
||||
apiVersion: capsule.clastix.io/v1beta2
|
||||
kind: Tenant
|
||||
metadata:
|
||||
name: ${TENANT}
|
||||
spec:
|
||||
owners:
|
||||
- name: ${USER}
|
||||
kind: User
|
||||
EOF
|
||||
|
||||
error_create_tenant=$(kubectl create -f ./tenant-test.yaml 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": $error_create_tenant"
|
||||
error_action
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Check tenant exist"
|
||||
error_check_tenant=$(kubectl get tenant ${TENANT} 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": ERROR: $error_check_tenant"
|
||||
error_action
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Create user ${USER} for tenant ${TENANT}"
|
||||
error_create_user=$(./hack/create-user.sh ${USER} ${TENANT} 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": ERROR: $error_create_user"
|
||||
error_action
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Create namespace from tenant user"
|
||||
error_create_namespace=$(kubectl --kubeconfig=${USER}-${TENANT}.kubeconfig create ns ${TENANT}-test 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": ERROR: $error_create_namespace"
|
||||
error_action
|
||||
fi
|
||||
|
||||
echo `date`": INFO: Check namespace exist in tenant"
|
||||
error_tenant=$(kubectl get tenant ${TENANT} -o yaml | grep namespaces -A1 | grep ${TENANT}-test 2>&1)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo `date`": ERROR: $error_tenant"
|
||||
error_action
|
||||
fi
|
||||
|
||||
echo `date`": INFO: All ok"
|
||||
|
||||
cleanup_action
|
||||
Reference in New Issue
Block a user