Skip to content

Commit

Permalink
Merge pull request kubernetes#5294 from piosz/guestbook_test
Browse files Browse the repository at this point in the history
Improved guestbook.sh test to become actual test
  • Loading branch information
filbranden committed Mar 12, 2015
2 parents a8f0139 + b1e2b2f commit a676a28
Showing 1 changed file with 62 additions and 13 deletions.
75 changes: 62 additions & 13 deletions hack/e2e-suite/guestbook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,28 +41,77 @@ 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
}

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

POD_LIST_1=$(${KUBECTL} get pods -o template '--template={{range.items}}{{.id}} {{end}}')
echo "Pods running: ${POD_LIST_1}"

# TODO make this an actual test. Open up a firewall and use curl to post and
# read a message via the frontend

${KUBECTL} stop -f "${GUESTBOOK}"

POD_LIST_2=$(${KUBECTL} get pods -o template '--template={{range.items}}{{.id}} {{end}}')
echo "Pods running after shutdown: ${POD_LIST_2}"
# Verify that all pods are running
wait_for_running

if [[ "${KUBERNETES_PROVIDER}" == "gce" ]]; then
gcloud compute firewall-rules create --allow=tcp:8000 --network="${NETWORK}" --target-tags="${MINION_TAG}" guestbook-e2e-minion-8000
fi

# 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

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

0 comments on commit a676a28

Please sign in to comment.