mirror of
https://github.com/ceph/ceph
synced 2024-12-17 17:05:42 +00:00
cd0dfc305d
this is a workaround of the timeout found in jenkins. currently three tests are found timeout, and they are labeld with "Racing" and "LongRunning". so, to workaround this issue, we run the tests in two phases: 1. run the racing tests with -j1 2. run the non-racing tests with -jN if we all all tests with -j1, the total test time is 2683.57 sec Signed-off-by: Kefu Chai <kchai@redhat.com>
97 lines
2.9 KiB
Bash
Executable File
97 lines
2.9 KiB
Bash
Executable File
#!/bin/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.
|
|
#
|
|
|
|
#
|
|
# Return true if the working tree is after the release that made
|
|
# make -j8 check possible
|
|
#
|
|
function can_parallel_make_check() {
|
|
local commit=$(git rev-parse tags/v0.88^{})
|
|
git rev-list HEAD | grep --quiet $commit
|
|
}
|
|
|
|
function maybe_parallel_make_check() {
|
|
if can_parallel_make_check ; then
|
|
echo -j$(get_processors)
|
|
fi
|
|
}
|
|
#
|
|
# Return MAX(1, (number of processors / 2)) by default or NPROC
|
|
#
|
|
function get_processors() {
|
|
if test -n "$NPROC" ; then
|
|
echo $NPROC
|
|
else
|
|
if test $(nproc) -ge 2 ; then
|
|
expr $(nproc) / 2
|
|
else
|
|
echo 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
DEFAULT_MAKEOPTS=${DEFAULT_MAKEOPTS:--j$(get_processors)}
|
|
BUILD_MAKEOPTS=${BUILD_MAKEOPTS:-$DEFAULT_MAKEOPTS}
|
|
if can_parallel_make_check ; then
|
|
CHECK_MAKEOPTS=${CHECK_MAKEOPTS:-$DEFAULT_MAKEOPTS}
|
|
else
|
|
CHECK_MAKEOPTS=""
|
|
fi
|
|
|
|
function run() {
|
|
# Same logic as install-deps.sh for finding package installer
|
|
local install_cmd
|
|
test -f /etc/redhat-release && install_cmd="yum install -y"
|
|
type apt-get > /dev/null 2>&1 && install_cmd="apt-get install -y"
|
|
type zypper > /dev/null 2>&1 && install_cmd="zypper --gpg-auto-import-keys --non-interactive install"
|
|
if [ -n "$install_cmd" ]; then
|
|
sudo $install_cmd ccache jq
|
|
else
|
|
echo "WARNING: Don't know how to install packages" >&2
|
|
fi
|
|
|
|
if test -f ./install-deps.sh ; then
|
|
$DRY_RUN ./install-deps.sh || return 1
|
|
fi
|
|
export TMPDIR=$(mktemp -d --tmpdir ceph.XXX)
|
|
if test -x ./do_cmake.sh ; then
|
|
$DRY_RUN ./do_cmake.sh || return 1
|
|
cd build
|
|
$DRY_RUN make $BUILD_MAKEOPTS tests || return 1
|
|
$DRY_RUN ctest -L Racing -j1 --output-on-failure || return 1
|
|
$DRY_RUN ctest -LE Racing $CHECK_MAKEOPTS --output-on-failure || return 1
|
|
else
|
|
$DRY_RUN ./autogen.sh || return 1
|
|
$DRY_RUN ./configure "$@" --with-librocksdb-static --disable-static --with-radosgw --with-debug --without-lttng \
|
|
CC="ccache gcc" CXX="ccache g++" CFLAGS="-Wall -g" CXXFLAGS="-Wall -g" || return 1
|
|
$DRY_RUN make $BUILD_MAKEOPTS || return 1
|
|
$DRY_RUN make $CHECK_MAKEOPTS check || return 1
|
|
$DRY_RUN make dist || return 1
|
|
fi
|
|
rm -rf $TMPDIR
|
|
}
|
|
|
|
function main() {
|
|
if run "$@" ; then
|
|
echo "make check: successful run on $(git rev-parse HEAD)"
|
|
rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv*
|
|
return 0
|
|
else
|
|
rm -fr ${CEPH_BUILD_VIRTUALENV:-/tmp}/*virtualenv*
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
main "$@"
|