diff options
author | Tom Jones <thj@freebsd.org> | 2024-02-07 13:34:56 +0000 |
---|---|---|
committer | Ole Tr�an <otroan@employees.org> | 2024-03-26 15:12:48 +0000 |
commit | b3ee84d0bb531f0600e3c038e78680c083e5bb77 (patch) | |
tree | b87c41d043352ba90fb8b42748146990f6235ea4 | |
parent | 26eec75f2b30f4c03b4ca671165cd0d4823f0175 (diff) |
tests: Add a socket timeout
On FreeBSD a races seems to occur between the states socket connecting
and VPP accepting the connection and calling getpeername. The recv_fd
call here will fail with no fds before the VPP process has time to
handle the connection.
Introducing a socket timeout removes this failure on FreeBSD and allows
the test suite to run. Add a timeout on all platforms to try to avoid
this race everywhere.
Type: improvement
Change-Id: I96f77f924a9491222bc213b534cb17001d081f3f
Signed-off-by: Tom Jones <thj@freebsd.org>
-rwxr-xr-x | src/vpp-api/python/vpp_papi/vpp_stats.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/vpp-api/python/vpp_papi/vpp_stats.py b/src/vpp-api/python/vpp_papi/vpp_stats.py index 8cbe737db92..aa9ff85b3c7 100755 --- a/src/vpp-api/python/vpp_papi/vpp_stats.py +++ b/src/vpp-api/python/vpp_papi/vpp_stats.py @@ -136,6 +136,12 @@ class VPPStats: if self.connected: return sock = socket.socket(socket.AF_UNIX, socket.SOCK_SEQPACKET) + + # Our connect races the corresponding recv_fds call in VPP, if we beat + # VPP then we will try (unsuccessfully) to receive file descriptors and + # will have gone away before VPP can respond to our connect. A short + # timeout here stops this error occurring. + sock.settimeout(1) sock.connect(self.socketname) mfd = recv_fd(sock) |