From: Ruediger Meier Date: Wed, 2 Nov 2016 14:31:55 +0000 (+0100) Subject: tests: wait for flock background process X-Git-Tag: v2.29~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca6d721a01e99c08db844705d391496f1d041750;p=thirdparty%2Futil-linux.git tests: wait for flock background process Maybe we should add a --daemonize option to flock to cover this use case. Signed-off-by: Ruediger Meier --- diff --git a/tests/ts/misc/flock b/tests/ts/misc/flock index b2fc772427..39e88dedf9 100755 --- a/tests/ts/misc/flock +++ b/tests/ts/misc/flock @@ -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!"