Commit b1e2b2f4 authored by Piotr Szczesniak's avatar Piotr Szczesniak

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
parent a3fd0a9f
...@@ -41,6 +41,36 @@ function teardown() { ...@@ -41,6 +41,36 @@ function teardown() {
local REGION=${ZONE%-*} local REGION=${ZONE%-*}
gcloud compute forwarding-rules delete -q --region ${REGION} "${INSTANCE_PREFIX}-default-frontend" || true 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 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 fi
} }
...@@ -48,21 +78,40 @@ prepare-e2e ...@@ -48,21 +78,40 @@ prepare-e2e
trap "teardown" EXIT trap "teardown" EXIT
echo "WARNING: this test is a no op that only attempts to launch guestbook resources."
# Launch the guestbook example # Launch the guestbook example
${KUBECTL} create -f "${GUESTBOOK}" ${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
# TODO make this an actual test. Open up a firewall and use curl to post and fi
# read a message via the frontend
# Add a new entry to the guestbook and verify that it was remembered
${KUBECTL} stop -f "${GUESTBOOK}" frontend_addr=$(${KUBECTL} get service frontend -o template '--template={{range .publicIPs}}{{.}}{{end}}:{{.port}}')
echo "Waiting for frontend to serve content"
POD_LIST_2=$(${KUBECTL} get pods -o template '--template={{range.items}}{{.id}} {{end}}') serving=0
echo "Pods running after shutdown: ${POD_LIST_2}" 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
curl "http://${frontend_addr}/index.php?cmd=set&key=messages&value=TestEntry"
entry=$(curl "http://${frontend_addr}/index.php?cmd=get&key=messages")
if [[ "${entry}" != '{"data": "TestEntry"}' ]]; then
echo "Wrong entry received: ${entry}"
exit 1
fi
exit 0 exit 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment