Skip to content

Commit

Permalink
feat: add bash script for local-test capsule
Browse files Browse the repository at this point in the history
Signed-off-by: Zemtsov Vladimir <[email protected]>
  • Loading branch information
Zemtsov Vladimir authored and prometherion committed Feb 15, 2023
1 parent fe4954f commit 7d17720
Showing 1 changed file with 145 additions and 0 deletions.
145 changes: 145 additions & 0 deletions hack/local-test-with-kind.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7d17720

Please sign in to comment.