]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: wait for flock background process
authorRuediger Meier <ruediger.meier@ga-group.nl>
Wed, 2 Nov 2016 14:31:55 +0000 (15:31 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 2 Nov 2016 15:47:45 +0000 (16:47 +0100)
Maybe we should add a --daemonize option to flock to cover
this use case.

Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
tests/ts/misc/flock

index b2fc772427a7ae53a3ce8864f9508cafe806ad85..39e88dedf98a75317732912670c9399802d38036 100755 (executable)
@@ -19,6 +19,7 @@ TS_DESC="flock"
 ts_init "$*"
 
 ts_check_test_command "$TS_CMD_FLOCK"
+ts_check_prog "ps"
 
 
 function do_lock {
@@ -42,10 +43,19 @@ function do_lock {
 # general lock
 GEN_OUTPUT="$TS_OUTPUT"
 START=$(date '+%s')
+# running flock in background is not the best usage example
 $TS_CMD_FLOCK --shared $TS_OUTDIR/lockfile \
        bash -c 'echo "Locking"; sleep 3; echo "Unlocking"' \
        > $GEN_OUTPUT 2>&1 &
+pid=$!
 
+# check for running background process
+if [ "$pid" -le "0" ] || ! kill -s 0 "$pid" &>/dev/null; then
+       ts_die "unable to run flock"
+fi
+# the lock should be established when flock has a child
+timeout 1s bash -c "while [ \$(ps --ppid $pid |wc -l) -lt 2 ]; do sleep 0.1 ;done" \
+       || ts_die "timeout waiting for flock child"
 
 ts_init_subtest "non-block"
 do_lock "--nonblock --conflict-exit-code 123" 123 "You will never see this!"