Most of our transfer tests using socat use 'sleep' waaiting for the server side to be ready before starting the client. However in two_guests/basic the sleep is in the wrong place: rather than being between starting the server and starting the client, it's after waiting for the server to complete. This causes occasional hangs when the client runs before the server is ready - in that case the receiving guest sends an RST, which we don't (currently) propagate back to the sender. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/two_guests/basic | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/two_guests/basic b/test/two_guests/basic index 9ba5efe..e2338ff 100644 --- a/test/two_guests/basic +++ b/test/two_guests/basic @@ -52,33 +52,33 @@ check [ "__ADDR2_6__" = "__HOST_ADDR6__" ] test TCP/IPv4: guest 1 > guest 2 g1out GW1 ip -j -4 route show|jq -rM '.[] | select(.dst == "default").gateway' guest2b socat -u TCP4-LISTEN:10004 OPEN:msg,create,trunc +sleep 1 guest1 echo "Hello_from_guest_1" | socat -u STDIN TCP4:__GW1__:10004 guest2w -sleep 1 g2out MSG2 cat msg check [ "__MSG2__" = "Hello_from_guest_1" ] test TCP/IPv6: guest 2 > guest 1 g2out GW2_6 ip -j -6 route show|jq -rM '.[] | select(.dst == "default").gateway' guest1b socat -u TCP6-LISTEN:10001 OPEN:msg,create,trunc +sleep 1 guest2 echo "Hello_from_guest_2" | socat -u STDIN TCP6:[__GW2_6__%__IFNAME2__]:10001 guest1w -sleep 1 g1out MSG1 cat msg check [ "__MSG1__" = "Hello_from_guest_2" ] test UDP/IPv4: guest 1 > guest 2 guest2b socat -u TCP4-LISTEN:10004 OPEN:msg,create,trunc +sleep 1 guest1 echo "Hello_from_guest_1" | socat -u STDIN TCP4:__GW1__:10004 guest2w -sleep 1 g2out MSG2 cat msg check [ "__MSG2__" = "Hello_from_guest_1" ] test UDP/IPv6: guest 2 > guest 1 guest1b socat -u TCP6-LISTEN:10001 OPEN:msg,create,trunc +sleep 1 guest2 echo "Hello_from_guest_2" | socat -u STDIN TCP6:[__GW2_6__%__IFNAME2__]:10001 guest1w -sleep 1 g1out MSG1 cat msg check [ "__MSG1__" = "Hello_from_guest_2" ] -- 2.47.0
On Tue, 5 Nov 2024 12:44:04 +1100 David Gibson <david(a)gibson.dropbear.id.au> wrote:Most of our transfer tests using socat use 'sleep' waaiting for the server side to be ready before starting the client. However in two_guests/basic the sleep is in the wrong place: rather than being between starting the server and starting the client, it's after waiting for the server to complete. This causes occasional hangs when the client runs before the server is ready - in that case the receiving guest sends an RST, which we don't (currently) propagate back to the sender. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au>Oops. For some reason it never hang for me (there). Applied. -- Stefano