]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env bash | |
2 | ||
3 | set -e | |
4 | ||
5 | start_ceph() { | |
6 | cd $FULL_PATH_BUILD_DIR | |
7 | ||
8 | MGR=2 RGW=1 ../src/vstart.sh -n -d | |
9 | sleep 10 | |
10 | ||
11 | # Create an Object Gateway User | |
12 | ./bin/radosgw-admin user create --uid=dev --display-name=Developer --system | |
13 | # Set the user-id | |
14 | ./bin/ceph dashboard set-rgw-api-user-id dev | |
15 | # Obtain and set access and secret key for the previously created user. $() is safer than backticks `..` | |
16 | RGW_ACCESS_KEY_FILE="/tmp/rgw-user-access-key.txt" | |
17 | printf "$(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].access_key)" > "${RGW_ACCESS_KEY_FILE}" | |
18 | ./bin/ceph dashboard set-rgw-api-access-key -i "${RGW_ACCESS_KEY_FILE}" | |
19 | RGW_SECRET_KEY_FILE="/tmp/rgw-user-secret-key.txt" | |
20 | printf "$(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].secret_key)" > "${RGW_SECRET_KEY_FILE}" | |
21 | ./bin/ceph dashboard set-rgw-api-secret-key -i "${RGW_SECRET_KEY_FILE}" | |
22 | # Set SSL verify to False | |
23 | ./bin/ceph dashboard set-rgw-api-ssl-verify False | |
24 | ||
25 | CYPRESS_BASE_URL=$(./bin/ceph mgr services | jq -r .dashboard) | |
26 | } | |
27 | ||
28 | stop() { | |
29 | if [ "$REMOTE" == "false" ]; then | |
30 | cd ${FULL_PATH_BUILD_DIR} | |
31 | ../src/stop.sh | |
32 | fi | |
33 | exit $1 | |
34 | } | |
35 | ||
36 | check_device_available() { | |
37 | failed=false | |
38 | ||
39 | if [ "$DEVICE" == "docker" ]; then | |
40 | [ -x "$(command -v docker)" ] || failed=true | |
41 | else | |
42 | cd $DASH_DIR/frontend | |
43 | npx cypress verify | |
44 | ||
45 | case "$DEVICE" in | |
46 | chrome) | |
47 | [ -x "$(command -v chrome)" ] || [ -x "$(command -v google-chrome)" ] || | |
48 | [ -x "$(command -v google-chrome-stable)" ] || failed=true | |
49 | ;; | |
50 | chromium) | |
51 | [ -x "$(command -v chromium)" ] || [ -x "$(command -v chromium-browser)" ] || failed=true | |
52 | ;; | |
53 | esac | |
54 | fi | |
55 | ||
56 | if [ "$failed" = "true" ]; then | |
57 | echo "ERROR: $DEVICE not found. You need to install $DEVICE or \ | |
58 | use a different device. Supported devices: chrome (default), chromium, electron or docker." | |
59 | stop 1 | |
60 | fi | |
61 | } | |
62 | ||
63 | : ${CYPRESS_BASE_URL:=''} | |
64 | : ${CYPRESS_LOGIN_PWD:=''} | |
65 | : ${CYPRESS_LOGIN_USER:=''} | |
66 | : ${DEVICE:="chrome"} | |
67 | : ${NO_COLOR:=1} | |
68 | : ${CYPRESS_ARGS:=''} | |
69 | : ${REMOTE:='false'} | |
70 | ||
71 | while getopts 'd:p:r:u:' flag; do | |
72 | case "${flag}" in | |
73 | d) DEVICE=$OPTARG;; | |
74 | p) CYPRESS_LOGIN_PWD=$OPTARG;; | |
75 | r) REMOTE='true' | |
76 | CYPRESS_BASE_URL=$OPTARG;; | |
77 | u) CYPRESS_LOGIN_USER=$OPTARG;; | |
78 | esac | |
79 | done | |
80 | ||
81 | DASH_DIR=`pwd` | |
82 | [ -z "$BUILD_DIR" ] && BUILD_DIR=build | |
83 | cd ../../../../${BUILD_DIR} | |
84 | FULL_PATH_BUILD_DIR=`pwd` | |
85 | ||
86 | [[ "$(command -v npm)" == '' ]] && . ${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/node-env/bin/activate | |
87 | ||
88 | : ${CYPRESS_CACHE_FOLDER:="${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/cypress"} | |
89 | ||
90 | export CYPRESS_BASE_URL CYPRESS_CACHE_FOLDER CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD NO_COLOR | |
91 | ||
92 | check_device_available | |
93 | ||
94 | if [ "$CYPRESS_BASE_URL" == "" ]; then | |
95 | start_ceph | |
96 | fi | |
97 | ||
98 | cd $DASH_DIR/frontend | |
99 | ||
100 | case "$DEVICE" in | |
101 | docker) | |
102 | failed=0 | |
103 | docker run \ | |
104 | -v $(pwd):/e2e \ | |
105 | -w /e2e \ | |
106 | --env CYPRESS_BASE_URL \ | |
107 | --env CYPRESS_LOGIN_USER \ | |
108 | --env CYPRESS_LOGIN_PWD \ | |
109 | --name=e2e \ | |
110 | --network=host \ | |
111 | cypress/included:4.4.0 || failed=1 | |
112 | stop $failed | |
113 | ;; | |
114 | *) | |
115 | npx cypress run $CYPRESS_ARGS --browser $DEVICE --headless || stop 1 | |
116 | ;; | |
117 | esac | |
118 | ||
119 | stop 0 |