1- from __future__ import print_function
2- from __future__ import absolute_import
3-
41import os
5- import stat
62import tempfile
73
84import gevent
9- from gevent import socket
10- from gevent import backdoor
11-
125import gevent .testing as greentest
6+ from gevent import backdoor
7+ from gevent import socket
138from gevent .testing .params import DEFAULT_BIND_ADDR_TUPLE
149from gevent .testing .params import DEFAULT_CONNECT
1510
11+
1612def read_until (conn , postfix ):
1713 read = b''
1814 assert isinstance (postfix , bytes )
@@ -64,15 +60,25 @@ def tearDown(self):
6460 gevent .sleep () # let spawned greenlets die
6561 super (Test , self ).tearDown ()
6662
63+ def _server_listen_argument (self ):
64+ return DEFAULT_BIND_ADDR_TUPLE
65+
6766 def _make_and_start_server (self , * args , ** kwargs ):
68- server = backdoor .BackdoorServer (DEFAULT_BIND_ADDR_TUPLE , * args , ** kwargs )
67+ server = backdoor .BackdoorServer (self . _server_listen_argument () , * args , ** kwargs )
6968 server .start ()
7069 return server
7170
71+ def _connection_arguments (self , server ):
72+ return ((DEFAULT_CONNECT , server .server_port ),)
73+
74+ def _socket_arguments (self ):
75+ return ()
76+
7277 def _create_connection (self , server ):
73- conn = SocketWithBanner ()
74- conn . connect (( DEFAULT_CONNECT , server . server_port )) # pylint:disable=not-callable
78+ conn = SocketWithBanner (* self . _socket_arguments () )
79+
7580 try :
81+ conn .connect (* self ._connection_arguments (server )) # pylint:disable=not-callable
7682 banner = self ._wait_for_prompt (conn )
7783 except :
7884 conn .close ()
@@ -143,7 +149,8 @@ def test_builtins(self):
143149 msg = "locals() unusable: %s..." % response )
144150
145151 def test_switch_exc (self ):
146- from gevent .queue import Queue , Empty
152+ from gevent .queue import Empty
153+ from gevent .queue import Queue
147154
148155 def bad ():
149156 q = Queue ()
@@ -167,20 +174,23 @@ def bad():
167174 'switching out, then throwing in\n Got Empty\n switching out\n switched in\n >>> ' ,
168175 response )
169176
170-
177+ @greentest .skipUnless (
178+ hasattr (socket , 'AF_UNIX' ),
179+ "Needs AF_UNIX support"
180+ )
171181class TestUnixSocket (Test ):
172182 def setUp (self ):
173- super (TestUnixSocket , self ).setUp ()
183+ super ().setUp ()
174184 # Create a temporary file for the Unix socket
175185 self .unix_socket_path = tempfile .mktemp ()
176186
177187 def tearDown (self ):
178188 # Clean up the Unix socket file
179189 if os .path .exists (self .unix_socket_path ):
180190 os .unlink (self .unix_socket_path )
181- super (TestUnixSocket , self ).tearDown ()
191+ super ().tearDown ()
182192
183- def _make_and_start_server (self , * args , ** kwargs ):
193+ def _server_listen_argument (self ):
184194 # Use the Unix socket for the BackdoorServer
185195 listener = socket .socket (socket .AF_UNIX , socket .SOCK_STREAM )
186196 try :
@@ -189,24 +199,13 @@ def _make_and_start_server(self, *args, **kwargs):
189199 except Exception as ex :
190200 listener .close ()
191201 raise RuntimeError (f"Failed to bind Unix socket at { self .unix_socket_path } : { ex } " )
192- server = backdoor .BackdoorServer (listener , * args , ** kwargs )
193- server .start ()
194- gevent .sleep (0.5 )
195- return server
196-
197- def _create_connection (self , server ):
198- # Connect to the Unix socket
199- conn = SocketWithBanner (socket .AF_UNIX , socket .SOCK_STREAM )
200- conn .connect (self .unix_socket_path )
201- try :
202- banner = self ._wait_for_prompt (conn )
203- except :
204- conn .close ()
205- raise
202+ return listener
206203
207- conn . banner = banner
208- return conn
204+ def _connection_arguments ( self , server ):
205+ return ( self . unix_socket_path ,)
209206
207+ def _socket_arguments (self ):
208+ return (socket .AF_UNIX , socket .SOCK_STREAM )
210209
211210if __name__ == '__main__' :
212211 greentest .main () # pragma: testrunner-no-combine
0 commit comments