testlib: add a small scrip to help process to synchronise using file
authorPierre-Yves David <pierre-yves.david@octobus.net>
Fri, 28 Feb 2020 02:23:28 +0100
changeset 44631 1ed6293fc31b
parent 44630 4c6189d45d67
child 44632 82543879b48e
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
tests/testlib/wait-on-file
--- /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