mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-27 13:27:50 +08:00
really fix netcat race
We hit this once every few Jenkins runs. This: 1. Ensures netcat has started before we try to use it. 2. Waits for it to actually write the request before trying to read it. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
parent
af73c5097c
commit
c0f979dfe1
@ -10,11 +10,43 @@ test_description="test http requests made by cli"
|
||||
|
||||
test_init_ipfs
|
||||
|
||||
test_expect_success "can make http request against nc server" '
|
||||
nc -ld 5005 > nc_out &
|
||||
test_expect_success "start nc" '
|
||||
rm -f nc_out nc_outp nc_inp && mkfifo nc_inp nc_outp
|
||||
|
||||
nc -k -l 127.0.0.1 5005 <nc_inp >nc_outp &
|
||||
NCPID=$!
|
||||
go-sleep 0.5s && kill "$NCPID" &
|
||||
ipfs cat /ipfs/Qmabcdef --api /ip4/127.0.0.1/tcp/5005 || true
|
||||
|
||||
exec 6>nc_inp 7<nc_outp
|
||||
|
||||
while ! nc -z 127.0.0.1 5005; do
|
||||
go-sleep 100ms
|
||||
done
|
||||
'
|
||||
|
||||
test_expect_success "can make http request against nc server" '
|
||||
ipfs cat /ipfs/Qmabcdef --api /ip4/127.0.0.1/tcp/5005 &
|
||||
IPFSPID=$!
|
||||
|
||||
# handle request
|
||||
while read line; do
|
||||
if [[ "$line" == "$(echo -e "\r")" ]]; then
|
||||
break
|
||||
fi
|
||||
echo "$line"
|
||||
done <&7 >nc_out &&
|
||||
|
||||
echo -e "HTTP/1.1 200 OK\r" >&6 &&
|
||||
echo -e "Content-Type: text/plain\r" >&6 &&
|
||||
echo -e "Content-Length: 0\r" >&6 &&
|
||||
echo -e "\r" >&6 &&
|
||||
exec 6<&- &&
|
||||
|
||||
# Wait for IPFS
|
||||
wait $IPFSPID
|
||||
'
|
||||
|
||||
test_expect_success "stop nc" '
|
||||
kill "$NCPID" && wait "$NCPID" || true
|
||||
'
|
||||
|
||||
test_expect_success "output does not contain multipart info" '
|
||||
|
||||
@ -10,11 +10,43 @@ test_description="test dns resolution of api endpoint by cli"
|
||||
|
||||
test_init_ipfs
|
||||
|
||||
test_expect_success "can make http request against dns resolved nc server" '
|
||||
nc -ld 5005 > nc_out &
|
||||
test_expect_success "start nc" '
|
||||
rm -f nc_out nc_outp nc_inp && mkfifo nc_inp nc_outp
|
||||
|
||||
nc -k -l 127.0.0.1 5006 <nc_inp >nc_outp &
|
||||
NCPID=$!
|
||||
go-sleep 1s && kill "$NCPID" &
|
||||
ipfs cat /ipfs/Qmabcdef --api /dns4/localhost/tcp/5005 || true
|
||||
|
||||
exec 6>nc_inp 7<nc_outp
|
||||
|
||||
while ! nc -z 127.0.0.1 5006; do
|
||||
go-sleep 100ms
|
||||
done
|
||||
'
|
||||
|
||||
test_expect_success "can make http request against dns resolved nc server" '
|
||||
ipfs cat /ipfs/Qmabcdef --api /dns4/localhost/tcp/5006 &
|
||||
IPFSPID=$!
|
||||
|
||||
# handle request
|
||||
while read line; do
|
||||
if [[ "$line" == "$(echo -e "\r")" ]]; then
|
||||
break
|
||||
fi
|
||||
echo "$line"
|
||||
done <&7 >nc_out &&
|
||||
|
||||
echo -e "HTTP/1.1 200 OK\r" >&6 &&
|
||||
echo -e "Content-Type: text/plain\r" >&6 &&
|
||||
echo -e "Content-Length: 0\r" >&6 &&
|
||||
echo -e "\r" >&6 &&
|
||||
exec 6<&- &&
|
||||
|
||||
# Wait for IPFS
|
||||
wait $IPFSPID
|
||||
'
|
||||
|
||||
test_expect_success "stop nc" '
|
||||
kill "$NCPID" && wait "$NCPID" || true
|
||||
'
|
||||
|
||||
test_expect_success "request was received by local nc server" '
|
||||
|
||||
Loading…
Reference in New Issue
Block a user