From 1d63a898503d20e3221be43fc222f0091971a0ce Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 30 May 2007 16:13:58 +0000 Subject: Logging infrastructure: See qpidd --long-help for details. * src/qpid/log/*: Logging infrastructure, QPID_LOG macro. * src/*: changed output to cout/cerr to logging. * src/qpidd.cpp: logging options. * src/tests/Makefile.am: fixed issues with valgrind * src/tests/kill|start_broker: use broker daemon options. * src/tests/run_test: run tests in valgrind. Disabled till leaks in client_test are fixed. * src/test/unit/logging.cpp: Logging unit test using boost test framework. Eventually we should move all unit tests to boost & drop CppUnit. * src/test/unit/test_tools.h: useful extensions to boost framework: Regular expression check, ostream << for vectors. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@542855 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/run_test | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 cpp/src/tests/run_test (limited to 'cpp/src/tests/run_test') diff --git a/cpp/src/tests/run_test b/cpp/src/tests/run_test new file mode 100755 index 0000000000..ef608e55ca --- /dev/null +++ b/cpp/src/tests/run_test @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Run a test executable. Output nothing if test passes, +# show the output if it fails. Leave output in .log for +# examination. +# +# If $VALGRIND if is set run under valgrind. If there are +# valgrind erros show valgrind output, also leave it in +# .valgrind for examination. +# + +vg_failed() { + cat $VG_LOG 1>&2 + echo $1 1>&2 + exit 1 +} + +vg_check() +{ + test -f $VG_LOG || vg_failed Valgrind log file $VG_LOG missing. + # Ensure there is an ERROR SUMMARY line. + grep -E '^==[0-9]+== ERROR SUMMARY:' $VG_LOG > /dev/null || \ + vg_failed "No valgrind ERROR SUMMARY line in $$vg_failed." + # Ensure that the number of errors is 0. + grep -E '^==[0-9]+== ERROR SUMMARY: [^0] ' $VG_LOG > /dev/null && \ + vg_failed "Valgrind reported errors in $vg_out; see above." + # Check for leaks. + grep -E '^==[0-9]+== +.* lost: [^0]' $VG_LOG && \ + vg_failed "Found memory leaks (see log file, $VG_LOG); see above." + true +} + +# Export variables from makefile. +export VALGRIND srcdir + +VG_LOG="$1.vglog" +TEST_LOG="$1.log" +rm -f $VG_LOG $TEST_LOG + +if grep -l "^# Generated by .*libtool" "$1" >/dev/null 2>&1; then + # This is a libtool "executable". Valgrind it if VALGRIND specified. + test -n "$VALGRIND" && VALGRIND="$VALGRIND --log-file-exactly=$VG_LOG --" + # Hide output unless there's an error. + libtool --mode=execute $VALGRIND "$@" >$TEST_LOG 2>&1 || { + ERROR=$? + cat $TEST_LOG + } + test -n "$VALGRIND" && vg_check +else + # This is a non-libtool shell script, just execute it. + "$@" +fi + +if test -z "$ERROR"; then + # Clean up logs if there was no error. + rm -f $VG_LOG $TEST_LOG + exit 0 +else + exit $ERROR +fi -- cgit v1.2.1