Code

integration/test_lib: Manage the sysdbd PID centrally.
[sysdb.git] / t / integration / test_lib.sh
index 7bba1515361f804e8444ed717485e87a210841b3..604d2dffb02553a5cc66a09cf8a740f724ee032c 100644 (file)
@@ -30,7 +30,7 @@
 
 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"
@@ -55,9 +55,24 @@ function run_sysdb() {
 }
 
 function run_sysdbd() {
+       LD_PRELOAD=$TESTDIR/libsysdb.so $MEMCHECK "$TESTDIR/sysdbd" "$@" &
+       SYSDBD_PID=$!
+}
+
+function run_sysdbd_foreground() {
        LD_PRELOAD=$TESTDIR/libsysdb.so $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 i
        for (( i=0; i<10; i++ )); do