summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2020-03-01 22:28:29 +0000
committerPádraig Brady <P@draigBrady.com>2020-03-01 23:36:05 +0000
commitf2034aa9bbffa766c8824d07c234ddb39620f853 (patch)
treedb93c4c3c93b93b5e93c594e63545cc3578500eb
parentab305f746eba155188daa37a50da30032f265e51 (diff)
downloadcoreutils-f2034aa9bbffa766c8824d07c234ddb39620f853.tar.gz
tests: avoid a false failure on OpenIndiana 11
* tests/misc/timeout-parameters.sh: Split the large timeout handling to ... * tests/misc/timeout-large-parameters.sh: ... here, so that the 3 second delay is contained in its own test, and if the test is skipped due invalid handling within timeout(1), it will be more apparent. Also adjust the check so we skip whenever the kernel timer fires immediately, to handle the buggy OpenIndiana 11 kernel also. Reported by Bruno Haible.
-rw-r--r--tests/local.mk1
-rwxr-xr-xtests/misc/timeout-large-parameters.sh46
-rwxr-xr-xtests/misc/timeout-parameters.sh21
3 files changed, 47 insertions, 21 deletions
diff --git a/tests/local.mk b/tests/local.mk
index 7c8196a97..594a9d0b5 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -421,6 +421,7 @@ all_tests = \
tests/misc/timeout.sh \
tests/misc/timeout-blocked.pl \
tests/misc/timeout-group.sh \
+ tests/misc/timeout-large-parameters.sh \
tests/misc/timeout-parameters.sh \
tests/misc/tr.pl \
tests/misc/tr-case-class.sh \
diff --git a/tests/misc/timeout-large-parameters.sh b/tests/misc/timeout-large-parameters.sh
new file mode 100755
index 000000000..3445617af
--- /dev/null
+++ b/tests/misc/timeout-large-parameters.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Validate large timeout parameters
+# Separated from standard parameter testing due to kernel overflow bugs.
+
+# Copyright (C) 2008-2020 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 <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ timeout
+getlimits_
+
+# It was seen on 32 bit Linux/HPPA and OpenIndiana 11
+# that a kernel time_t overflowing cause the timer to fire immediately.
+# This is still racy, but unlikely to cause an issue unless
+# timeout can't process the timer firing within 3 seconds.
+timeout $TIME_T_OFLOW sleep 3
+if test $? = 124; then
+ skip_ 'timeout $TIME_T_OFLOW ..., timed out immediately!'
+fi
+
+# timeout overflow
+timeout $UINT_OFLOW sleep 0 || fail=1
+
+# timeout overflow
+timeout ${TIME_T_OFLOW}d sleep 0 || fail=1
+
+# floating point notation
+timeout 2.34e+5d sleep 0 || fail=1
+
+# floating point overflow
+timeout $LDBL_MAX sleep 0 || fail=1
+returns_ 125 timeout -- -$LDBL_MAX sleep 0 || fail=1
+
+Exit $fail
diff --git a/tests/misc/timeout-parameters.sh b/tests/misc/timeout-parameters.sh
index aa0599c9e..9256b5383 100755
--- a/tests/misc/timeout-parameters.sh
+++ b/tests/misc/timeout-parameters.sh
@@ -32,27 +32,6 @@ returns_ 125 timeout --kill-after=invalid 1 sleep 0 || fail=1
# invalid timeout suffix
returns_ 125 timeout 42D sleep 0 || fail=1
-# It was seen on 32 bit Linux/HPPA that a kernel time_t overflowed,
-# thus causing the timer to fire immediately.
-# So verify that doesn't happen before checking large timeouts
-KERNEL_OVERFLOW_LIMIT=$(expr $TIME_T_MAX - $(date +%s) + 100) ||
- skip_ "failed to adjust TIME_T_MAX $TIME_T_MAX"
-timeout $KERNEL_OVERFLOW_LIMIT sleep 0
-if test $? != 124; then
- # timeout overflow
- timeout $UINT_OFLOW sleep 0 || fail=1
-
- # timeout overflow
- timeout ${TIME_T_OFLOW}d sleep 0 || fail=1
-
- # floating point notation
- timeout 2.34e+5d sleep 0 || fail=1
-
- # floating point overflow
- timeout $LDBL_MAX sleep 0 || fail=1
- returns_ 125 timeout -- -$LDBL_MAX sleep 0 || fail=1
-fi
-
# floating point notation
timeout 10.34 sleep 0 || fail=1