#!/usr/bin/env bash # Script intended for running Deckhand functional tests via gabbi for # developers. Dependencies include gabbi, pifpaf and uwsgi. # # Usage: pifpaf run postgresql -- tools/functional-tests.sh set -xe CURRENT_DIR="$(pwd)" function cleanup_deckhand { set +e # Kill PostgreSQL if it is still running. pifpaf_stop || deactive # Kill uwsgi service if it is still running. PID=$( sudo netstat -tulpn | grep ":9000" | head -n 1 | awk '{print $NF}' ) if [ -n $PID ]; then PID=${PID%/*} sudo kill -9 $PID fi } trap cleanup_deckhand EXIT function deploy_deckhand { gen_config true "127.0.0.1:9000" gen_paste true log_section "Running Deckhand via uwsgi." source ${CURRENT_DIR}/entrypoint.sh alembic upgrade head & # Give time for migrations to complete. sleep 10 source ${CURRENT_DIR}/entrypoint.sh server & # Give the server a chance to come up. Better to poll a health check. sleep 10 } export AIRSHIP_DECKHAND_DATABASE_URL=${PIFPAF_POSTGRESQL_URL} # Deploy Deckhand and PostgreSQL and run tests. source ${CURRENT_DIR}/tools/common-tests.sh deploy_deckhand log_section "Running tests." export DECKHAND_TEST_DIR=${CURRENT_DIR}/deckhand/tests/functional/gabbits set +e posargs=$@ if [ ${#posargs} -ge 1 ]; then stestr --test-path deckhand/tests/common/ run --serial --slowest --force-subunit-trace --color $1 else stestr --test-path deckhand/tests/common/ run --serial --slowest --force-subunit-trace --color fi TEST_STATUS=$? set -e if [ "x$TEST_STATUS" = "x0" ]; then log_section Done SUCCESS else log_section Deckhand Server Log log_section Done FAILURE exit ${TEST_STATUS} fi