Add upstream patch to try to make test-captive more stable.
This commit is contained in:
parent
44e31cc2b8
commit
cdf9779d17
154
0001-tests-test-captive.sh-Try-to-make-this-test-more-sta.patch
Normal file
154
0001-tests-test-captive.sh-Try-to-make-this-test-more-sta.patch
Normal file
@ -0,0 +1,154 @@
|
||||
From 376cda7c1ede6f03f8e922e7eae8f8b60cdf8e79 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 14 Nov 2019 11:11:22 +0000
|
||||
Subject: [PATCH] tests/test-captive.sh: Try to make this test more stable on
|
||||
slower machines.
|
||||
|
||||
This test relies on sending a signal to nbdkit which causes nbdkit to
|
||||
exit before the captive subprocess. On slow machines (especially
|
||||
armv7 and s390x in Fedora Koji) it appears that the captive subprocess
|
||||
can still exit before nbdkit receives the signal, resulting in an
|
||||
incorrect exit status and test failure.
|
||||
|
||||
There's not a lot we can do here except to increase the sleep.
|
||||
Alternatives might be to try to inspect the status of the nbdkit
|
||||
process to see if it has become a zombie yet, but that would be hard
|
||||
to make portable.
|
||||
|
||||
Typical failure on armv7:
|
||||
|
||||
FAIL: test-captive.sh
|
||||
=====================
|
||||
+ fail=0
|
||||
++ mktemp -u
|
||||
+ sock=/tmp/tmp.bHGd8vKHxI
|
||||
+ files='/tmp/tmp.bHGd8vKHxI captive.out captive.pid'
|
||||
+ rm -f /tmp/tmp.bHGd8vKHxI captive.out captive.pid
|
||||
+ cleanup_fn rm -f /tmp/tmp.bHGd8vKHxI captive.out captive.pid
|
||||
+ _cleanup_hook[${#_cleanup_hook[@]}]='rm -f /tmp/tmp.bHGd8vKHxI captive.out captive.pid'
|
||||
+ nbdkit -U /tmp/tmp.bHGd8vKHxI example1 --run '
|
||||
echo nbd=$nbd; echo port=$port; echo socket=$unixsocket
|
||||
'
|
||||
++ cat captive.out
|
||||
+ '[' 'nbd=nbd:unix:/tmp/tmp.bHGd8vKHxI
|
||||
port=
|
||||
socket=/tmp/tmp.bHGd8vKHxI' '!=' 'nbd=nbd:unix:/tmp/tmp.bHGd8vKHxI
|
||||
port=
|
||||
socket=/tmp/tmp.bHGd8vKHxI' ']'
|
||||
+ status=0
|
||||
+ nbdkit -U - example1 --run 'exit 2'
|
||||
+ status=2
|
||||
+ test 2 '!=' 2
|
||||
+ test -s captive.out
|
||||
+ status=0
|
||||
+ nbdkit -U - -P captive.pid example1 --run '
|
||||
for i in {1..60}; do
|
||||
if test -s captive.pid; then break; fi
|
||||
sleep 1
|
||||
done
|
||||
if ! test -s captive.pid; then
|
||||
echo "$0: no pidfile yet"
|
||||
exit 10
|
||||
fi
|
||||
kill -s ABRT $(cat captive.pid) || exit 10
|
||||
sleep 5
|
||||
'
|
||||
++ kill -l ABRT
|
||||
+ test 0 '!=' 134
|
||||
+ echo './test-captive.sh: unexpected exit status 0'
|
||||
./test-captive.sh: unexpected exit status 0
|
||||
+ fail=1
|
||||
+ test -s captive.out
|
||||
+ exit 1
|
||||
+ _run_cleanup_hooks
|
||||
+ status=1
|
||||
+ set +e
|
||||
+ trap '' INT QUIT TERM EXIT ERR
|
||||
+ echo ./test-captive.sh: run cleanup hooks: exit code 1
|
||||
./test-captive.sh: run cleanup hooks: exit code 1
|
||||
+ (( i = 0 ))
|
||||
+ (( i < 1 ))
|
||||
+ rm -f /tmp/tmp.bHGd8vKHxI captive.out captive.pid
|
||||
+ (( ++i ))
|
||||
+ (( i < 1 ))
|
||||
+ exit 1
|
||||
FAIL test-captive.sh (exit status: 1)
|
||||
|
||||
Typical failure on s390x:
|
||||
|
||||
FAIL: test-captive.sh
|
||||
=====================
|
||||
+ fail=0
|
||||
++ mktemp -u
|
||||
+ sock=/tmp/tmp.vTRXPPqeJR
|
||||
+ files='/tmp/tmp.vTRXPPqeJR captive.out captive.pid'
|
||||
+ rm -f /tmp/tmp.vTRXPPqeJR captive.out captive.pid
|
||||
+ cleanup_fn rm -f /tmp/tmp.vTRXPPqeJR captive.out captive.pid
|
||||
+ _cleanup_hook[${#_cleanup_hook[@]}]='rm -f /tmp/tmp.vTRXPPqeJR captive.out captive.pid'
|
||||
+ nbdkit -U /tmp/tmp.vTRXPPqeJR example1 --run '
|
||||
echo nbd=$nbd; echo port=$port; echo socket=$unixsocket
|
||||
'
|
||||
++ cat captive.out
|
||||
+ '[' 'nbd=nbd:unix:/tmp/tmp.vTRXPPqeJR
|
||||
port=
|
||||
socket=/tmp/tmp.vTRXPPqeJR' '!=' 'nbd=nbd:unix:/tmp/tmp.vTRXPPqeJR
|
||||
port=
|
||||
socket=/tmp/tmp.vTRXPPqeJR' ']'
|
||||
+ status=0
|
||||
+ nbdkit -U - example1 --run 'exit 2'
|
||||
+ status=2
|
||||
+ test 2 '!=' 2
|
||||
+ test -s captive.out
|
||||
+ status=0
|
||||
+ nbdkit -U - -P captive.pid example1 --run '
|
||||
for i in {1..60}; do
|
||||
if test -s captive.pid; then break; fi
|
||||
sleep 1
|
||||
done
|
||||
if ! test -s captive.pid; then
|
||||
echo "$0: no pidfile yet"
|
||||
exit 10
|
||||
fi
|
||||
kill -s ABRT $(cat captive.pid) || exit 10
|
||||
sleep 5
|
||||
'
|
||||
++ kill -l ABRT
|
||||
+ test 0 '!=' 134
|
||||
+ echo './test-captive.sh: unexpected exit status 0'
|
||||
./test-captive.sh: unexpected exit status 0
|
||||
+ fail=1
|
||||
+ test -s captive.out
|
||||
+ exit 1
|
||||
+ _run_cleanup_hooks
|
||||
+ status=1
|
||||
+ set +e
|
||||
+ trap '' INT QUIT TERM EXIT ERR
|
||||
+ echo ./test-captive.sh: run cleanup hooks: exit code 1
|
||||
./test-captive.sh: run cleanup hooks: exit code 1
|
||||
+ (( i = 0 ))
|
||||
+ (( i < 1 ))
|
||||
+ rm -f /tmp/tmp.vTRXPPqeJR captive.out captive.pid
|
||||
+ (( ++i ))
|
||||
+ (( i < 1 ))
|
||||
+ exit 1
|
||||
FAIL test-captive.sh (exit status: 1)
|
||||
---
|
||||
tests/test-captive.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/test-captive.sh b/tests/test-captive.sh
|
||||
index 82697a5..8762b86 100755
|
||||
--- a/tests/test-captive.sh
|
||||
+++ b/tests/test-captive.sh
|
||||
@@ -81,7 +81,7 @@ if ! test -s captive.pid; then
|
||||
exit 10
|
||||
fi
|
||||
kill -s ABRT $(cat captive.pid) || exit 10
|
||||
-sleep 5
|
||||
+sleep 10
|
||||
' > captive.out || status=$?
|
||||
if test $status != $(( 128 + $(kill -l ABRT) )); then
|
||||
echo "$0: unexpected exit status $status"
|
||||
--
|
||||
2.23.0
|
||||
|
@ -41,6 +41,9 @@ Source1: http://libguestfs.org/download/nbdkit/%{source_directory}/%{name
|
||||
Source2: libguestfs.keyring
|
||||
%endif
|
||||
|
||||
# Upstream patch to try to make test-captive more stable.
|
||||
Patch1: 0001-tests-test-captive.sh-Try-to-make-this-test-more-sta.patch
|
||||
|
||||
%if 0%{patches_touch_autotools}
|
||||
BuildRequires: autoconf, automake, libtool
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user