summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2014-04-09 15:28:00 +0200
committerMichael Vogt <mvo@ubuntu.com>2014-04-09 15:28:00 +0200
commit5572f6bdcb947e11f32e2a035438d9d3899ad46d (patch)
treed4faf84b8336b8b61a9f1a9a7426f32ad03f8d14
parentd5b21526b38f816974182c5f56db0e09a0446112 (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
-rw-r--r--test/integration/framework19
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/'
}