summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2025-01-23 21:14:08 (GMT)
committerGitHub <noreply@github.com>2025-01-23 21:14:08 (GMT)
commit45db419c3104a14007ea9efbc4bff03aef8ed10c (patch)
tree554452fde8284baba9c66196e98bc8cdc51f5591
parent49edb990a5648b587c2aa0e6fadfd6d1e3ce9ee5 (diff)
downloadcpython-45db419c3104a14007ea9efbc4bff03aef8ed10c.zip
cpython-45db419c3104a14007ea9efbc4bff03aef8ed10c.tar.gz
cpython-45db419c3104a14007ea9efbc4bff03aef8ed10c.tar.bz2
[3.11] gh-119461: Fix ThreadedVSOCKSocketStreamTest (#129171)
Fix ThreadedVSOCKSocketStreamTest: if get_cid() returns the host address or the "any" address, use the local communication address (loopback): VMADDR_CID_LOCAL. On Linux 6.9, apparently, the /dev/vsock device is now available but get_cid() returns VMADDR_CID_ANY (-1). (cherry picked from commit e94dbe4ed83460f18bd72563c5f09f6cdc71f604) (cherry picked from commit c750061047ee520d8299334df4b112fd983d7e48) (cherry picked from commit cbfe3023e46b544b80ea1a38a8c900c6fb881554)
-rw-r--r--Lib/test/test_socket.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index cc803d8..267d812 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -43,6 +43,7 @@ HOST = socket_helper.HOST
# test unicode string and carriage return
MSG = 'Michael Gilfix was here\u1234\r\n'.encode('utf-8')
+VMADDR_CID_LOCAL = 1
VSOCKPORT = 1234
AIX = platform.system() == "AIX"
WSL = "microsoft-standard-WSL" in platform.release()
@@ -127,8 +128,8 @@ def _have_socket_qipcrtr():
def _have_socket_vsock():
"""Check whether AF_VSOCK sockets are supported on this host."""
- ret = get_cid() is not None
- return ret
+ cid = get_cid()
+ return (cid is not None)
def _have_socket_bluetooth():
@@ -471,8 +472,6 @@ class ThreadedRDSSocketTest(SocketRDSTest, ThreadableTest):
@unittest.skipIf(WSL, 'VSOCK does not work on Microsoft WSL')
@unittest.skipUnless(HAVE_SOCKET_VSOCK,
'VSOCK sockets required for this test.')
-@unittest.skipUnless(get_cid() != 2,
- "This test can only be run on a virtual guest.")
class ThreadedVSOCKSocketStreamTest(unittest.TestCase, ThreadableTest):
def __init__(self, methodName='runTest'):
@@ -494,10 +493,16 @@ class ThreadedVSOCKSocketStreamTest(unittest.TestCase, ThreadableTest):
self.cli = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)
self.addCleanup(self.cli.close)
cid = get_cid()
+ if cid in (socket.VMADDR_CID_HOST, socket.VMADDR_CID_ANY):
+ # gh-119461: Use the local communication address (loopback)
+ cid = VMADDR_CID_LOCAL
self.cli.connect((cid, VSOCKPORT))
def testStream(self):
- msg = self.conn.recv(1024)
+ try:
+ msg = self.conn.recv(1024)
+ except PermissionError as exc:
+ self.skipTest(repr(exc))
self.assertEqual(msg, MSG)
def _testStream(self):