]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | #!/usr/bin/env bash |
2 | ||
3 | set -e | |
4 | ||
1e59de90 TL |
5 | CLUSTERS=("1" "2") |
6 | ||
7 | ceph() { | |
8 | ${FULL_PATH_BUILD_DIR}/../src/mrun 1 ceph $@ | |
9 | } | |
10 | ||
11 | ceph2() { | |
12 | ${FULL_PATH_BUILD_DIR}/../src/mrun 2 ceph $@ | |
13 | } | |
14 | ||
15 | ceph_all() { | |
16 | ceph $@ | |
17 | ceph2 $@ | |
18 | } | |
19 | ||
e306af50 TL |
20 | start_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 |
47 | stop() { |
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 |
57 | check_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 | 93 | while 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 |
101 | done | |
102 | ||
11fdf7f2 | 103 | DASH_DIR=`pwd` |
9f95a23c | 104 | [ -z "$BUILD_DIR" ] && BUILD_DIR=build |
9f95a23c TL |
105 | cd ../../../../${BUILD_DIR} |
106 | FULL_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 | 112 | export CYPRESS_BASE_URL CYPRESS_CACHE_FOLDER CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD NO_COLOR CYPRESS_CEPH2_URL |
e306af50 TL |
113 | |
114 | check_device_available | |
11fdf7f2 | 115 | |
e306af50 TL |
116 | if [ "$CYPRESS_BASE_URL" == "" ]; then |
117 | start_ceph | |
118 | fi | |
9f95a23c | 119 | |
11fdf7f2 | 120 | cd $DASH_DIR/frontend |
11fdf7f2 | 121 | |
f67539c2 TL |
122 | # Remove existing XML results |
123 | rm -f cypress/reports/results-*.xml || true | |
124 | ||
e306af50 TL |
125 | case "$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 | ;; | |
144 | esac | |
11fdf7f2 | 145 | |
e306af50 | 146 | stop 0 |