From 07f229e03063e254f16e3d4ccf33ebe90d789502 Mon Sep 17 00:00:00 2001 From: stijn Date: Wed, 25 Oct 2023 11:55:38 +0200 Subject: [PATCH] tests: Add socket timeout tests for connect and recv. Signed-off-by: stijn --- tests/multi_net/tcp_recv_timeout.py | 37 +++++++++++++++++++++++++ tests/multi_net/tcp_recv_timeout.py.exp | 6 ++++ tests/net_hosted/connect_timeout.py | 16 +++++++++++ tests/net_hosted/connect_timeout.py.exp | 1 + 4 files changed, 60 insertions(+) create mode 100644 tests/multi_net/tcp_recv_timeout.py create mode 100644 tests/multi_net/tcp_recv_timeout.py.exp create mode 100644 tests/net_hosted/connect_timeout.py create mode 100644 tests/net_hosted/connect_timeout.py.exp diff --git a/tests/multi_net/tcp_recv_timeout.py b/tests/multi_net/tcp_recv_timeout.py new file mode 100644 index 0000000000..415ee9dff1 --- /dev/null +++ b/tests/multi_net/tcp_recv_timeout.py @@ -0,0 +1,37 @@ +import errno +import socket + +PORT = 8000 + + +# Server +def instance0(): + multitest.globals(IP=multitest.get_network_ip()) + s = socket.socket() + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind(socket.getaddrinfo("0.0.0.0", PORT)[0][-1]) + s.listen() + multitest.next() + s2, _ = s.accept() + s2.settimeout(0.2) + try: + s2.recv(1) + except OSError as er: + print(er.errno in (errno.ETIMEDOUT, errno.EAGAIN) or str(er) == "timed out") + multitest.next() + s2.close() + s.close() + + +# Client +def instance1(): + multitest.next() + s = socket.socket() + s.connect(socket.getaddrinfo(IP, PORT)[0][-1]) + s.settimeout(0.2) + try: + s.recv(1) + except OSError as er: + print(er.errno in (errno.ETIMEDOUT, errno.EAGAIN) or str(er) == "timed out") + multitest.next() + s.close() diff --git a/tests/multi_net/tcp_recv_timeout.py.exp b/tests/multi_net/tcp_recv_timeout.py.exp new file mode 100644 index 0000000000..6c19840fdd --- /dev/null +++ b/tests/multi_net/tcp_recv_timeout.py.exp @@ -0,0 +1,6 @@ +--- instance0 --- +True +NEXT +--- instance1 --- +True +NEXT diff --git a/tests/net_hosted/connect_timeout.py b/tests/net_hosted/connect_timeout.py new file mode 100644 index 0000000000..1dc259d306 --- /dev/null +++ b/tests/net_hosted/connect_timeout.py @@ -0,0 +1,16 @@ +import errno +import socket + + +def test(peer_addr): + s = socket.socket() + s.settimeout(1) + try: + s.connect(peer_addr) + except OSError as er: + print(er.errno == errno.ETIMEDOUT or str(er) == "timed out") + s.close() + + +if __name__ == "__main__": + test(socket.getaddrinfo("192.0.0.0", 8888)[0][-1]) diff --git a/tests/net_hosted/connect_timeout.py.exp b/tests/net_hosted/connect_timeout.py.exp new file mode 100644 index 0000000000..0ca95142bb --- /dev/null +++ b/tests/net_hosted/connect_timeout.py.exp @@ -0,0 +1 @@ +True