tests: refactor the stat-birthtime test to use retry_delay_
authorPádraig Brady <P@draigBrady.com>
Mon, 4 Oct 2010 15:54:22 +0000 (16:54 +0100)
committerPádraig Brady <P@draigBrady.com>
Mon, 4 Oct 2010 15:54:22 +0000 (16:54 +0100)
* tests/misc/stat-birthtime: This recently added test
fits the pattern of requiring a delay to pass, so get
it to use retry_delay_()

tests/misc/stat-birthtime

index 4490ee8..e584df0 100755 (executable)
@@ -27,15 +27,25 @@ atime=$(stat --format %X a) || fail=1
 mtime=$(stat --format %Y a) || fail=1
 ctime=$(stat --format %Z a) || fail=1
 
-case $(stat --format %x a) in
-  *.000000000*) sleep 2;; # worst case file system is FAT
-  *) sleep .02;; # should be adequate for any system with subsecond resolution
-esac
-
-touch a || fail=1
-test "x$btime" = x$(stat --format %W a) || fail=1
-test "x$atime" != x$(stat --format %X a) || fail=1
-test "x$mtime" != x$(stat --format %Y a) || fail=1
-test "x$ctime" != x$(stat --format %Z a) || fail=1
+# Wait up to 2.17s for timestamps to change.
+# ----------------------------------------
+# iterations   file system resolution  e.g.
+# ----------------------------------------
+# 1            nano or micro second    ext4
+# 4            1 second                ext3
+# 5            2 second                FAT
+# ----------------------------------------
+check_timestamps_updated()
+{
+  local delay="$1"
+  sleep $delay
+  touch a || fail=1
+
+  test "x$btime" = x$(stat --format %W a) &&
+  test "x$atime" != x$(stat --format %X a) &&
+  test "x$mtime" != x$(stat --format %Y a) &&
+  test "x$ctime" != x$(stat --format %Z a)
+}
+retry_delay_ check_timestamps_updated .07 5 || fail=1
 
 Exit $fail