[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [coreutils] [PATCH 1/2] stat: support printing birthtime
From: |
Pádraig Brady |
Subject: |
Re: [coreutils] [PATCH 1/2] stat: support printing birthtime |
Date: |
Mon, 04 Oct 2010 10:53:56 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 |
On 01/10/10 15:34, Eric Blake wrote:
> diff --git c/tests/misc/stat-birthtime i/tests/misc/stat-birthtime
> new file mode 100755
> index 0000000..d4f372e
> --- /dev/null
> +++ i/tests/misc/stat-birthtime
> @@ -0,0 +1,46 @@
> +#!/bin/sh
> +# ensure that stat attempts birthtime access
> +
> +# Copyright (C) 2010 Free Software Foundation, Inc.
> +
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 3 of the License, or
> +# (at your option) any later version.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +
> +if test "$VERBOSE" = yes; then
> + set -x
> + stat --version
> +fi
> +
> +. $srcdir/test-lib.sh
> +
> +# Whether birthtime is supported or not, it better not change even when
> +# [acm]time are modified. :)
> +touch a || fail=1
> +btime=$(stat --format %W a) || fail=1
> +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
> + *) # FIXME: sleep .1 would be sufficient if %X showed nanoseconds
> + sleep 1;; # 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
> +
> +Exit $fail
Note the above test fits the pattern of "requiring a delay to pass"
and so can use the retry_delay_ functionality used elsewhere.
The advantage is that the delay is 1s rather than 2 on
1s resolution file systems like ext3.
diff --git a/tests/misc/stat-birthtime b/tests/misc/stat-birthtime
index 4490ee8..e584df0 100755
--- a/tests/misc/stat-birthtime
+++ b/tests/misc/stat-birthtime
@@ -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
- Re: [coreutils] [PATCH 1/2] stat: support printing birthtime, (continued)
- Re: [coreutils] [PATCH 1/2] stat: support printing birthtime, Eric Blake, 2010/10/01
- [coreutils] [PATCH] maint: update sample test template, Eric Blake, 2010/10/01
- Re: [coreutils] [PATCH] maint: update sample test template, Jim Meyering, 2010/10/01
- Re: [coreutils] [PATCH] maint: update sample test template, Eric Blake, 2010/10/01
- [coreutils] [PATCH] tests: output --version of program under test, Eric Blake, 2010/10/01
Re: [coreutils] [PATCH 1/2] stat: support printing birthtime, Jim Meyering, 2010/10/01
Re: [coreutils] [PATCH 1/2] stat: support printing birthtime,
Pádraig Brady <=
Re: [coreutils] [PATCH 1/2] stat: support printing birthtime, Jim Meyering, 2010/10/04