]>
Commit | Line | Data |
---|---|---|
b3b6e05e TL |
1 | #!/usr/bin/env bash |
2 | ||
3 | set -ex | |
4 | ||
5 | cleanup() { | |
6 | if [[ -n "$JENKINS_HOME" ]]; then | |
7 | printf "\n\nStarting cleanup...\n\n" | |
8 | kcli delete plan -y ceph || true | |
9 | sudo podman container prune -f | |
10 | printf "\n\nCleanup completed.\n\n" | |
11 | fi | |
12 | } | |
13 | ||
14 | on_error() { | |
15 | if [ "$1" != "0" ]; then | |
16 | printf "\n\nERROR $1 thrown on line $2\n\n" | |
17 | printf "\n\nCollecting info...\n\n" | |
18 | for vm_id in 0 1 2 | |
19 | do | |
20 | local vm="ceph-node-0${vm_id}" | |
21 | printf "\n\nDisplaying journalctl from VM ${vm}:\n\n" | |
22 | kcli ssh -u root -- ${vm} 'journalctl --no-tail --no-pager -t cloud-init' || true | |
23 | printf "\n\nEnd of journalctl from VM ${vm}\n\n" | |
24 | printf "\n\nDisplaying podman logs:\n\n" | |
25 | kcli ssh -u root -- ${vm} 'podman logs --names --since 30s $(podman ps -aq)' || true | |
26 | done | |
27 | printf "\n\nTEST FAILED.\n\n" | |
28 | fi | |
29 | } | |
30 | ||
31 | trap 'on_error $? $LINENO' ERR | |
32 | trap 'cleanup $? $LINENO' EXIT | |
33 | ||
34 | sed -i '/ceph-node-/d' $HOME/.ssh/known_hosts | |
35 | ||
36 | : ${CEPH_DEV_FOLDER:=${PWD}} | |
37 | ||
38 | # Required to start dashboard. | |
39 | cd ${CEPH_DEV_FOLDER}/src/pybind/mgr/dashboard/frontend | |
40 | NG_CLI_ANALYTICS=false npm ci | |
41 | npm run build | |
42 | ||
43 | cd ${CEPH_DEV_FOLDER} | |
44 | kcli delete plan -y ceph || true | |
45 | kcli create plan -f ./src/pybind/mgr/dashboard/ci/cephadm/ceph_cluster.yml -P ceph_dev_folder=${CEPH_DEV_FOLDER} ceph | |
46 | ||
47 | while [[ -z $(kcli ssh -u root -- ceph-node-00 'journalctl --no-tail --no-pager -t cloud-init' | grep "Dashboard is now available") ]]; do | |
48 | sleep 30 | |
49 | kcli list vm | |
50 | # Uncomment for debugging purposes. | |
51 | #kcli ssh -u root -- ceph-node-00 'podman ps -a' | |
52 | #kcli ssh -u root -- ceph-node-00 'podman logs --names --since 30s $(podman ps -aq)' | |
53 | kcli ssh -u root -- ceph-node-00 'journalctl -n 100 --no-pager -t cloud-init' | |
54 | done | |
55 | ||
56 | cd ${CEPH_DEV_FOLDER}/src/pybind/mgr/dashboard/frontend | |
57 | npx cypress info | |
58 | ||
59 | : ${CYPRESS_BASE_URL:=''} | |
60 | : ${CYPRESS_LOGIN_USER:='admin'} | |
61 | : ${CYPRESS_LOGIN_PWD:='password'} | |
62 | : ${CYPRESS_ARGS:=''} | |
63 | ||
64 | if [[ -z "${CYPRESS_BASE_URL}" ]]; then | |
65 | CYPRESS_BASE_URL="https://$(kcli info vm ceph-node-00 -f ip -v | sed -e 's/[^0-9.]//'):8443" | |
66 | fi | |
67 | ||
68 | export CYPRESS_BASE_URL CYPRESS_LOGIN_USER CYPRESS_LOGIN_PWD | |
69 | ||
70 | cypress_run () { | |
71 | local specs="$1" | |
72 | local timeout="$2" | |
73 | local override_config="ignoreTestFiles=*.po.ts,retries=0,testFiles=${specs}" | |
74 | ||
75 | if [[ -n "$timeout" ]]; then | |
76 | override_config="${override_config},defaultCommandTimeout=${timeout}" | |
77 | fi | |
78 | npx cypress run ${CYPRESS_ARGS} --browser chrome --headless --config "$override_config" | |
79 | } | |
80 | ||
81 | cypress_run "orchestrator/workflow/*-spec.ts" |