]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/run-backend-api-tests.sh
3 # cross shell: Are we sourced?
4 # Source: https://stackoverflow.com/a/28776166/3185053
5 ([[ -n $ZSH_EVAL_CONTEXT && $ZSH_EVAL_CONTEXT = ~
: file $
]] ||
6 [[ -n $KSH_VERSION && $
( cd "$(dirname -- " $0 ")" &&
7 printf '%s' " ${PWD%/} /" ) $
( basename -- " $0 " ) != " ${.sh.file} " ]] ||
8 [[ -n $BASH_VERSION ]] && ( return 0 2 >/ dev
/ null
)) && sourced
= 1 || sourced
= 0
10 if [ " $sourced " -eq 0 ] ; then
14 if [[ " $1 " = "-h" ||
" $1 " = "--help" ]]; then
15 echo "Usage (run from ./):"
16 echo -e " \t ./run-backend-api-tests.sh"
17 echo -e " \t ./run-backend-api-tests.sh [tests]..."
20 echo -e " \t ./run-backend-api-tests.sh tasks.mgr.dashboard.test_pool.DashboardTest"
22 echo "Or source this script. This allows to re-run tests faster:"
23 echo -e " \t source run-backend-api-tests.sh"
24 echo -e " \t run_teuthology_tests [tests]..."
25 echo -e " \t cleanup_teuthology"
31 get_cmake_variable
() {
33 grep " $variable " CMakeCache.txt | cut
-d "=" -f 2
36 [ -z " $BUILD_DIR " ] && BUILD_DIR
= build
38 LOCAL_BUILD_DIR
= $
( cd " $CURR_DIR /../../../../ $BUILD_DIR " ; pwd )
44 ${TEUTHOLOGY_PYTHON_BIN:-/usr/bin/python3} -m venv venv
45 source venv
/ bin
/ activate
46 pip
install -U pip
'setuptools>=12,<60'
47 pip
install "git+https://github.com/ceph/teuthology@9e4bf63#egg=teuthology[test]"
49 pip
install -r requirements.txt
-c constraints.txt
56 # In CI environment we cannot install coverage in system, so we install it in a dedicated venv
57 # so only coverage is available when adding this path.
59 / usr
/ bin
/ python3
-m venv coverage-venv
60 source coverage-venv
/ bin
/ activate
62 pip
install coverage
== 4.5.2
63 COVERAGE_PATH
= $
( python
-c "import sysconfig; print(sysconfig.get_paths()['platlib'])" )
73 local log_files
= $
( find " $CEPH_OUT_DIR " -iname " ${daemon} .*.log" |
tr ' \n ' ' ' )
74 for log_file
in ${log_files[@]} ; do
75 printf " \n\n Displaying last ${lines} lines of: ${log_file} \n\n "
76 tail -n ${lines} $log_file
77 printf " \n\n End of: ${log_file} \n\n "
79 printf " \n\n TEST FAILED. \n\n "
84 if [[ -n " $JENKINS_HOME " && -z " $ON_TESTS_ERROR_RUN " ]]; then
85 CEPH_OUT_DIR
= ${CEPH_OUT_DIR:-"$LOCAL_BUILD_DIR"/out}
86 display_log
"mgr" 1500
87 display_log
"osd" 1000
93 run_teuthology_tests
() {
94 trap on_tests_error ERR
97 find ..
/ src
/ pybind
/ mgr
/ dashboard
/ -name '*.pyc' -exec rm -f {} \
;
101 if [[ "$@" == '' ||
"$@" == '--create-cluster-only' ]]; then
102 TEST_CASES
= `for i in \` ls $LOCAL_BUILD_DIR / ..
/ qa
/ tasks
/ mgr
/ dashboard
/ test_
* \
`; do F=$(basename $i ); M=" ${F%.*} "; echo -n " tasks.mgr.dashboard. $M "; done`
103 # Mgr selftest module tests have to be run at the end as they stress the mgr daemon.
104 TEST_CASES
= "tasks.mgr.test_dashboard $TEST_CASES tasks.mgr.test_module_selftest"
105 if [[ "$@" == '--create-cluster-only' ]]; then
110 TEST_CASES
= " $TEST_CASES $t "
114 export PATH
= $LOCAL_BUILD_DIR / bin
: $PATH
115 source $TEMP_DIR / venv
/ bin
/ activate
# Run after setting PATH as it does the last PATH export.
116 export LD_LIBRARY_PATH
= $LOCAL_BUILD_DIR / lib
/ cython_modules
/ lib
.3 /: $LOCAL_BUILD_DIR / lib
117 local source_dir
= $
( dirname " $LOCAL_BUILD_DIR " )
118 local pybind_dir
= $source_dir / src
/ pybind
119 local python_common_dir
= $source_dir / src
/ python-common
120 # In CI environment we set python paths inside build (where you find the required frontend build: "dist" dir).
121 if [[ -n " $JENKINS_HOME " ]]; then
122 pybind_dir
+= ": $LOCAL_BUILD_DIR /src/pybind"
124 export PYTHONPATH
= $source_dir / qa
: $LOCAL_BUILD_DIR / lib
/ cython_modules
/ lib
.3 /: $pybind_dir : $python_common_dir : ${COVERAGE_PATH}
125 export DASHBOARD_SSL
= 1
129 export COVERAGE_ENABLED
= true
130 export COVERAGE_FILE
= .coverage.mgr.dashboard
131 find .
-iname "* ${COVERAGE_FILE} *" -type f
-delete
133 python ..
/ qa
/ tasks
/ vstart_runner.py
--ignore-missing-binaries --no-verbose $OPTIONS $
( echo $TEST_CASES ) ||
140 cleanup_teuthology
() {
141 cd " $LOCAL_BUILD_DIR "
144 if [[ " $COVERAGE_ENABLED " == 'true' ]]; then
145 source $TEMP_DIR / coverage-venv
/ bin
/ activate
146 ( coverage combine
&& coverage report
) || true
157 unset LOCAL_BUILD_DIR
159 unset setup_teuthology
162 unset run_teuthology_tests
163 unset cleanup_teuthology
166 export LC_ALL
= en_US.UTF-8
170 run_teuthology_tests
--create-cluster-only
172 # End sourced section. Do not exit shell when the script has been sourced.
173 if [ " $sourced " -eq 1 ] ; then
177 run_teuthology_tests
"$@"