]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh
update ceph source to reef 18.2.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / run-frontend-e2e-tests.sh
CommitLineData
11fdf7f2
TL
1#!/usr/bin/env bash
2
3set -e
4
1e59de90
TL
5CLUSTERS=("1" "2")
6
7ceph() {
8 ${FULL_PATH_BUILD_DIR}/../src/mrun 1 ceph $@
9}
10
11ceph2() {
12 ${FULL_PATH_BUILD_DIR}/../src/mrun 2 ceph $@
13}
14
15ceph_all() {
16 ceph $@
17 ceph2 $@
18}
19
e306af50
TL
20start_ceph() {
21 cd $FULL_PATH_BUILD_DIR
22
1e59de90
TL
23 for cluster in ${CLUSTERS[@]}; do
24 export CEPH_OUT_CLIENT_DIR=${FULL_PATH_BUILD_DIR}/run/${cluster}/out/client
25 MGR=2 RGW=1 ../src/mstart.sh $cluster -n -d
26 done
e306af50 27
522d829b
TL
28 set -x
29
e306af50 30 # Create an Object Gateway User
1e59de90 31 ceph_all dashboard set-rgw-credentials
20effc67 32
e306af50 33 # Set SSL verify to False
1e59de90
TL
34 ceph_all dashboard set-rgw-api-ssl-verify False
35
36 CYPRESS_BASE_URL=$(ceph mgr services | jq -r .dashboard)
37 CYPRESS_CEPH2_URL=$(ceph2 mgr services | jq -r .dashboard)
e306af50 38
1e59de90
TL
39 # start rbd-mirror daemon in the cluster
40 KEY=$(ceph auth get client.admin --format=json | jq -r .[0].key)
41 MON_CLUSTER_1=$(grep "mon host" ${FULL_PATH_BUILD_DIR}/run/1/ceph.conf | awk '{print $4}')
42 ${FULL_PATH_BUILD_DIR}/bin/rbd-mirror --mon_host $MON_CLUSTER_1 --key $KEY -c ${FULL_PATH_BUILD_DIR}/run/1/ceph.conf &
522d829b
TL
43
44 set +x
e306af50
TL
45}
46
11fdf7f2
TL
47stop() {
48 if [ "$REMOTE" == "false" ]; then
9f95a23c 49 cd ${FULL_PATH_BUILD_DIR}
1e59de90
TL
50 for cluster in ${CLUSTERS[@]}; do
51 ../src/mstop.sh $cluster
52 done
11fdf7f2
TL
53 fi
54 exit $1
55}
56
e306af50
TL
57check_device_available() {
58 failed=false
59
60 if [ "$DEVICE" == "docker" ]; then
61 [ -x "$(command -v docker)" ] || failed=true
62 else
63 cd $DASH_DIR/frontend
64 npx cypress verify
65
66 case "$DEVICE" in
67 chrome)
68 [ -x "$(command -v chrome)" ] || [ -x "$(command -v google-chrome)" ] ||
69 [ -x "$(command -v google-chrome-stable)" ] || failed=true
70 ;;
71 chromium)
72 [ -x "$(command -v chromium)" ] || [ -x "$(command -v chromium-browser)" ] || failed=true
73 ;;
74 esac
75 fi
76
77 if [ "$failed" = "true" ]; then
78 echo "ERROR: $DEVICE not found. You need to install $DEVICE or \
79 use a different device. Supported devices: chrome (default), chromium, electron or docker."
80 stop 1
81 fi
82}
83
84: ${CYPRESS_BASE_URL:=''}
1e59de90 85: ${CYPRESS_CEPH2_URL:=''}
e306af50
TL
86: ${CYPRESS_LOGIN_PWD:=''}
87: ${CYPRESS_LOGIN_USER:=''}
88: ${DEVICE:="chrome"}
89: ${NO_COLOR:=1}
90: ${CYPRESS_ARGS:=''}
91: ${REMOTE:='false'}
11fdf7f2 92
9f95a23c 93while getopts 'd:p:r:u:' flag; do
11fdf7f2
TL
94 case "${flag}" in
95 d) DEVICE=$OPTARG;;
e306af50 96 p) CYPRESS_LOGIN_PWD=$OPTARG;;
11fdf7f2 97 r) REMOTE='true'
e306af50
TL
98 CYPRESS_BASE_URL=$OPTARG;;
99 u) CYPRESS_LOGIN_USER=$OPTARG;;
11fdf7f2
TL
100 esac
101done
102
11fdf7f2 103DASH_DIR=`pwd`
9f95a23c 104[ -z "$BUILD_DIR" ] && BUILD_DIR=build
9f95a23c
TL
105cd ../../../../${BUILD_DIR}
106FULL_PATH_BUILD_DIR=`pwd`
11fdf7f2 107
20effc67 108[[ "$(command -v npm)" == '' ]] && . ${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/frontend/node-env/bin/activate
11fdf7f2 109
e306af50 110: ${CYPRESS_CACHE_FOLDER:="${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/cypress"}
11fdf7f2 111
1e59de90 112export CYPRESS_BASE_URL CYPRESS_CACHE_FOLDER CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD NO_COLOR CYPRESS_CEPH2_URL
e306af50
TL
113
114check_device_available
11fdf7f2 115
e306af50
TL
116if [ "$CYPRESS_BASE_URL" == "" ]; then
117 start_ceph
118fi
9f95a23c 119
11fdf7f2 120cd $DASH_DIR/frontend
11fdf7f2 121
f67539c2
TL
122# Remove existing XML results
123rm -f cypress/reports/results-*.xml || true
124
e306af50
TL
125case "$DEVICE" in
126 docker)
127 failed=0
20effc67 128 CYPRESS_VERSION=$(cat package.json | grep '"cypress"' | grep -o "[0-9]\.[0-9]\.[0-9]")
e306af50
TL
129 docker run \
130 -v $(pwd):/e2e \
131 -w /e2e \
132 --env CYPRESS_BASE_URL \
133 --env CYPRESS_LOGIN_USER \
134 --env CYPRESS_LOGIN_PWD \
1e59de90 135 --env CYPRESS_CEPH2_URL \
e306af50
TL
136 --name=e2e \
137 --network=host \
20effc67 138 cypress/included:${CYPRESS_VERSION} || failed=1
e306af50
TL
139 stop $failed
140 ;;
141 *)
142 npx cypress run $CYPRESS_ARGS --browser $DEVICE --headless || stop 1
143 ;;
144esac
11fdf7f2 145
e306af50 146stop 0