Patchwork D8505: tests: fix timer scaling in wait-on-file

login
register
mail settings
Submitter phabricator
Date May 7, 2020, 9:40 p.m.
Message ID <differential-rev-PHID-DREV-wtw52vgxuis362r4tqmb-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46288/
State Superseded
Headers show

Comments

phabricator - May 7, 2020, 9:40 p.m.
joerg.sonnenberger created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D8505

AFFECTED FILES
  tests/testlib/wait-on-file

CHANGE DETAILS




To: joerg.sonnenberger, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/testlib/wait-on-file b/tests/testlib/wait-on-file
--- a/tests/testlib/wait-on-file
+++ b/tests/testlib/wait-on-file
@@ -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