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"
}
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
~/go/bin/arvados-server install -type test || exit 1
echo "Launching arvados in test mode..."
+VOC_DIR=$(mktemp -d | cut -d \/ -f3) # Removes the /tmp/ part
+cp ${VOCABULARY_CONF} /tmp/${VOC_DIR}/voc.json
+sed -i "s/VocabularyPath: \".*\"/VocabularyPath: \"\/tmp\/${VOC_DIR}\/voc.json\"/" ${ARVADOS_CONF}
coproc arvboot (~/go/bin/arvados-server boot \
-type test \
-config ${ARVADOS_CONF} \
+ -no-workbench1 \
-own-temporary-database \
-timeout 20m 2> ${ARVADOS_LOG})
trap cleanup ERR EXIT
CYPRESS_system_token=systemusertesttoken1234567890aoeuidhtnsqjkxbmwvzpy \
CYPRESS_controller_url=${controllerURL} \
CYPRESS_BASE_URL=https://localhost:${WB2_PORT} \
- yarn run cypress run
+ yarn run cypress ${CYPRESS_MODE}