diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2012-06-28 10:37:36 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2012-06-28 10:37:36 -0400 |
commit | 47828911ae88038eda1051cfa2232f46eda95fd8 (patch) | |
tree | fbed9f28519113f2306e1865af0bb7b71348e2a1 | |
parent | 2d0d82f7453b1c5ad5e1baa8c02c2f6d5e5ccb67 (diff) | |
download | egawk-47828911ae88038eda1051cfa2232f46eda95fd8.tar.gz egawk-47828911ae88038eda1051cfa2232f46eda95fd8.tar.bz2 egawk-47828911ae88038eda1051cfa2232f46eda95fd8.zip |
Protect against race condition in test/time.awk.
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/time.awk | 14 |
2 files changed, 17 insertions, 2 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index a0f7a649..057434f9 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2012-06-28 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * time.awk: Avoid possibly throwing a spurious error by protecting + a race condition that depends on the order of expression evaluation. + 2012-06-25 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (rwarray): New test. diff --git a/test/time.awk b/test/time.awk index eeabc7bb..517377e2 100644 --- a/test/time.awk +++ b/test/time.awk @@ -1,10 +1,20 @@ @load "time" +# make sure gettimeofday() is consistent with systime(). We must call +# gettimeofday() before systime() to make sure the subtraction gives 0 +# without risk of rolling over to the next second. +function timecheck(st,res) { + res = gettimeofday() + st = systime() + printf "gettimeofday - systime = %d\n", res-st + return res +} + BEGIN { delta = 1.3 - printf "gettimeofday - systime = %d\n", (t0 = gettimeofday())-systime() + t0 = timecheck() printf "sleep(%s) = %s\n",delta,sleep(delta) - printf "gettimeofday - systime = %d\n", (t1 = gettimeofday())-systime() + t1 = timecheck() slept = t1-t0 if ((slept < 0.9*delta) || (slept > 1.3*delta)) printf "Warning: tried to sleep %.2f secs, but slept for %.2f secs\n", |