influxdb/e2e/scripts/containerTests.sh

141 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/env bash
APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")"
TEST_CONTAINER=bonitoo_e2e
INFLUX2_CONTAINER=influx2_solo
E2E_MAP_DIR=/tmp/e2e
INFLUX2_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" ${INFLUX2_CONTAINER})
INFLUX2_URL="http://${INFLUX2_HOST}:8086"
#TAGS="@influx-influx"
ACTIVE_CONF=development
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-t| --tags)
TAGS="$2"
shift; # past argument
shift; # past val
;;
-c| --config)
ACTIVE_CONF="$2"
shift;
shift;
;;
-b| --base)
BASE_DIR="$2"
shift;
shift;
esac
done
echo E2E_CLOUD_DEFAULT_USER_USERNAME = ${E2E_CLOUD_DEFAULT_USER_USERNAME}
echo Working from ${APP_ROOT}
DOCKER_TEST_CMD="npm test -- activeConf=${ACTIVE_CONF}"
if [[ -n "${TAGS}" ]]; then
DOCKER_TEST_CMD="${DOCKER_TEST_CMD} --tags ${TAGS}"
fi
if [[ -n "${BASE_DIR+x}" ]]; then
DOCKER_TEST_CMD="${DOCKER_TEST_CMD} ${BASE_DIR}"
fi
echo DOCKER_TEST_CMD = ${DOCKER_TEST_CMD}
if [ ${ACTIVE_CONF} = 'cloud' ]; then
echo configuring for cloud
if [ -z ${E2E_CLOUD_INFLUX_URL+x} ]; then
echo
echo E2E_CLOUD_INFLUX_URL is unset
echo But cloud configuration chosen
echo
echo Please set E2E_CLOUD_INFLUX_URL to use cloud configuration
exit 1
else
echo E2E_CLOUD_INFLUX_URL ${E2E_CLOUD_INFLUX_URL}
INFLUX2_URL=${E2E_CLOUD_INFLUX_URL}
fi
if [ -z ${E2E_CLOUD_DEFAULT_USER_PASSWORD} ]; then
echo
echo E2E_CLOUD_DEFAULT_USER_PASSWORD is unset
echo But cloud configuration chosen
echo
echo Please set E2E_CLOUD_DEFAULT_USER_PASSWORD to use cloud configuration
exit 1
fi
fi
echo "------ Targeting influx at ${INFLUX2_URL} ------"
# Tear down running test container
echo "----- Tearing down test container ${TEST_CONTAINER} ------"
if docker container inspect ${TEST_CONTAINER} > /dev/null 2>&1
then
if [ "$( docker container inspect -f '{{.State.Running}}' ${TEST_CONTAINER} )" == "true" ]; then
echo stopping ${TEST_CONTAINER}
sudo docker stop ${TEST_CONTAINER}
fi
echo removing ${TEST_CONTAINER}
sudo docker rm ${TEST_CONTAINER}
fi
# Ensure mapped dirs are current
echo "----- Ensuring linked dir for volumes is current ------"
if [ -L ${E2E_MAP_DIR}/etc ]; then
echo ${E2E_MAP_DIR}/etc is linked
echo removing ${E2E_MAP_DIR}
sudo rm -r ${E2E_MAP_DIR}
fi
sudo mkdir -p ${E2E_MAP_DIR}
echo linking ${APP_ROOT}/etc
sudo ln -s ${APP_ROOT}/etc ${E2E_MAP_DIR}/etc
echo "------ (Re)start Selenoid ------"
source ${APP_ROOT}/scripts/selenoid.sh
echo SELENOID_HOST is ${SELENOID_HOST}
# Rebuild and start test container
echo "----- Rebuilding test container ${TEST_CONTAINER} ------"
if [[ -d "$APP_ROOT/report" ]]; then
echo cleaning "$APP_ROOT/report"
sudo npm run clean
rm -rdf report
fi
DOCKER_ENVARS="-e SELENIUM_REMOTE_URL=http://${SELENOID_HOST}:4444/wd/hub -e E2E_${ACTIVE_CONF^^}_INFLUX_URL=${INFLUX2_URL}"
if [ -n ${E2E_CLOUD_DEFAULT_USER_PASSWORD} ]; then
DOCKER_ENVARS="${DOCKER_ENVARS} -e E2E_CLOUD_DEFAULT_USER_PASSWORD=${E2E_CLOUD_DEFAULT_USER_PASSWORD}"
fi
sudo docker build -t e2e-${TEST_CONTAINER} -f scripts/Dockerfile.tests .
sudo docker run -it -v `pwd`/report:/home/e2e/report -v `pwd`/screenshots:/home/e2e/screenshots \
-v /tmp/e2e/etc:/home/e2e/etc -v /tmp/e2e/downloads:/home/e2e/downloads \
${DOCKER_ENVARS} --detach \
--name ${TEST_CONTAINER} e2e-${TEST_CONTAINER}:latest
echo ACTIVE_CONF ${ACTIVE_CONF} BASE_DIR ${BASE_DIR} TAGS ${TAGS}
sudo docker exec ${TEST_CONTAINER} ${DOCKER_TEST_CMD}
sudo docker exec ${TEST_CONTAINER} npm run report:html
sudo docker exec ${TEST_CONTAINER} npm run report:junit
sudo docker stop ${TEST_CONTAINER}
sudo docker stop selenoid