diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /run-make-check.sh | |
parent | Initial commit. (diff) | |
download | ceph-upstream/18.2.2.tar.xz ceph-upstream/18.2.2.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-x | run-make-check.sh | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/run-make-check.sh b/run-make-check.sh new file mode 100755 index 000000000..627430387 --- /dev/null +++ b/run-make-check.sh @@ -0,0 +1,113 @@ +#!/usr/bin/env bash +# +# Ceph distributed storage system +# +# Copyright (C) 2014 Red Hat <contact@redhat.com> +# +# Author: Loic Dachary <loic@dachary.org> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# + +# +# To just look at what this script will do, run it like this: +# +# $ DRY_RUN=echo ./run-make-check.sh +# + +source src/script/run-make.sh + +set -e + +function in_jenkins() { + test -n "$JENKINS_HOME" +} + +function run() { + # to prevent OSD EMFILE death on tests, make sure ulimit >= 1024 + $DRY_RUN ulimit -n $(ulimit -Hn) + if [ $(ulimit -n) -lt 1024 ];then + echo "***ulimit -n too small, better bigger than 1024 for test***" + return 1 + fi + + # increase the aio-max-nr, which is by default 65536. we could reach this + # limit while running seastar tests and bluestore tests. + local m=16 + if [ $(nproc) -gt $m ]; then + m=$(nproc) + fi + $DRY_RUN sudo /sbin/sysctl -q -w fs.aio-max-nr=$((65536 * $(nproc))) + + CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS} + if in_jenkins; then + if ! ctest $CHECK_MAKEOPTS --no-compress-output --output-on-failure --test-output-size-failed 1024000 -T Test; then + # do not return failure, as the jenkins publisher will take care of this + rm -fr ${TMPDIR:-/tmp}/ceph-asok.* + fi + else + if ! $DRY_RUN ctest $CHECK_MAKEOPTS --output-on-failure; then + rm -fr ${TMPDIR:-/tmp}/ceph-asok.* + return 1 + fi + fi +} + +function main() { + if [[ $EUID -eq 0 ]] ; then + echo "For best results, run this script as a normal user configured" + echo "with the ability to run commands as root via sudo." + fi + echo -n "Checking hostname sanity... " + if $DRY_RUN hostname --fqdn >/dev/null 2>&1 ; then + echo "OK" + else + echo "NOT OK" + echo "Please fix 'hostname --fqdn', otherwise 'make check' will fail" + return 1 + fi + # uses run-make.sh to install-deps + FOR_MAKE_CHECK=1 prepare + local cxx_compiler=g++ + local c_compiler=gcc + for i in $(seq 14 -1 10); do + if type -t clang-$i > /dev/null; then + cxx_compiler="clang++-$i" + c_compiler="clang-$i" + break + fi + done + # Init defaults after deps are installed. + local cmake_opts + cmake_opts+=" -DCMAKE_CXX_COMPILER=$cxx_compiler -DCMAKE_C_COMPILER=$c_compiler" + cmake_opts+=" -DCMAKE_CXX_FLAGS_DEBUG=-Werror" + cmake_opts+=" -DENABLE_GIT_VERSION=OFF" + cmake_opts+=" -DWITH_GTEST_PARALLEL=ON" + cmake_opts+=" -DWITH_FIO=ON" + cmake_opts+=" -DWITH_CEPHFS_SHELL=ON" + cmake_opts+=" -DWITH_GRAFANA=ON" + cmake_opts+=" -DWITH_SPDK=ON" + cmake_opts+=" -DWITH_RBD_MIRROR=ON" + if [ $WITH_SEASTAR ]; then + cmake_opts+=" -DWITH_SEASTAR=ON" + fi + if [ $WITH_ZBD ]; then + cmake_opts+=" -DWITH_ZBD=ON" + fi + if [ $WITH_RBD_RWL ]; then + cmake_opts+=" -DWITH_RBD_RWL=ON" + fi + cmake_opts+=" -DWITH_RBD_SSD_CACHE=ON" + in_jenkins && echo "CI_DEBUG: Our cmake_opts are: $cmake_opts + CI_DEBUG: Running ./configure" + configure "$cmake_opts" "$@" + in_jenkins && echo "CI_DEBUG: Running 'build tests'" + build tests + echo "make check: successful build on $(git rev-parse HEAD)" + FOR_MAKE_CHECK=1 run +} + +main "$@" |