diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-04-09 15:28:00 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-04-09 15:28:00 +0200 |
commit | 5572f6bdcb947e11f32e2a035438d9d3899ad46d (patch) | |
tree | d4faf84b8336b8b61a9f1a9a7426f32ad03f8d14 /test/integration/framework | |
parent | d5b21526b38f816974182c5f56db0e09a0446112 (diff) |
Fix possible race when stunnel/aptwebserver create their PID files
This patch should fix spurious test failures in jenkins or travis
that are caused by a race condition in the {stunnel,aptwebserver}.pid
file creation
Diffstat (limited to 'test/integration/framework')
-rw-r--r-- | test/integration/framework | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/integration/framework b/test/integration/framework index 1c6f041b0..8d8a0becc 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -879,6 +879,20 @@ rewritesourceslist() { done } +# wait for up to 10s for a pid file to appear to avoid possible race +# when a helper is started and dosn't write the PID quick enough +waitforpidfile() { + local PIDFILE="$1" + for i in $(seq 10); do + if test -s "$PIDFILE"; then + return 0 + fi + sleep 1 + done + msgdie "waiting for $PIDFILE failed" + return 1 +} + changetowebserver() { if [ "$1" != '--no-rewrite' ]; then rewritesourceslist 'http://localhost:8080/' @@ -892,6 +906,7 @@ changetowebserver() { cat $LOG false fi + waitforpidfile aptwebserver.pid local PID="$(cat aptwebserver.pid)" if [ -z "$PID" ]; then msgdie 'Could not fork aptwebserver successfully' @@ -919,7 +934,11 @@ accept = 4433 connect = 8080 " > ${TMPWORKINGDIRECTORY}/stunnel.conf stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf" + waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid" local PID="$(cat ${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid)" + if [ -z "$PID" ]; then + msgdie 'Could not fork stunnel4 successfully' + fi addtrap 'prefix' "kill ${PID};" rewritesourceslist 'https://localhost:4433/' } |