[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/6] tests: avoid spurious parallel failure due to temporary
From: |
Jim Meyering |
Subject: |
Re: [PATCH 6/6] tests: avoid spurious parallel failure due to temporary disk full |
Date: |
Mon, 04 Apr 2011 08:39:49 +0200 |
Jim Meyering wrote:
> From: Jim Meyering <address@hidden>
>
> Running the new fiemap-empty test uses 600MB of disk space via
> fallocate, and in so doing caused failure in unrelated tests that
> were running in parallel on a small file system. Rather than
> simply running fallocate (which allocates the space, inducing
> disk full when it fails), skip the test if there is less than
> 800MB of free space, as computed via stat and awk.
> * tests/init.cfg (require_file_system_bytes_free_): New function.
> * tests/cp/fiemap-empty: Use it.
> ---
> tests/cp/fiemap-empty | 7 +++++++
> tests/init.cfg | 8 ++++++++
> 2 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/tests/cp/fiemap-empty b/tests/cp/fiemap-empty
> index 203619a..42d816b 100755
> --- a/tests/cp/fiemap-empty
> +++ b/tests/cp/fiemap-empty
> @@ -31,6 +31,13 @@ fallocate -l 1 -n falloc.test ||
> skip_test_ 'this file system lacks FALLOCATE support'
> rm falloc.test
>
> +# Require more space than we'll actually use, so that
> +# tests run in parallel do not run out of space.
> +# Otherwise, with inadequate space, simply running the following
> +# fallocate command would induce a temporary disk-full condition,
> +# which would cause failure of unrelated tests run in parallel.
> +require_file_system_bytes_free_ 800000000
> +
> fallocate -l 600000000 space.test ||
> skip_test_ 'this test needs at least 600MB free space'
>
> diff --git a/tests/init.cfg b/tests/init.cfg
> index 0711455..49cc4ee 100644
> --- a/tests/init.cfg
> +++ b/tests/init.cfg
> @@ -151,6 +151,14 @@ require_built_()
> test $skip_ = yes && skip_test_ "required program(s) not built"
> }
>
> +require_file_system_bytes_free_()
> +{
> + local req=$1
> + local expr=$(stat -f --printf "($req + %S - 1) / %S <= %f" .)
> + awk "BEGIN{ exit !($expr) }" \
> + || skip_test_ "this test needs at least $req bytes of free space"
I realized that with awk we don't need the +%S-1,
since it does floating point arithmetic:
local expr=$(stat -f --printf "$req / %S <= %f" .)
- minor test improvements, Jim Meyering, 2011/04/04
- [PATCH 1/6] tests: minor improvement of sc_tight_scope rule, Jim Meyering, 2011/04/04
- [PATCH 2/6] tests: convert common root-build test failure to a "skip", Jim Meyering, 2011/04/04
- [PATCH 3/6] tests: preserve-gid: remove useless use of "env", Jim Meyering, 2011/04/04
- [PATCH 4/6] tests: preserve-gid: don't chown temporary PATH dir to a nameless UID, Jim Meyering, 2011/04/04
- [PATCH 5/6] tests: don't ever leave a backgrounded "sleep 10m" process, Jim Meyering, 2011/04/04
- [PATCH 6/6] tests: avoid spurious parallel failure due to temporary disk full, Jim Meyering, 2011/04/04
Re: minor test improvements, Jim Meyering, 2011/04/04