mirror of
https://github.com/python/cpython
synced 2024-10-04 18:47:53 +00:00
gh-119461: Fix ThreadedVSOCKSocketStreamTest (#119465)
Add socket.VMADDR_CID_LOCAL constant. 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).
This commit is contained in:
parent
be1dfccdf2
commit
e94dbe4ed8
|
@ -160,8 +160,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():
|
||||
|
@ -520,8 +520,6 @@ def clientTearDown(self):
|
|||
@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'):
|
||||
|
@ -543,6 +541,9 @@ def clientSetUp(self):
|
|||
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 = socket.VMADDR_CID_LOCAL
|
||||
self.cli.connect((cid, VSOCKPORT))
|
||||
|
||||
def testStream(self):
|
||||
|
@ -2515,6 +2516,7 @@ def testVSOCKConstants(self):
|
|||
socket.SO_VM_SOCKETS_BUFFER_MAX_SIZE
|
||||
socket.VMADDR_CID_ANY
|
||||
socket.VMADDR_PORT_ANY
|
||||
socket.VMADDR_CID_LOCAL
|
||||
socket.VMADDR_CID_HOST
|
||||
socket.VM_SOCKETS_INVALID_VERSION
|
||||
socket.IOCTL_VM_SOCKETS_GET_LOCAL_CID
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add ``socket.VMADDR_CID_LOCAL`` constant. Patch by Victor Stinner.
|
|
@ -7596,6 +7596,7 @@ socket_exec(PyObject *m)
|
|||
ADD_INT_CONST(m, "SO_VM_SOCKETS_BUFFER_MAX_SIZE", 2);
|
||||
ADD_INT_CONST(m, "VMADDR_CID_ANY", 0xffffffff);
|
||||
ADD_INT_CONST(m, "VMADDR_PORT_ANY", 0xffffffff);
|
||||
ADD_INT_CONST(m, "VMADDR_CID_LOCAL", 1);
|
||||
ADD_INT_CONST(m, "VMADDR_CID_HOST", 2);
|
||||
ADD_INT_CONST(m, "VM_SOCKETS_INVALID_VERSION", 0xffffffff);
|
||||
ADD_INT_CONST(m, "IOCTL_VM_SOCKETS_GET_LOCAL_CID", _IO(7, 0xb9));
|
||||
|
|
Loading…
Reference in a new issue