While reviewing the recent sort patches I discovered something else that needed to be merged. One test in the patch assumes that sort -R opens /dev/urandom, and makes sure that file descriptor exhaustion doesn't occur. But sort -R no longer opens /dev/urandom by default, so the test doesn't actually test for the bug that it was designed for (and the test will succeed even if the bug was present). I installed this to resurrect the test.
>From 9e89f39526999c6eef0a0d0211eaa1804e62a628 Mon Sep 17 00:00:00 2001 From: Paul R. Eggert <[email protected]> Date: Fri, 16 Jul 2010 11:27:42 -0700 Subject: [PATCH] tests/misc/sort-merge-fdlimit: don't assume -R opens /dev/urandom * tests/misc/sort-merge-fdlimit: This test was written assuming that -R typically opens /dev/urandom, but that's no longer the case. Redo test to specify a random source; this resurrects the point of checking for file descriptor exhaustion. Also try plain -R, since that implementation may change in the future too. --- tests/misc/sort-merge-fdlimit | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/misc/sort-merge-fdlimit b/tests/misc/sort-merge-fdlimit index d1736f5..56b8518 100755 --- a/tests/misc/sort-merge-fdlimit +++ b/tests/misc/sort-merge-fdlimit @@ -31,6 +31,7 @@ mkdir in err || framework_failure for i in `seq 17`; do echo $i >in/$i done +seq 17 >some-data # When these tests are run inside the automated testing framework, they # have one less available file descriptor than when run outside the @@ -43,11 +44,14 @@ done && sort -m --batch-size=16 in/* 2>err/merge-default-err \ || ! grep "open failed" err/merge-default-err) || fail=1 -# If sort opens a file (/dev/urandom) to sort by random hashes of keys, +# If sort opens a file to sort by random hashes of keys, # it needs to consider this file against its limit on open file -# descriptors. -(ulimit -n 20 \ - && sort -mR --batch-size=16 in/* 2>err/merge-random-err \ - || ! grep "open failed" err/merge-random-err) || fail=1 +# descriptors. Test once with the default random source +# and once with an explicit source. +for randsource in '' --random-source=some-data; do + (ulimit -n 20 \ + && sort -mR $randsource --batch-size=16 in/* 2>err/merge-random-err \ + || ! grep "open failed" err/merge-random-err) || fail=1 +done Exit $fail -- 1.7.1
