@@ -561,8 +561,8 @@ def clientTearDown(self):
561561@unittest .skipIf (WSL , 'VSOCK does not work on Microsoft WSL' )
562562@unittest .skipUnless (HAVE_SOCKET_VSOCK ,
563563 'VSOCK sockets required for this test.' )
564- @unittest .skipUnless (get_cid () != 2 , # VMADDR_CID_HOST
565- "This test can only be run on a virtual guest." )
564+ @unittest .skipIf (get_cid () == getattr ( socket , ' VMADDR_CID_HOST' , 2 ),
565+ "This test can only be run on a virtual guest." )
566566class ThreadedVSOCKSocketStreamTest (unittest .TestCase , ThreadableTest ):
567567
568568 def __init__ (self , methodName = 'runTest' ):
@@ -572,7 +572,16 @@ def __init__(self, methodName='runTest'):
572572 def setUp (self ):
573573 self .serv = socket .socket (socket .AF_VSOCK , socket .SOCK_STREAM )
574574 self .addCleanup (self .serv .close )
575- self .serv .bind ((socket .VMADDR_CID_ANY , VSOCKPORT ))
575+ cid = get_cid ()
576+ if cid in (socket .VMADDR_CID_HOST , socket .VMADDR_CID_ANY ):
577+ cid = socket .VMADDR_CID_LOCAL
578+ try :
579+ self .serv .bind ((cid , VSOCKPORT ))
580+ except OSError as exc :
581+ if exc .errno == errno .EADDRNOTAVAIL :
582+ self .skipTest (f"bind() failed with { exc !r} " )
583+ else :
584+ raise
576585 self .serv .listen ()
577586 self .serverExplicitReady ()
578587 self .serv .settimeout (support .LOOPBACK_TIMEOUT )
0 commit comments