1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-21 11:16:16 +02:00

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.
This commit is contained in:
Pádraig Brady
2020-03-01 22:28:29 +00:00
parent ab305f746e
commit f2034aa9bb
3 changed files with 47 additions and 21 deletions

View File

@@ -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 \

View File

@@ -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

View File

@@ -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