view tests/testlib/wait-on-file @ 44631:1ed6293fc31b

testlib: add a small scrip to help process to synchronise using file Creating and waiting for files is a robust way to synchronise two processes running concurrently. We already use this approach in various tests. I am adding a official script to do so before adding more usage of this. Differential Revision: https://phab.mercurial-scm.org/D8189
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 28 Feb 2020 02:23:28 +0100
parents
children 82543879b48e
line wrap: on
line source

#!/bin/bash
#
# wait up to TIMEOUT seconds until a WAIT_ON_FILE is created.
#
# In addition, this script can create CREATE_FILE once it is ready to wait.

if [ $# -lt 2 ] || [ $# -gt 3 ]; then
    echo $#
    echo "USAGE: $0 TIMEOUT WAIT_ON_FILE [CREATE_FILE]"
fi

timer="$1"
wait_on="$2"
create=""
if [ $# -eq 3 ]; then
    create="$3"
fi

if [ -n "$create" ];
then
    touch "$create"
    create=""
fi
while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ];
do
    timer=$(( timer - 1))
    sleep 0.01
done
if [ "$timer" -le 0 ]; then
    echo "file not created after $1 seconds: $wait_on" >&2
    exit 1
fi