#!/bin/sh
|
|
# run-ptest - 'ptest' test infrastructure shell script that
|
# wraps the valgrind regression script vg_regtest.
|
#
|
# Dave Lerner <dave.lerner@windriver.com>
|
# Randy MacLeod <Randy.MacLeod@windriver.com>
|
###############################################################
|
VALGRIND_LIB=@libdir@/valgrind
|
VALGRIND_LIBEXECDIR=@libexecdir@/valgrind
|
VALGRIND_BIN=@bindir@/valgrind
|
|
LOG="${VALGRIND_LIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log"
|
|
TOOLS="memcheck cachegrind callgrind helgrind drd massif dhat lackey none"
|
EXP_TOOLS="exp-bbv"
|
|
GDB_BIN=@bindir@/gdb
|
cd ${VALGRIND_LIB}/ptest && ./gdbserver_tests/make_local_links ${GDB_BIN}
|
|
echo "Hide valgrind tests that are non-deterministic"
|
echo "Reported at https://bugs.kde.org/show_bug.cgi?id=430321"
|
for i in `cat remove-for-all`; do
|
mv $i.vgtest $i.IGNORE;
|
done
|
|
arch=`arch`
|
if [ "$arch" = "aarch64" ]; then
|
echo "Aarch64: Hide valgrind tests that result in defunct process and then out of memory"
|
for i in `cat remove-for-aarch64`; do
|
mv $i.vgtest $i.IGNORE;
|
done
|
fi
|
|
echo "Run flaky tests using taskset to limit them to a single core."
|
for i in `cat taskset_nondeterministic_tests`; do
|
taskset 0x00000001 perl tests/vg_regtest --valgrind=${VALGRIND_BIN} --valgrind-lib=${VALGRIND_LIBEXECDIR} --yocto-ptest $i 2>&1|tee -a ${LOG}
|
mv $i.vgtest $i.IGNORE
|
done
|
|
|
cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \
|
--valgrind=${VALGRIND_BIN} \
|
--valgrind-lib=${VALGRIND_LIBEXECDIR} \
|
--yocto-ptest \
|
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
|
2>&1|tee -a ${LOG}
|
|
cd ${VALGRIND_LIB}/ptest && \
|
./tests/post_regtest_checks $(pwd) \
|
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
|
2>&1|tee -a ${LOG}
|
|
if [ "$arch" = "aarch64" ]; then
|
echo "Aarch64: Restore valgrind tests that result in defunct process and then out of memory"
|
for i in `cat remove-for-aarch64`; do
|
mv $i.IGNORE $i.vgtest;
|
done
|
fi
|
|
echo "Restore valgrind tests that are non-deterministc"
|
for i in `cat remove-for-all`; do
|
mv $i.IGNORE $i.vgtest;
|
done
|
|
echo "Restore flaky and other non-deterministic tests"
|
for i in `cat taskset_nondeterministic_tests`; do
|
mv $i.IGNORE $i.vgtest;
|
done
|
|
echo "Failed test details..."
|
failed_tests=`grep FAIL: ${LOG} | awk '{print $2}'`
|
for test in $failed_tests; do
|
for diff_results in `ls $test*.diff`; do
|
echo $diff_results
|
echo '************'
|
cat $diff_results
|
done
|
done
|
|
passed=`grep PASS: ${LOG}|wc -l`
|
failed=`grep FAIL: ${LOG}|wc -l`
|
skipped=`grep SKIP: ${LOG}|wc -l`
|
all=$((passed + failed + skipped))
|
|
( echo "=== Test Summary ==="
|
echo "TOTAL: ${all}"
|
echo "PASSED: ${passed}"
|
echo "FAILED: ${failed}"
|
echo "SKIPPED: ${skipped}"
|
) | tee -a /${LOG}
|