#!/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_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 exp-dhat exp-sgcheck"

GDB_BIN=@bindir@/gdb
cd ${VALGRIND_LIB}/ptest && ./gdbserver_tests/make_local_links ${GDB_BIN}

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

cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \
    --valgrind=${VALGRIND_BIN} \
    --valgrind-lib=${VALGRIND_LIB} \
    --yocto-ptest \
    gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
    2>&1|tee ${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


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}
