]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/ci/cephadm/run-cephadm-e2e-tests.sh
import ceph pacific 16.2.5
[ceph.git] / ceph / src / pybind / mgr / dashboard / ci / cephadm / run-cephadm-e2e-tests.sh
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"