Skip to content

Commit 5063149

Browse files
committed
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.
1 parent c2d0a9d commit 5063149

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

_test_tools/ncsvr/ncsvr.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ if [ -z "$1" -o -z "$2" ]; then
2020
exit 1
2121
fi
2222

23+
F="/tmp/fifo.$RANDOM"
24+
2325
while true; do
24-
sh -c "$2" | nc -l -p "$1" -N -w0 >/dev/null
26+
rm -f "$F"
27+
mkfifo "$F"
28+
cat "$F" | sh -c "$2" 2>&1 | nc -l -p "$1" -N -w1 > "$F"
2529
date >> /var/log/hits
2630
done

test_e2e.sh

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ function e2e::auth_askpass_url_wrong_password() {
937937
CTR=$(docker_run \
938938
-v "$HITLOG":/var/log/hits \
939939
e2e/test/test-ncsvr \
940-
80 '
940+
80 'read X
941941
echo "HTTP/1.1 200 OK"
942942
echo
943943
echo "username=my-username"
@@ -969,7 +969,7 @@ function e2e::auth_askpass_url_correct_password() {
969969
CTR=$(docker_run \
970970
-v "$HITLOG":/var/log/hits \
971971
e2e/test/test-ncsvr \
972-
80 '
972+
80 'read X
973973
echo "HTTP/1.1 200 OK"
974974
echo
975975
echo "username=my-username"
@@ -1022,7 +1022,7 @@ function e2e::auth_askpass_url_flaky() {
10221022
CTR=$(docker_run \
10231023
-v "$HITLOG":/var/log/hits \
10241024
e2e/test/test-ncsvr \
1025-
80 '
1025+
80 'read X
10261026
echo "HTTP/1.1 200 OK"
10271027
echo
10281028
if [ -f /tmp/flag ]; then
@@ -1209,7 +1209,9 @@ function e2e::webhook_success() {
12091209
CTR=$(docker_run \
12101210
-v "$HITLOG":/var/log/hits \
12111211
e2e/test/test-ncsvr \
1212-
80 'echo "HTTP/1.1 200 OK"')
1212+
80 'read X
1213+
echo "HTTP/1.1 200 OK"
1214+
')
12131215
IP=$(docker_ip "$CTR")
12141216
echo "$FUNCNAME 1" > "$REPO"/file
12151217
git -C "$REPO" commit -qam "$FUNCNAME 1"
@@ -1255,7 +1257,9 @@ function e2e::webhook_fail_retry() {
12551257
CTR=$(docker_run \
12561258
-v "$HITLOG":/var/log/hits \
12571259
e2e/test/test-ncsvr \
1258-
80 'echo "HTTP/1.1 500 Internal Server Error"')
1260+
80 'read X
1261+
echo "HTTP/1.1 500 Internal Server Error"
1262+
')
12591263
IP=$(docker_ip "$CTR")
12601264
echo "$FUNCNAME 1" > "$REPO"/file
12611265
git -C "$REPO" commit -qam "$FUNCNAME 1"
@@ -1284,7 +1288,9 @@ function e2e::webhook_fail_retry() {
12841288
--ip="$IP" \
12851289
-v "$HITLOG":/var/log/hits \
12861290
e2e/test/test-ncsvr \
1287-
80 'echo "HTTP/1.1 200 OK"')
1291+
80 'read X
1292+
echo "HTTP/1.1 200 OK"
1293+
')
12881294
sleep 2
12891295
HITS=$(cat "$HITLOG" | wc -l)
12901296
if [[ "$HITS" < 1 ]]; then
@@ -1303,7 +1309,10 @@ function e2e::webhook_success_once() {
13031309
CTR=$(docker_run \
13041310
-v "$HITLOG":/var/log/hits \
13051311
e2e/test/test-ncsvr \
1306-
80 'sleep 3 && echo "HTTP/1.1 200 OK"')
1312+
80 'read X
1313+
sleep 3
1314+
echo "HTTP/1.1 200 OK"
1315+
')
13071316
IP=$(docker_ip "$CTR")
13081317
echo "$FUNCNAME 1" > "$REPO"/file
13091318
git -C "$REPO" commit -qam "$FUNCNAME 1"
@@ -1338,7 +1347,10 @@ function e2e::webhook_fail_retry_once() {
13381347
CTR=$(docker_run \
13391348
-v "$HITLOG":/var/log/hits \
13401349
e2e/test/test-ncsvr \
1341-
80 'sleep 3 && echo "HTTP/1.1 500 Internal Server Error"')
1350+
80 'read X
1351+
sleep 3
1352+
echo "HTTP/1.1 500 Internal Server Error"
1353+
')
13421354
IP=$(docker_ip "$CTR")
13431355
echo "$FUNCNAME 1" > "$REPO"/file
13441356
git -C "$REPO" commit -qam "$FUNCNAME 1"
@@ -1373,7 +1385,9 @@ function e2e::webhook_fire_and_forget() {
13731385
CTR=$(docker_run \
13741386
-v "$HITLOG":/var/log/hits \
13751387
e2e/test/test-ncsvr \
1376-
80 'echo "HTTP/1.1 404 Not Found"')
1388+
80 'read X
1389+
echo "HTTP/1.1 404 Not Found"
1390+
')
13771391
IP=$(docker_ip "$CTR")
13781392

13791393
# First sync

0 commit comments

Comments
 (0)