diff --git a/docker/smoke-test b/docker/smoke-test new file mode 100755 index 0000000..1676f1d --- /dev/null +++ b/docker/smoke-test @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +HERE=$(realpath "$(dirname $0)") +. $HERE/common + +wait_for() +{ + echo "waiting up to $TIMEOUT seconds for app" + start_ts=$(date +%s) + for i in $(seq $TIMEOUT); do + result="$(curl --write-out %{http_code} --silent --output /dev/null http://localhost:8888 2>/dev/null)" + if [[ $result -eq "200" ]]; then + end_ts=$(date +%s) + echo "App available after $((end_ts - start_ts)) seconds" + break + fi + sleep 1 + echo "...still waiting" + done + return $result +} + +docker run -d -p 8888:8888 $DOCKER_COMMIT_TAG + +# The variable expansion below is 60s by default, or the argument provided +# to this script +TIMEOUT="${1:-60}" +wait_for +RESULT=$? +if [[ $RESULT -ne 200 ]]; then + echo "App did not become available in time" + exit 1 +fi +exit 0