Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved guestbook.sh test to become actual test #5294

Merged
merged 1 commit into from
Mar 12, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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