#!/bin/sh # run-ptest - 'ptest' test infrastructure shell script that # wraps the valgrind regression script vg_regtest. # # Dave Lerner # Randy MacLeod ############################################################### VALGRIND_LIB=@libdir@/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_LIB} \ --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}