mirror of https://github.com/containers/podman.git
112 lines
3.2 KiB
Bash
112 lines
3.2 KiB
Bash
# -*- bash -*-
|
|
|
|
load ../system/helpers.bash
|
|
|
|
KUBECONFIG="$HOME/.kube/config"
|
|
|
|
##################
|
|
# run_minikube # Local helper, with instrumentation for debugging failures
|
|
##################
|
|
function run_minikube() {
|
|
# Number as first argument = expected exit code; default 0
|
|
local expected_rc=0
|
|
case "$1" in
|
|
[0-9]) expected_rc=$1; shift;;
|
|
[1-9][0-9]) expected_rc=$1; shift;;
|
|
[12][0-9][0-9]) expected_rc=$1; shift;;
|
|
'?') expected_rc= ; shift;; # ignore exit code
|
|
esac
|
|
|
|
# stdout is only emitted upon error; this printf is to help in debugging
|
|
printf "\n%s %s %s %s\n" "$(timestamp)" "\$" "minikube" "$*"
|
|
run minikube "$@"
|
|
# without "quotes", multiple lines are glommed together into one
|
|
if [[ -n "$output" ]]; then
|
|
echo "$(timestamp) $output"
|
|
fi
|
|
if [[ "$status" -ne 0 ]]; then
|
|
echo -n "$(timestamp) [ rc=$status ";
|
|
if [[ -n "$expected_rc" ]]; then
|
|
if [[ "$status" -eq "$expected_rc" ]]; then
|
|
echo -n "(expected) ";
|
|
else
|
|
echo -n "(** EXPECTED $expected_rc **) ";
|
|
fi
|
|
fi
|
|
echo "]"
|
|
fi
|
|
|
|
if [[ -n "$expected_rc" ]]; then
|
|
if [[ "$status" -ne "$expected_rc" ]]; then
|
|
# Further debugging
|
|
echo "\$ minikube logs"
|
|
run minikube logs
|
|
echo "$output"
|
|
|
|
die "exit code is $status; expected $expected_rc"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
function setup(){
|
|
# only set up the minikube cluster before the first test
|
|
if [[ "$BATS_TEST_NUMBER" -eq 1 ]]; then
|
|
run_minikube start
|
|
wait_for_default_sa
|
|
fi
|
|
basic_setup
|
|
}
|
|
|
|
function teardown(){
|
|
# only delete the minikube cluster if we are done with the last test
|
|
# the $DEBUG_MINIKUBE env can be set to preserve the cluster to debug if needed
|
|
if [[ "$BATS_TEST_NUMBER" -eq ${#BATS_TEST_NAMES[@]} ]] && [[ "$DEBUG_MINIKUBE" == "" ]]; then
|
|
run_minikube delete
|
|
fi
|
|
|
|
# Prevents nasty red warnings in log
|
|
run_podman rmi --ignore $(pause_image)
|
|
|
|
basic_teardown
|
|
}
|
|
|
|
function wait_for_default_sa(){
|
|
count=0
|
|
sa_ready=false
|
|
# timeout after 30 seconds
|
|
# if the default service account hasn't been created yet, there is something else wrong
|
|
while [[ $count -lt 30 ]] && [[ $sa_ready == false ]]
|
|
do
|
|
run_minikube kubectl get sa
|
|
if [[ "$output" != "No resources found in default namespace." ]]; then
|
|
sa_ready=true
|
|
fi
|
|
count=$((count + 1))
|
|
sleep 1
|
|
done
|
|
if [[ $sa_ready == false ]]; then
|
|
die "Timed out waiting for default service account to be created"
|
|
fi
|
|
}
|
|
|
|
function wait_for_pods_to_start(){
|
|
count=0
|
|
running=false
|
|
# timeout after 30 seconds
|
|
# if the pod hasn't started running after 30 seconds, there is something else wrong
|
|
while [[ $count -lt 30 ]] && [[ $running == false ]]
|
|
do
|
|
run_minikube kubectl get pods
|
|
assert "$status" -eq 0
|
|
if [[ "$output" =~ "Running" ]]; then
|
|
running=true
|
|
fi
|
|
count=$((count + 1))
|
|
sleep 1
|
|
done
|
|
if [[ $running == false ]]; then
|
|
die "Timed out waiting for pod to move to 'Running' state"
|
|
fi
|
|
}
|