Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/__pycache__/test_socketserver.cpython-34.pyc

�
g fQ+�
@sdZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Zddl
mZm
Z
mZyddlZWnek
r�dZYnXejjd�dZejjZeed�Zejed�Zeed�Zejed	�Zd
d�ZejZdd
d�Zer�Gdd�de	je	j�Z Gdd�de	je	j!�Z"nej#dd��Z$ejed�Gdd�dej%��Z&Gdd�dej%�Z'e(dkrej)�ndS)z
Test suite for socketserver.
�N)�
reap_children�reap_threads�verboseZnetworkshello world
ZAF_UNIXzrequires Unix sockets�forkzrequires forkingcCs#ttd�rtj|�ndS)z7Call signal.alarm when it exists (i.e. not on Windows).�alarmN)�hasattr�signalr)�n�r
�;/opt/alt/python34/lib64/python3.4/test/test_socketserver.py�signal_alarm"sr�cCsQt|ggg|�\}}}||kr:|j|�Std|f��dS)Nztimed out on %r)�_real_selectZrecv�RuntimeError)Zsockr	Ztimeout�r�w�xr
r
r�receive*s!
rc@seZdZdS)�ForkingUnixStreamServerN)�__name__�
__module__�__qualname__r
r
r
rr2src@seZdZdS)�ForkingUnixDatagramServerN)rrrr
r
r
rr6srccsitj�}|dkr(tjd�ndVtj|d�\}}|j||�|jd|�dS)Nr�H�iH)�osr�_exit�waitpid�assertEqual)Ztestcase�pidZpid2Zstatusr
r
r�simple_subprocess;sr z!Threading required for this test.c@s?eZdZdZdd�Zdd�Zdd�Zdd	�Zed
d��Z	dd
�Z
dd�Zdd�Zdd�Z
edd��Zedd��Zedd��Zeedd���Zdd�Zdd�Zed d!��Zejd"d#��Zd$d%�Zed&d'��Zd(d)�Zd*S)+�SocketServerTestzTest all socket servers.cCs td�d|_g|_dS)N�<r)rZ	port_seed�
test_files)�selfr
r
r�setUpKs
	zSocketServerTest.setUpcCsbtd�t�x7|jD],}ytj|�Wqtk
rFYqXqWg|jdd�<dS)Nr)rrr#r�remove�OSError)r$�fnr
r
r�tearDownPs

	zSocketServerTest.tearDowncCsO|tjkrtdfSd}tjddd|�}|jj|�|SdS)Nr�prefixzunix_socket.�dir)�socketZAF_INET�HOST�tempfileZmktempr#�append)r$�protor+r(r
r
r�pickaddr[s
zSocketServerTest.pickaddrcCsnGdd�d|�}Gdd�d|�}tr?td�n|||�}|j|j|jj��|S)Nc@seZdZdd�ZdS)z.SocketServerTest.make_server.<locals>.MyServercSs|j|�|j��dS)N)Z
close_request�server_close)r$ZrequestZclient_addressr
r
r�handle_errorhs

z;SocketServerTest.make_server.<locals>.MyServer.handle_errorN)rrrr3r
r
r
r�MyServergsr4c@seZdZdd�ZdS)z/SocketServerTest.make_server.<locals>.MyHandlercSs#|jj�}|jj|�dS)N)Zrfile�readlineZwfile�write)r$�liner
r
r�handlensz6SocketServerTest.make_server.<locals>.MyHandler.handleN)rrrr8r
r
r
r�	MyHandlermsr9zcreating server)r�printr�server_addressr,Zgetsockname)r$�addr�svrcls�hdlrbaser4r9�serverr
r
r�make_serverfs
zSocketServerTest.make_serverc	Cs=|j|j|j�||�}|j}trMtd|�td|�ntjdd|d|jdidd6�}d	|_	|j
�tr�td
�nx:td�D],}tr�td|�n||j|�q�Wtr�td
�n|j�|j
�|j�|jd|jj��tr9td�ndS)NzADDR =zCLASS =�namez
%s serving�target�kwargsg{�G�z�?�
poll_intervalTzserver running�ztest clientzwaiting for server��done���)r@r1Zaddress_familyr;rr:�	threading�Thread�
serve_forever�daemon�start�range�shutdown�joinr2rr,�fileno)r$r=r>Ztestfuncr?r<�t�ir
r
r�
run_serverws4	
	
		





zSocketServerTest.run_servercCs�tj|tj�}|j|�|jt�t|d�}}x/|rsd|krst|d�}||7}qEW|j|t�|j�dS)N�ds
)r,ZSOCK_STREAMZconnectZsendall�TEST_STRrr�close)r$r0r<�s�buf�datar
r
r�stream_examine�s

zSocketServerTest.stream_examinecCs�tj|tj�}|jt|�t|d�}}x/|rid|krit|d�}||7}q;W|j|t�|j�dS)NrUs
)r,Z
SOCK_DGRAMZsendtorVrrrW)r$r0r<rXrYrZr
r
r�
dgram_examine�szSocketServerTest.dgram_examinecCs |jtjtj|j�dS)N)rT�socketserver�	TCPServer�StreamRequestHandlerr[)r$r
r
r�test_TCPServer�szSocketServerTest.test_TCPServercCs |jtjtj|j�dS)N)rTr]ZThreadingTCPServerr_r[)r$r
r
r�test_ThreadingTCPServer�sz(SocketServerTest.test_ThreadingTCPServercCs3t|��!|jtjtj|j�WdQXdS)N)r rTr]ZForkingTCPServerr_r[)r$r
r
r�test_ForkingTCPServer�s
z&SocketServerTest.test_ForkingTCPServercCs |jtjtj|j�dS)N)rTr]�UnixStreamServerr_r[)r$r
r
r�test_UnixStreamServer�sz&SocketServerTest.test_UnixStreamServercCs |jtjtj|j�dS)N)rTr]ZThreadingUnixStreamServerr_r[)r$r
r
r�test_ThreadingUnixStreamServer�sz/SocketServerTest.test_ThreadingUnixStreamServercCs0t|��|jttj|j�WdQXdS)N)r rTrr]r_r[)r$r
r
r�test_ForkingUnixStreamServer�s
	z-SocketServerTest.test_ForkingUnixStreamServercCs |jtjtj|j�dS)N)rTr]Z	UDPServer�DatagramRequestHandlerr\)r$r
r
r�test_UDPServer�szSocketServerTest.test_UDPServercCs |jtjtj|j�dS)N)rTr]ZThreadingUDPServerrgr\)r$r
r
r�test_ThreadingUDPServer�sz(SocketServerTest.test_ThreadingUDPServercCs3t|��!|jtjtj|j�WdQXdS)N)r rTr]ZForkingUDPServerrgr\)r$r
r
r�test_ForkingUDPServer�s
z&SocketServerTest.test_ForkingUDPServerc#sKtj�G�fdd�d�}|�t_ztjVWd�t_XdS)z<Mocks the select.select() call to raise EINTR for first callcs.eZdZdd�Z�fdd�ZdS)z9SocketServerTest.mocked_select_module.<locals>.MockSelectcSs
d|_dS)Nr)�called)r$r
r
r�__init__�szBSocketServerTest.mocked_select_module.<locals>.MockSelect.__init__csM|jd7_|jdkr?ttjtjtj���n
�|�SdS)NrF)rkr'�errnoZEINTRr�strerror)r$�args)�
old_selectr
r�__call__�s!zBSocketServerTest.mocked_select_module.<locals>.MockSelect.__call__N)rrrrlrqr
)rpr
r�
MockSelect�srrN)�select)r$rrr
)rpr�mocked_select_module�s	
z%SocketServerTest.mocked_select_modulecCsJ|j��8}|jtjtj|j�}|j|jd�WdQXdS)NrF)rtrTr]r^r_r[Z
assertGreaterrk)r$Zmock_selectrr
r
r�test_InterruptServerSelectCall�s
z/SocketServerTest.test_InterruptServerSelectCallc
CsGdd�dtj�}Gdd�dtj�}g}xmtd�D]_}|tdf|�}tjddd	|jd
idd6�}d
|_|j	||f�qEWx(|D] \}}|j
�|j�q�Wx(|D] \}}|j�|j
�q�WdS)Nc@seZdZdS)z0SocketServerTest.test_shutdown.<locals>.MyServerN)rrrr
r
r
rr4sr4c@seZdZdS)z1SocketServerTest.test_shutdown.<locals>.MyHandlerN)rrrr
r
r
rr9sr9r
rrAzMyServer servingrBrCg{�G�z�?rDT)r]r^r_rNr-rIrJrKrLr/rMrOrPr2)r$r4r9ZthreadsrSrXrRr
r
r�
test_shutdowns"			

zSocketServerTest.test_shutdowncCsJxCtd�D]5}|jt��tjtdftj�WdQXq
WdS)NirFrH)rNZassertRaises�
OverflowErrorr]r^r-r_)r$rSr
r
r�test_tcpserver_bind_leak1sz)SocketServerTest.test_tcpserver_bind_leakN)rrr�__doc__r%r)r1r@rrTr[r\r`ra�requires_forkingrb�requires_unix_socketsrdrerfrhrirj�
contextlib�contextmanagerrtrurvrxr
r
r
rr!Gs,
r!c@seZdZdd�ZdS)�MiscTestCasecCs}g}x]tt�D]O}|jd�stt|�}t|dd�dkrb|j|�qbqqW|jtj|�dS)N�_rr])r+r]�
startswith�getattrr/ZassertCountEqual�__all__)r$ZexpectedrAZ
mod_objectr
r
r�test_all>szMiscTestCase.test_allN)rrrr�r
r
r
rr~<sr~�__main__)*ryr|rrsrr,rmr.Zunittestr]Ztest.supportZtestrrrrI�ImportErrorZsupportZrequiresrVr-rZHAVE_UNIX_SOCKETSZ
skipUnlessr{ZHAVE_FORKINGrzrrrZForkingMixInrcrZUnixDatagramServerrr}r ZTestCaser!r~r�mainr
r
r
r�<module>sL
			�