mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
Improved guestbook.sh test to become actual test
After change test waits until pods come up and frotend starts serving content, then adds entry to guestbook and verify if operation succeed This fixes #3693
This commit is contained in:
parent
a3fd0a9fd5
commit
b1e2b2f4b4
@ -41,6 +41,36 @@ function teardown() {
|
||||
local REGION=${ZONE%-*}
|
||||
gcloud compute forwarding-rules delete -q --region ${REGION} "${INSTANCE_PREFIX}-default-frontend" || true
|
||||
gcloud compute target-pools delete -q --region ${REGION} "${INSTANCE_PREFIX}-default-frontend" || true
|
||||
gcloud compute firewall-rules delete guestbook-e2e-minion-8000 -q || true
|
||||
fi
|
||||
}
|
||||
|
||||
function wait_for_running() {
|
||||
echo "Waiting for pods to come up."
|
||||
local frontends master slaves pods all_running status i pod
|
||||
frontends=($(${KUBECTL} get pods -l name=frontend -o template '--template={{range.items}}{{.id}} {{end}}'))
|
||||
master=($(${KUBECTL} get pods -l name=redis-master -o template '--template={{range.items}}{{.id}} {{end}}'))
|
||||
slaves=($(${KUBECTL} get pods -l name=redis-slave -o template '--template={{range.items}}{{.id}} {{end}}'))
|
||||
pods=("${frontends[@]}" "${master[@]}" "${slaves[@]}")
|
||||
|
||||
all_running=0
|
||||
for i in {1..30}; do
|
||||
all_running=1
|
||||
for pod in "${pods[@]}"; do
|
||||
status=$(${KUBECTL} get pods "${pod}" -o template '--template={{.currentState.status}}') || true
|
||||
if [[ "$status" != "Running" ]]; then
|
||||
all_running=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ "${all_running}" == 1 ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
if [[ "${all_running}" == 0 ]]; then
|
||||
echo "Pods did not come up in time"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@ -48,21 +78,40 @@ prepare-e2e
|
||||
|
||||
trap "teardown" EXIT
|
||||
|
||||
echo "WARNING: this test is a no op that only attempts to launch guestbook resources."
|
||||
# Launch the guestbook example
|
||||
${KUBECTL} create -f "${GUESTBOOK}"
|
||||
|
||||
sleep 15
|
||||
# Verify that all pods are running
|
||||
wait_for_running
|
||||
|
||||
POD_LIST_1=$(${KUBECTL} get pods -o template '--template={{range.items}}{{.id}} {{end}}')
|
||||
echo "Pods running: ${POD_LIST_1}"
|
||||
if [[ "${KUBERNETES_PROVIDER}" == "gce" ]]; then
|
||||
gcloud compute firewall-rules create --allow=tcp:8000 --network="${NETWORK}" --target-tags="${MINION_TAG}" guestbook-e2e-minion-8000
|
||||
fi
|
||||
|
||||
# TODO make this an actual test. Open up a firewall and use curl to post and
|
||||
# read a message via the frontend
|
||||
# Add a new entry to the guestbook and verify that it was remembered
|
||||
frontend_addr=$(${KUBECTL} get service frontend -o template '--template={{range .publicIPs}}{{.}}{{end}}:{{.port}}')
|
||||
echo "Waiting for frontend to serve content"
|
||||
serving=0
|
||||
for i in {1..12}; do
|
||||
entry=$(curl "http://${frontend_addr}/index.php?cmd=get&key=messages") || true
|
||||
echo ${entry}
|
||||
if [[ "${entry}" == '{"data": ""}' ]]; then
|
||||
serving=1
|
||||
break
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
if [[ "${serving}" == 0 ]]; then
|
||||
echo "Pods did not start serving content in time"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${KUBECTL} stop -f "${GUESTBOOK}"
|
||||
curl "http://${frontend_addr}/index.php?cmd=set&key=messages&value=TestEntry"
|
||||
entry=$(curl "http://${frontend_addr}/index.php?cmd=get&key=messages")
|
||||
|
||||
POD_LIST_2=$(${KUBECTL} get pods -o template '--template={{range.items}}{{.id}} {{end}}')
|
||||
echo "Pods running after shutdown: ${POD_LIST_2}"
|
||||
if [[ "${entry}" != '{"data": "TestEntry"}' ]]; then
|
||||
echo "Wrong entry received: ${entry}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user