Mercurial > hg
changeset 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 | 4c6189d45d67 |
children | 82543879b48e |
files | tests/testlib/wait-on-file |
diffstat | 1 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testlib/wait-on-file Fri Feb 28 02:23:28 2020 +0100 @@ -0,0 +1,32 @@ +#!/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