summaryrefslogtreecommitdiff
path: root/cpp/src/tests/run_test
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-05-30 16:13:58 +0000
committerAlan Conway <aconway@apache.org>2007-05-30 16:13:58 +0000
commit1d63a898503d20e3221be43fc222f0091971a0ce (patch)
tree78d8673b9ed8820e431b6a6f353ba0143adeb800 /cpp/src/tests/run_test
parentf2b034ea3f4fa70e512fafdf18fd42c370194329 (diff)
downloadqpid-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-xcpp/src/tests/run_test60
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