Code

t/integration: Add a simple time-series fetcher test.
[sysdb.git] / t / integration / test_lib.sh
index b91cb0c37edafbe939d5803bc6410cad656e8869..8206ddfd5d21bad444dbf3a40b395556ebd59a02 100644 (file)
 
 TOP_SRCDIR="$( readlink -f "$( dirname "$0" )/../.." )"
 TESTDIR="$( mktemp -d )"
-trap "rm -rf '$TESTDIR'" EXIT
+trap "rm -rf '$TESTDIR'; test -z \$SYSDBD_PID || kill \$SYSDBD_PID" EXIT
 
 mkdir "$TESTDIR/backend"
 cp "$TOP_SRCDIR/t/integration/.libs/mock_plugin.so" "$TESTDIR/backend"
 
+cp "$TOP_SRCDIR"/src/sysdb "$TESTDIR"
+cp "$TOP_SRCDIR"/src/sysdbd "$TESTDIR"
+
+MEMCHECK="valgrind --quiet --tool=memcheck --error-exitcode=1"
+MEMCHECK="$MEMCHECK --trace-children=yes"
+MEMCHECK="$MEMCHECK --track-fds=yes"
+MEMCHECK="$MEMCHECK --leak-check=full"
+MEMCHECK="$MEMCHECK --suppressions=$TOP_SRCDIR/t/valgrind.suppress"
+MEMCHECK="$MEMCHECK --gen-suppressions=all"
+
 SYSDBD_CONF="$TESTDIR/sysdbd.conf"
 
 SOCKET_FILE="$TESTDIR/sock"
 PLUGIN_DIR="$TESTDIR"
 
-SYSDBD="$TOP_SRCDIR/src/sysdbd"
-SYSDB="$TOP_SRCDIR/src/sysdb"
+SYSDB_USER="$( id -un )"
+
+function run_sysdb() {
+       $MEMCHECK "$TESTDIR/sysdb" -U $SYSDB_USER "$@"
+}
+
+function run_sysdb_nouser() {
+       $MEMCHECK "$TESTDIR/sysdb" "$@"
+}
+
+function run_sysdbd() {
+       $MEMCHECK "$TESTDIR/sysdbd" "$@" &
+       SYSDBD_PID=$!
+}
+
+function run_sysdbd_foreground() {
+       $MEMCHECK "$TESTDIR/sysdbd" "$@"
+}
+
+function stop_sysdbd() {
+       if test -z "$SYSDBD_PID"; then
+               echo "Cannot stop sysdbd; PID unknown" >&2
+               exit 1
+       fi
+       kill $SYSDBD_PID
+       wait $SYSDBD_PID
+       SYSDBD_PID=''
+}
 
 function wait_for_sysdbd() {
+       local socket="$SOCKET_FILE"
        local i
        for (( i=0; i<10; i++ )); do
-               if test -e "$SOCKET_FILE"; then
+               if test -e "$socket"; then
                        break
                fi
                sleep 1
@@ -57,3 +94,4 @@ function wait_for_sysdbd() {
        fi
 }
 
+# vim: set tw=78 sw=4 ts=4 noexpandtab :