Merge pull request #5294 from piosz/guestbook_test

Improved guestbook.sh test to become actual test
This commit is contained in:
Filipe Brandenburger 2015-03-12 07:42:06 -07:00
commit a676a28fe3

View File

@ -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