summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh')
-rwxr-xr-xsrc/pybind/mgr/dashboard/run-frontend-e2e-tests.sh151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh b/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh
new file mode 100755
index 000000000..a481a983f
--- /dev/null
+++ b/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh
@@ -0,0 +1,151 @@
+#!/usr/bin/env bash
+
+set -e
+
+CLUSTERS=("1" "2")
+
+ceph() {
+ ${FULL_PATH_BUILD_DIR}/../src/mrun 1 ceph $@
+}
+
+ceph2() {
+ ${FULL_PATH_BUILD_DIR}/../src/mrun 2 ceph $@
+}
+
+ceph_all() {
+ ceph $@
+ ceph2 $@
+}
+
+start_ceph() {
+ cd $FULL_PATH_BUILD_DIR
+
+ for cluster in ${CLUSTERS[@]}; do
+ export CEPH_OUT_CLIENT_DIR=${FULL_PATH_BUILD_DIR}/run/${cluster}/out/client
+ MGR=2 RGW=1 ../src/mstart.sh $cluster -n -d
+ done
+
+ set -x
+
+ # Create an Object Gateway User
+ ceph_all dashboard set-rgw-credentials
+
+ # Set SSL verify to False
+ ceph_all dashboard set-rgw-api-ssl-verify False
+
+ CYPRESS_BASE_URL=$(ceph mgr services | jq -r .dashboard)
+ CYPRESS_CEPH2_URL=$(ceph2 mgr services | jq -r .dashboard)
+
+ # start rbd-mirror daemon in the cluster
+ KEY=$(ceph auth get client.admin --format=json | jq -r .[0].key)
+ MON_CLUSTER_1=$(grep "mon host" ${FULL_PATH_BUILD_DIR}/run/1/ceph.conf | awk '{print $4}')
+ ${FULL_PATH_BUILD_DIR}/bin/rbd-mirror --mon_host $MON_CLUSTER_1 --key $KEY -c ${FULL_PATH_BUILD_DIR}/run/1/ceph.conf
+
+ set +x
+}
+
+stop() {
+ if [ "$REMOTE" == "false" ]; then
+ cd ${FULL_PATH_BUILD_DIR}
+ for cluster in ${CLUSTERS[@]}; do
+ ../src/mstop.sh $cluster
+ done
+ pids=$(pgrep rbd-mirror)
+ if [ -n "$pids" ]; then
+ echo Killing rbd-mirror processes: $pids
+ kill -9 $pids
+ fi
+ fi
+ exit $1
+}
+
+check_device_available() {
+ failed=false
+
+ if [ "$DEVICE" == "docker" ]; then
+ [ -x "$(command -v docker)" ] || failed=true
+ else
+ cd $DASH_DIR/frontend
+ npx cypress verify
+
+ case "$DEVICE" in
+ chrome)
+ [ -x "$(command -v chrome)" ] || [ -x "$(command -v google-chrome)" ] ||
+ [ -x "$(command -v google-chrome-stable)" ] || failed=true
+ ;;
+ chromium)
+ [ -x "$(command -v chromium)" ] || [ -x "$(command -v chromium-browser)" ] || failed=true
+ ;;
+ esac
+ fi
+
+ if [ "$failed" = "true" ]; then
+ echo "ERROR: $DEVICE not found. You need to install $DEVICE or \
+ use a different device. Supported devices: chrome (default), chromium, electron or docker."
+ stop 1
+ fi
+}
+
+: ${CYPRESS_BASE_URL:=''}
+: ${CYPRESS_CEPH2_URL:=''}
+: ${CYPRESS_LOGIN_PWD:=''}
+: ${CYPRESS_LOGIN_USER:=''}
+: ${DEVICE:="chrome"}
+: ${NO_COLOR:=1}
+: ${CYPRESS_ARGS:=''}
+: ${REMOTE:='false'}
+
+while getopts 'd:p:r:u:' flag; do
+ case "${flag}" in
+ d) DEVICE=$OPTARG;;
+ p) CYPRESS_LOGIN_PWD=$OPTARG;;
+ r) REMOTE='true'
+ CYPRESS_BASE_URL=$OPTARG;;
+ u) CYPRESS_LOGIN_USER=$OPTARG;;
+ esac
+done
+
+DASH_DIR=`pwd`
+[ -z "$BUILD_DIR" ] && BUILD_DIR=build
+cd ../../../../${BUILD_DIR}
+FULL_PATH_BUILD_DIR=`pwd`
+
+[[ "$(command -v npm)" == '' ]] && . ${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/frontend/node-env/bin/activate
+
+: ${CYPRESS_CACHE_FOLDER:="${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/cypress"}
+
+export CYPRESS_BASE_URL CYPRESS_CACHE_FOLDER CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD NO_COLOR CYPRESS_CEPH2_URL
+
+check_device_available
+
+if [ "$CYPRESS_BASE_URL" == "" ]; then
+ start_ceph
+fi
+
+cd $DASH_DIR/frontend
+
+# Remove existing XML results
+rm -f cypress/reports/results-*.xml || true
+
+case "$DEVICE" in
+ docker)
+ failed=0
+ CYPRESS_VERSION=$(cat package.json | grep '"cypress"' | grep -o "[0-9]\.[0-9]\.[0-9]")
+ docker run \
+ -v $(pwd):/e2e \
+ -w /e2e \
+ --env CYPRESS_BASE_URL \
+ --env CYPRESS_LOGIN_USER \
+ --env CYPRESS_LOGIN_PWD \
+ --env CYPRESS_CEPH2_URL \
+ --name=e2e \
+ --network=host \
+ cypress/included:${CYPRESS_VERSION} || failed=1
+ stop $failed
+ ;;
+ *)
+ npx cypress run $CYPRESS_ARGS --browser $DEVICE --headless || stop 1
+ ;;
+esac
+
+stop 0