diff options
| author | Alan Conway <aconway@apache.org> | 2007-05-30 16:13:58 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-05-30 16:13:58 +0000 |
| commit | 1d63a898503d20e3221be43fc222f0091971a0ce (patch) | |
| tree | 78d8673b9ed8820e431b6a6f353ba0143adeb800 /cpp/src/tests/run_test | |
| parent | f2b034ea3f4fa70e512fafdf18fd42c370194329 (diff) | |
| download | qpid-python-1d63a898503d20e3221be43fc222f0091971a0ce.tar.gz | |
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
Diffstat (limited to 'cpp/src/tests/run_test')
| -rwxr-xr-x | cpp/src/tests/run_test | 60 |
1 files changed, 60 insertions, 0 deletions
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 <test>.log for +# examination. +# +# If $VALGRIND if is set run under valgrind. If there are +# valgrind erros show valgrind output, also leave it in +# <test>.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 |
