tests: fix timer scaling in wait-on-file stable
authorJoerg Sonnenberger <joerg@bec.de>
Thu, 07 May 2020 23:40:05 +0200
branchstable
changeset 44774 9d7d53771e5f
parent 44773 35bb67427f63
child 44775 a6e12d477595
tests: fix timer scaling in wait-on-file When using the default test timeouts, wait-on-file would not wait for $n seconds, but $n/100 seconds. This resulted in easy timeouts on even moderately busy fast machines. Fix the scaling to apply in all cases. Adjust the stepping slightly to be nicer to systems with the historic 100Hz time base to ensure that the scheduler actually switches to a different process and gives them time to work. Differential Revision: https://phab.mercurial-scm.org/D8505
tests/testlib/wait-on-file
--- a/tests/testlib/wait-on-file	Sat May 09 20:25:07 2020 +0200
+++ b/tests/testlib/wait-on-file	Thu May 07 23:40:05 2020 +0200
@@ -11,9 +11,12 @@
 
 timer="$1"
 
-# if the test timeout have been extended, explicitly extend the provided timer
+# Scale the timeout to match the sleep steps below, i.e. 1/0.02.
+timer=$(( 50 * $timer ))
+# If the test timeout have been extended, also scale the timer relative
+# to the normal timing.
 if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then
-    timer=$(( ( 100 * $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
+    timer=$(( ( $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
 fi
 
 wait_on="$2"
@@ -28,7 +31,7 @@
 fi
 while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ]; do
     timer=$(( $timer - 1))
-    sleep 0.01
+    sleep 0.02
 done
 if [ "$timer" -le 0 ]; then
     echo "file not created after $1 seconds: $wait_on" >&2