e2e: Fix ncsvr to wait for input on HTTP

This caused occasional e2e flakes when the server responded before the
client request had been sent.
This commit is contained in:
Tim Hockin 2022-06-25 16:41:44 -07:00
parent 3719d0385e
commit ec25d1a3f5
2 changed files with 28 additions and 10 deletions

View File

@ -20,7 +20,11 @@ if [ -z "$1" -o -z "$2" ]; then
exit 1 exit 1
fi fi
F="/tmp/fifo.$RANDOM"
while true; do while true; do
sh -c "$2" | nc -l -p "$1" -N -w0 >/dev/null rm -f "$F"
mkfifo "$F"
cat "$F" | sh -c "$2" 2>&1 | nc -l -p "$1" -N -w1 > "$F"
date >> /var/log/hits date >> /var/log/hits
done done

View File

@ -1061,7 +1061,7 @@ function e2e::askpass_url_wrong_password() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 ' 80 'read X
echo "HTTP/1.1 200 OK" echo "HTTP/1.1 200 OK"
echo echo
echo "username=my-username" echo "username=my-username"
@ -1094,7 +1094,7 @@ function e2e::askpass_url() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 ' 80 'read X
echo "HTTP/1.1 200 OK" echo "HTTP/1.1 200 OK"
echo echo
echo "username=my-username" echo "username=my-username"
@ -1147,7 +1147,7 @@ function e2e::askpass_url_flaky() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 ' 80 'read X
echo "HTTP/1.1 200 OK" echo "HTTP/1.1 200 OK"
echo echo
if [ -f /tmp/flag ]; then if [ -f /tmp/flag ]; then
@ -1336,7 +1336,9 @@ function e2e::webhook_success() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'echo "HTTP/1.1 200 OK"') 80 'read X
echo "HTTP/1.1 200 OK"
')
IP=$(docker_ip "$CTR") IP=$(docker_ip "$CTR")
echo "$FUNCNAME 1" > "$REPO"/file echo "$FUNCNAME 1" > "$REPO"/file
git -C "$REPO" commit -qam "$FUNCNAME 1" git -C "$REPO" commit -qam "$FUNCNAME 1"
@ -1382,7 +1384,9 @@ function e2e::webhook_fail_retry() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'echo "HTTP/1.1 500 Internal Server Error"') 80 'read X
echo "HTTP/1.1 500 Internal Server Error"
')
IP=$(docker_ip "$CTR") IP=$(docker_ip "$CTR")
echo "$FUNCNAME 1" > "$REPO"/file echo "$FUNCNAME 1" > "$REPO"/file
git -C "$REPO" commit -qam "$FUNCNAME 1" git -C "$REPO" commit -qam "$FUNCNAME 1"
@ -1411,7 +1415,9 @@ function e2e::webhook_fail_retry() {
--ip="$IP" \ --ip="$IP" \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'echo "HTTP/1.1 200 OK"') 80 'read X
echo "HTTP/1.1 200 OK"
')
sleep 2 sleep 2
HITS=$(cat "$HITLOG" | wc -l) HITS=$(cat "$HITLOG" | wc -l)
if [[ "$HITS" < 1 ]]; then if [[ "$HITS" < 1 ]]; then
@ -1430,7 +1436,10 @@ function e2e::webhook_success_once() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'sleep 3 && echo "HTTP/1.1 200 OK"') 80 'read X
sleep 3
echo "HTTP/1.1 200 OK"
')
IP=$(docker_ip "$CTR") IP=$(docker_ip "$CTR")
echo "$FUNCNAME 1" > "$REPO"/file echo "$FUNCNAME 1" > "$REPO"/file
git -C "$REPO" commit -qam "$FUNCNAME 1" git -C "$REPO" commit -qam "$FUNCNAME 1"
@ -1465,7 +1474,10 @@ function e2e::webhook_fail_retry_once() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'sleep 3 && echo "HTTP/1.1 500 Internal Server Error"') 80 'read X
sleep 3
echo "HTTP/1.1 500 Internal Server Error"
')
IP=$(docker_ip "$CTR") IP=$(docker_ip "$CTR")
echo "$FUNCNAME 1" > "$REPO"/file echo "$FUNCNAME 1" > "$REPO"/file
git -C "$REPO" commit -qam "$FUNCNAME 1" git -C "$REPO" commit -qam "$FUNCNAME 1"
@ -1499,7 +1511,9 @@ function e2e::webhook_fire_and_forget() {
CTR=$(docker_run \ CTR=$(docker_run \
-v "$HITLOG":/var/log/hits \ -v "$HITLOG":/var/log/hits \
e2e/test/test-ncsvr \ e2e/test/test-ncsvr \
80 'echo "HTTP/1.1 404 Not Found"') 80 'read X
echo "HTTP/1.1 404 Not Found"
')
IP=$(docker_ip "$CTR") IP=$(docker_ip "$CTR")
# First sync # First sync