|
Packit |
2997f0 |
#!/usr/bin/env bash
|
|
Packit |
2997f0 |
#
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
RED='\033[31m'
|
|
Packit |
2997f0 |
GREEN='\033[32m'
|
|
Packit |
2997f0 |
CYAN='\033[36m'
|
|
Packit |
2997f0 |
CCLR='\033[0m'
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if [ -z "$1" ]; then
|
|
Packit |
2997f0 |
echo "Usage: $0 [-..] <execfile> [modes..]"
|
|
Packit |
2997f0 |
echo ""
|
|
Packit |
2997f0 |
echo " Modes: bare valgrind helgrind drd gdb lldb bash"
|
|
Packit |
2997f0 |
echo " Options:"
|
|
Packit |
2997f0 |
echo " -.. - Command arguments (pass thru)"
|
|
Packit |
2997f0 |
exit 1
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
ARGS=
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
while [[ $1 == -* ]]; do
|
|
Packit |
2997f0 |
ARGS="$ARGS $1"
|
|
Packit |
2997f0 |
shift
|
|
Packit |
2997f0 |
done
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
TEST=$1
|
|
Packit |
2997f0 |
if [ ! -z "$2" ]; then
|
|
Packit |
2997f0 |
MODES=$2
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
MODES="bare"
|
|
Packit |
2997f0 |
# Enable valgrind:
|
|
Packit |
2997f0 |
#MODES="bare valgrind"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
FAILED=0
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
export RDKAFKA_GITVER="$(git rev-parse --short HEAD)@$(git symbolic-ref -q --short HEAD)"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Enable valgrind suppressions for false positives
|
|
Packit |
2997f0 |
SUPP="--suppressions=librdkafka.suppressions"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Uncomment to generate valgrind suppressions
|
|
Packit |
2997f0 |
#GEN_SUPP="--gen-suppressions=yes"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Common valgrind arguments
|
|
Packit |
2997f0 |
VALGRIND_ARGS="--error-exitcode=3"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
# Enable vgdb on valgrind errors.
|
|
Packit |
2997f0 |
#VALGRIND_ARGS="$VALGRIND_ARGS --vgdb-error=1"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../src:../src-cpp
|
|
Packit |
2997f0 |
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:../src:../src-cpp
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
echo -e "${CYAN}############## $TEST ################${CCLR}"
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
for mode in $MODES; do
|
|
Packit |
2997f0 |
echo -e "${CYAN}### Running test $TEST in $mode mode ###${CCLR}"
|
|
Packit |
2997f0 |
export TEST_MODE=$mode
|
|
Packit |
2997f0 |
case "$mode" in
|
|
Packit |
2997f0 |
valgrind)
|
|
Packit |
2997f0 |
valgrind $VALGRIND_ARGS --leak-check=full --show-leak-kinds=all \
|
|
Packit |
2997f0 |
--errors-for-leak-kinds=all \
|
|
Packit |
2997f0 |
--track-origins=yes \
|
|
Packit |
2997f0 |
$SUPP $GEN_SUPP \
|
|
Packit |
2997f0 |
$TEST $ARGS
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
helgrind)
|
|
Packit |
2997f0 |
valgrind $VALGRIND_ARGS --tool=helgrind \
|
|
Packit |
2997f0 |
--sim-hints=no-nptl-pthread-stackcache \
|
|
Packit |
2997f0 |
$SUPP $GEN_SUPP \
|
|
Packit |
2997f0 |
$TEST $ARGS
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
drd)
|
|
Packit |
2997f0 |
valgrind $VALGRIND_ARGS --tool=drd $SUPP $GEN_SUPP \
|
|
Packit |
2997f0 |
$TEST $ARGS
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
gdb)
|
|
Packit |
2997f0 |
if [[ -f gdb.run ]]; then
|
|
Packit |
2997f0 |
gdb -x gdb.run $ARGS $TEST
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
gdb $ARGS $TEST
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
bare)
|
|
Packit |
2997f0 |
$TEST $ARGS
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
lldb)
|
|
Packit |
2997f0 |
lldb -b -o "process launch --environment DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" -- $TEST $ARGS
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
bash)
|
|
Packit |
2997f0 |
PS1="[run-test.sh] $PS1" bash
|
|
Packit |
2997f0 |
RET=$?
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
*)
|
|
Packit |
2997f0 |
echo -e "${RED}### Unknown mode $mode for $TEST ###${CCLR}"
|
|
Packit |
2997f0 |
RET=1
|
|
Packit |
2997f0 |
;;
|
|
Packit |
2997f0 |
esac
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
if [ $RET -gt 0 ]; then
|
|
Packit |
2997f0 |
echo -e "${RED}###"
|
|
Packit |
2997f0 |
echo -e "### Test $TEST in $mode mode FAILED! ###"
|
|
Packit |
2997f0 |
echo -e "###${CCLR}"
|
|
Packit |
2997f0 |
FAILED=1
|
|
Packit |
2997f0 |
else
|
|
Packit |
2997f0 |
echo -e "${GREEN}###"
|
|
Packit |
2997f0 |
echo -e "### $Test $TEST in $mode mode PASSED! ###"
|
|
Packit |
2997f0 |
echo -e "###${CCLR}"
|
|
Packit |
2997f0 |
fi
|
|
Packit |
2997f0 |
done
|
|
Packit |
2997f0 |
|
|
Packit |
2997f0 |
exit $FAILED
|
|
Packit |
2997f0 |
|