test-webserver: Fix race condition
authorSimon McVittie <smcv@debian.org>
Tue, 28 Aug 2018 15:26:38 +0000 (16:26 +0100)
committerSimon McVittie <smcv@debian.org>
Sat, 15 Sep 2018 10:41:26 +0000 (11:41 +0100)
If we rely on the background subshell to create the httpd-output file,
and we are unlucky, then the "cp" invocation in the loop might execute
before the file has been created, and fail. This appears to have
happened on Debian's arm64 autobuilder, which failed with:

    Running web server: PYTHONUNBUFFERED=1 setsid python3 /<<PKGBUILDDIR>>/tests/http-utils-test-server.py 0
    Web server pid: 13319
    Waiting for web server (1/300)...
    cp: cannot stat '/var/tmp/tap-test.p1cxRN/httpd-output': No such file or directory

Signed-off-by: Simon McVittie <smcv@debian.org>
Forwarded: https://github.com/flatpak/flatpak/pull/2098

Gbp-Pq: Name test-webserver-Fix-race-condition.patch

tests/test-webserver.sh

index 4508537de2cc984a77c6e40015474240546efe17..6d10b011a91695bb4455ff0aa47f671f9ac7a202 100755 (executable)
@@ -8,6 +8,7 @@ test_tmpdir=$(pwd)
 
 [ "$dir" != "" ] && cd ${dir}
 echo "Running web server: PYTHONUNBUFFERED=1 setsid $cmd" >&2
+touch ${test_tmpdir}/httpd-output
 env PYTHONUNBUFFERED=1 setsid $cmd >${test_tmpdir}/httpd-output &
 child_pid=$!
 echo "Web server pid: $child_pid" >&2