X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/855193b8c5ab28a2b82999b0f4911d17f874303b..7e05875bc2514dd4df0a1c566ebc634e8a2ae3b8:/tools/run-integration-tests.sh diff --git a/tools/run-integration-tests.sh b/tools/run-integration-tests.sh index 74476b8e..367ccecd 100755 --- a/tools/run-integration-tests.sh +++ b/tools/run-integration-tests.sh @@ -7,9 +7,12 @@ set -e -o pipefail cleanup() { set -x + set +e +o pipefail kill ${arvboot_PID} ${consume_stdout_PID} ${wb2_PID} ${consume_wb2_stdout_PID} wait ${arvboot_PID} ${consume_stdout_PID} ${wb2_PID} ${consume_wb2_stdout_PID} || true - rm -rf ${ARVADOS_DIR} + if [ ${CLEANUP_ARVADOS_DIR} -eq 1 ]; then + rm -rf ${ARVADOS_DIR} + fi echo >&2 "done" } @@ -21,20 +24,72 @@ random_free_port() { echo $port } +usage() { + echo "Usage: ${0} [options]" + echo "Options:" + echo " -i Run Cypress in interactive mode." + echo " -a PATH Arvados dir. If PATH doesn't exist, a repo clone is downloaded there." + echo " -w PATH Workbench2 dir. Default: Current working directory" + exit 0 +} + # Allow self-signed certs on 'wait-on' export NODE_TLS_REJECT_UNAUTHORIZED=0 -ARVADOS_DIR=`mktemp -d` -ARVADOS_LOG=${ARVADOS_DIR}/arvados.log +ARVADOS_DIR="unset" +CLEANUP_ARVADOS_DIR=0 +CYPRESS_MODE="run" WB2_DIR=`pwd` + +while getopts "ia:w:" o; do + case "${o}" in + i) + # Interactive mode + CYPRESS_MODE="open" + ;; + a) + ARVADOS_DIR=${OPTARG} + ;; + w) + WB2_DIR=${OPTARG} + ;; + *) + echo "Invalid Option: -$OPTARG" 1>&2 + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ "${ARVADOS_DIR}" = "unset" ]; then + echo "ARVADOS_DIR is unset, creating a temporary directory for new checkout" + ARVADOS_DIR=`mktemp -d` +fi + +echo "ARVADOS_DIR is ${ARVADOS_DIR}" + +ARVADOS_LOG=${ARVADOS_DIR}/arvados.log ARVADOS_CONF=${WB2_DIR}/tools/arvados_config.yml +VOCABULARY_CONF=${WB2_DIR}/tools/example-vocabulary.json + +if [ ! -f "${WB2_DIR}/src/index.tsx" ]; then + echo "ERROR: '${WB2_DIR}' isn't workbench2's directory" + usage +fi + +if [ ! -f ${ARVADOS_CONF} ]; then + echo "ERROR: Arvados config file ${ARVADOS_CONF} not found" + exit 1 +fi if [ -f "${WB2_DIR}/public/config.json" ]; then - echo "ERROR: Cannot run with Workbench2's public/config.json file" + echo "ERROR: Please move public/config.json file out of the way" exit 1 fi -if [ ! -d "${ARVADOS_DIR}/lib" ]; then +if [ ! -d "${ARVADOS_DIR}/.git" ]; then + mkdir -p ${ARVADOS_DIR} || exit 1 + CLEANUP_ARVADOS_DIR=1 echo "Downloading arvados..." git clone https://git.arvados.org/arvados.git ${ARVADOS_DIR} || exit 1 fi @@ -50,14 +105,22 @@ echo "Installing dev dependencies..." ~/go/bin/arvados-server install -type test || exit 1 echo "Launching arvados in test mode..." +TMPSUBDIR=$(mktemp -d -p /tmp | cut -d \/ -f3) # Removes the /tmp/ part for the regex below +TMPDIR=/tmp/${TMPSUBDIR} +cp ${VOCABULARY_CONF} ${TMPDIR}/voc.json +cp ${ARVADOS_CONF} ${TMPDIR}/arvados.yml +sed -i "s/VocabularyPath: \".*\"/VocabularyPath: \"\/tmp\/${TMPSUBDIR}\/voc.json\"/" ${TMPDIR}/arvados.yml coproc arvboot (~/go/bin/arvados-server boot \ -type test \ - -config ${ARVADOS_CONF} \ + -config ${TMPDIR}/arvados.yml \ + -no-workbench1 \ + -no-workbench2 \ -own-temporary-database \ -timeout 20m 2> ${ARVADOS_LOG}) trap cleanup ERR EXIT -read controllerURL <&"${arvboot[0]}" || exit 1 +read controllerInfo <&"${arvboot[0]}" || exit 1 +controllerURL=`echo "$controllerInfo" | awk '{print $1;}'`; echo "Arvados up and running at ${controllerURL}" IFS='/' ; read -ra controllerHostPort <<< "${controllerURL}" ; unset IFS controllerHostPort=${controllerHostPort[2]} @@ -82,4 +145,4 @@ echo "Running tests..." CYPRESS_system_token=systemusertesttoken1234567890aoeuidhtnsqjkxbmwvzpy \ CYPRESS_controller_url=${controllerURL} \ CYPRESS_BASE_URL=https://localhost:${WB2_PORT} \ - yarn run cypress run + yarn run cypress ${CYPRESS_MODE}