#!/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}
