Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_socketserver.cpython-310.pyc

o

0�i�G�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlmZddlmZddlmZej�d�dZejZeed	�Ze	�ed
�Zeed�Ze	�ed�Zd
d�ZejZejjfdd�Zer�er�Gdd�de
j e
j!�Z"Gdd�de
j e
j#�Z$ej%dd��Z&Gdd�de	j'�Z(Gdd�de	j'�Z)Gdd�de
j*�Z+Gdd�de
j,�Z-Gdd �d e
j.e+�Z/er�Gd!d"�d"e
j e+�Z0Gd#d$�d$e	j'�Z1Gd%d&�d&e	j'�Z2e3d'kr�e	�4�dSdS)(z
Test suite for socketserver.
�N)�
reap_children�verbose)�	os_helper)�
socket_helper)�threading_helperZnetworkshello world
�AF_UNIXzrequires Unix sockets�forkzrequires forkingcCsttd�rt�|�dSdS)z7Call signal.alarm when it exists (i.e. not on Windows).�alarmN)�hasattr�signalr	)�n�r
�=/opt/alt/python310/lib64/python3.10/test/test_socketserver.py�signal_alarm"s
�rcCs6t|ggg|�\}}}||vr|�|�Std|f��)Nztimed out on %r)�_real_selectZrecv�RuntimeError)Zsockr�timeout�r�w�xr
r
r�receive*s
rc@�eZdZdS)�ForkingUnixStreamServerN��__name__�
__module__�__qualname__r
r
r
rr2�rc@r)�ForkingUnixDatagramServerNrr
r
r
rr6rrc
csZ�t��}|dkrt�d�zzdVWn�Wtjj|dd�dStjj|dd�w)zBTests that a custom child process is not waited on (Issue 1540386)r�HN)Zexitcode)�osr�_exit�test�supportZwait_process)Ztestcase�pidr
r
r�simple_subprocess;s�

�&r%c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zej	d
d��Z
dd
�Zdd�Zdd�Z
dd�Zedd��Zedd��Zedd��Zeedd���Zdd�Zdd�Zed d!��Zed"d#��Zed$d%��Zeed&d'���Zej	d(d)��Zd*d+�Zd,d-�Zd.d/�Zd0S)1�SocketServerTestzTest all socket servers.cCstd�d|_g|_dS)N�<r)rZ	port_seed�
test_files��selfr
r
r�setUpMs
zSocketServerTest.setUpc	CsLtd�t�|jD]}zt�|�Wq
tyYq
wg|jdd�<dS�Nr)rrr(r �remove�OSError)r*�fnr
r
r�tearDownRs
�zSocketServerTest.tearDowncCs4|tjkr	tdfSd}tjd|d�}|j�|�|S)Nrzunix_socket.)�prefix�dir)�socketZAF_INET�HOST�tempfileZmktempr(�append)r*�protor2r/r
r
r�pickaddr]s
zSocketServerTest.pickaddrc
Cs�Gdd�d|�}Gdd�d|�}trtd�z|||�}Wnty9}z|�d|||f�WYd}~nd}~ww|�|j|j���|S)Nc@�eZdZdd�ZdS)z.SocketServerTest.make_server.<locals>.MyServercSs|�|���N)Z
close_request�r*�request�client_addressr
r
r�handle_errorjs
z;SocketServerTest.make_server.<locals>.MyServer.handle_errorN)rrrr>r
r
r
r�MyServeri�r?c@r9)z/SocketServerTest.make_server.<locals>.MyHandlercSs|j��}|j�|�dSr:)�rfile�readline�wfile�write)r*�liner
r
r�handleos
z6SocketServerTest.make_server.<locals>.MyHandler.handleN�rrrrFr
r
r
r�	MyHandlernr@rHzcreating serverz!Cannot create server (%s, %s): %s)r�print�PermissionErrorZskipTest�assertEqual�server_addressr3Zgetsockname)r*�addr�svrcls�hdlrbaser?rH�server�er
r
r�make_serverhs���zSocketServerTest.make_servercCs�|�|�|j�||�}|j}trtd|�td|�tjd||jddid�}d|_	|�
�tr4td�td	�D]}trAtd
|�||j|�q8trNtd�|��|�
�|��|�d|j���trqt|tj�rq|�|j�trytd
�dSdS)NzADDR =zCLASS =z
%s serving�
poll_interval�{�G�z�?��name�target�kwargsTzserver running�ztest clientzwaiting for server����done)rRr8�address_familyrLrrI�	threading�Thread�
serve_forever�daemon�start�range�shutdown�join�server_closerKr3�fileno�HAVE_FORKING�
isinstance�socketserver�ForkingMixInZassertFalseZactive_children)r*rNrOZtestfuncrPrM�t�ir
r
r�
run_server}s4�

�zSocketServerTest.run_servercCs�t�|tj��5}|�|�|�t�t|d�}}|r.d|vr.t|d�}||7}|r.d|vs|�|t�Wd�dS1s?wYdS�N�d�
)r3�SOCK_STREAM�connect�sendall�TEST_STRrrK�r*r7rM�sZbuf�datar
r
r�stream_examine�s


�"�zSocketServerTest.stream_examinecCs�t�|tj��@}tr|tjkr|�|�|��|�t|�t|d�}}|r9d|vr9t|d�}||7}|r9d|vs*|�	|t�Wd�dS1sJwYdSrn)
r3Z
SOCK_DGRAM�HAVE_UNIX_SOCKETSrZbindr8ZsendtortrrKrur
r
r�
dgram_examine�s
�"�zSocketServerTest.dgram_examinecC�|�tjtj|j�dSr:)rmri�	TCPServer�StreamRequestHandlerrxr)r
r
r�test_TCPServer���zSocketServerTest.test_TCPServercCr{r:)rmriZThreadingTCPServerr}rxr)r
r
r�test_ThreadingTCPServer�rz(SocketServerTest.test_ThreadingTCPServercC�Bt|��|�tjtj|j�Wd�dS1swYdSr:)r%rmriZForkingTCPServerr}rxr)r
r
r�test_ForkingTCPServer��
�"�z&SocketServerTest.test_ForkingTCPServercCr{r:)rmri�UnixStreamServerr}rxr)r
r
r�test_UnixStreamServer���z&SocketServerTest.test_UnixStreamServercCr{r:)rmriZThreadingUnixStreamServerr}rxr)r
r
r�test_ThreadingUnixStreamServer�r�z/SocketServerTest.test_ThreadingUnixStreamServercCs@t|��|�ttj|j�Wd�dS1swYdSr:)r%rmrrir}rxr)r
r
r�test_ForkingUnixStreamServer�s
�"�z-SocketServerTest.test_ForkingUnixStreamServercCr{r:)rmriZ	UDPServer�DatagramRequestHandlerrzr)r
r
r�test_UDPServer�rzSocketServerTest.test_UDPServercCr{r:)rmriZThreadingUDPServerr�rzr)r
r
r�test_ThreadingUDPServer�rz(SocketServerTest.test_ThreadingUDPServercCr�r:)r%rmriZForkingUDPServerr�rzr)r
r
r�test_ForkingUDPServer�r�z&SocketServerTest.test_ForkingUDPServercCr{r:)rmri�UnixDatagramServerr�rzr)r
r
r�test_UnixDatagramServer�r�z(SocketServerTest.test_UnixDatagramServercCr{r:)rmriZThreadingUnixDatagramServerr�rzr)r
r
r� test_ThreadingUnixDatagramServer�r�z1SocketServerTest.test_ThreadingUnixDatagramServercCs|�ttj|j�dSr:)rmrrir�rzr)r
r
r�test_ForkingUnixDatagramServer�s�z/SocketServerTest.test_ForkingUnixDatagramServercCs�Gdd�dtj�}Gdd�dtj�}g}td�D]}|tdf|�}tjd|jdd	id
�}d|_|�	||f�q|D]\}}|�
�|��q9|D]\}}|��|�
�qHdS)Nc@r)z0SocketServerTest.test_shutdown.<locals>.MyServerNrr
r
r
rr?�r?c@r)z1SocketServerTest.test_shutdown.<locals>.MyHandlerNrr
r
r
rrHr�rH�rzMyServer servingrSrTrUT)rir|r}rbr4r]r^r_r`r6rarcrdre)r*r?rHZthreadsrlrvrkr
r
r�
test_shutdown�s&�

�zSocketServerTest.test_shutdowncCs4Gdd�dtjtj�}|tdfdd��}|��dS)Nc@r)z9SocketServerTest.test_close_immediately.<locals>.MyServerNrr
r
r
rr?r�r?rcS�dSr:r
r
r
r
r�<lambda>sz9SocketServerTest.test_close_immediately.<locals>.<lambda>)ri�ThreadingMixInr|r4re)r*r?rPr
r
r�test_close_immediatelysz'SocketServerTest.test_close_immediatelyc	CsNtd�D] }|�t��t�tdftj�Wd�n1swYqdS)NirZ)rb�assertRaises�
OverflowErrorrir|r4r})r*rlr
r
r�test_tcpserver_bind_leaks
����z)SocketServerTest.test_tcpserver_bind_leakcCsHt�tdftj��}Wd�n1swY|�d|j���dS)NrrZ)rir|r4r}rKr3rf)r*rPr
r
r�test_context_manager)s
��z%SocketServerTest.test_context_managerN)rrr�__doc__r+r0r8rRrZreap_threadsrmrxrzr~r��requires_forkingr��requires_unix_socketsr�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr&JsJ
"








r&c@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Ze	dd
��Z
e	dd��Zdd�ZdS)�ErrorHandlerTestz�Test that the servers pass normal exceptions from the handler to
    handle_error(), and that exiting exceptions like SystemExit and
    KeyboardInterrupt are not passed.cCst�tj�dSr:)r�unlink�TESTFNr)r
r
rr05szErrorHandlerTest.tearDowncC�tt�|jdd�dS�NT��handled)�BaseErrorTestServer�
ValueError�check_resultr)r
r
r�test_sync_handled8�z"ErrorHandlerTest.test_sync_handledcCsB|�t��tt�Wd�n1swY|jdd�dS�NFr�)r��
SystemExitr�r�r)r
r
r�test_sync_not_handled<s
�z&ErrorHandlerTest.test_sync_not_handledcCr�r�)�ThreadingErrorTestServerr�r�r)r
r
r�test_threading_handledAr�z'ErrorHandlerTest.test_threading_handledcCsPt���}tt�|jdd�|�|jt�Wd�dS1s!wYdSr�)rZcatch_threading_exceptionr�r�r�ZassertIs�exc_type)r*�cmr
r
r�test_threading_not_handledEs

"�z+ErrorHandlerTest.test_threading_not_handledcCr�r�)�ForkingErrorTestServerr�r�r)r
r
r�test_forking_handledL�z%ErrorHandlerTest.test_forking_handledcCr�r�)r�r�r�r)r
r
r�test_forking_not_handledQr�z)ErrorHandlerTest.test_forking_not_handledcCsLttj��}dd|}|�|��|�Wd�dS1swYdS)N�Handler called
�Error handled
)�openrr�rK�read)r*r��log�expectedr
r
rr�Vs"�zErrorHandlerTest.check_resultN)
rrrr�r0r�r�r�r�r�r�r�r�r
r
r
rr�0s

r�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)r�csp||_t��tdft�t�|j��Wd�n1swYz
|��W|�	�n|�	�w|�
�dSr,)�	exception�super�__init__r4�
BadHandlerr3�create_connectionrL�handle_requestre�	wait_done)r*r���	__class__r
rr�]s�
zBaseErrorTestServer.__init__cCs<ttjd��}|�d�Wd�dS1swYdS)N�ar�)r�rr�rD)r*r<r=r�r
r
rr>hs"�z BaseErrorTestServer.handle_errorcCr�r:r
r)r
r
rr�l�zBaseErrorTestServer.wait_done)rrrr�r>r��
__classcell__r
r
r�rr�\sr�c@r9)r�cCsBttjd��
}|�d�Wd�n1swY|j�d��)Nr�r�z
Test error)r�rr�rDrPr�)r*r�r
r
rrFqs�zBadHandler.handleNrGr
r
r
rr�pr@r�cs0eZdZ�fdd�Z�fdd�Zdd�Z�ZS)r�cs t��|_t�j|i|��dSr:)r]�Eventr[r�r��r*�pos�kwr�r
rr�ys
z!ThreadingErrorTestServer.__init__cs t�j|i|��|j��dSr:)r��shutdown_requestr[�setr�r�r
rr�}sz)ThreadingErrorTestServer.shutdown_requestcCs|j��dSr:)r[�waitr)r
r
rr��sz"ThreadingErrorTestServer.wait_done)rrrr�r�r�r�r
r
r�rr�wsr�c@r)r�Nrr
r
r
rr��r�r�c@seZdZdd�Zdd�ZdS)�SocketWriterTestcCs�Gdd�dtj�}t�tdf|�}|�|j�t�|jtjtj	�}|�|�
|j�Wd�n1s4wY|��|�
|jtj�|�|j|j�dS)Nc@r9)z-SocketWriterTest.test_basics.<locals>.HandlercSs*|j|j_|j��|j_|j��|j_dSr:)rCrPrf�wfile_filenor<�request_filenor)r
r
rrF�s
z4SocketWriterTest.test_basics.<locals>.Handler.handleNrGr
r
r
r�Handler�r@r�r)rir}r|r4�
addCleanuprer3r\rq�IPPROTO_TCPrrrLr�ZassertIsInstancerC�io�BufferedIOBaserKr�r�)r*r�rPrvr
r
r�test_basics�s��zSocketWriterTest.test_basicscstj�td��Gdd�dtj�}t�tdf|��|��j	�t
����fdd�}t�tj|�}|�tjtj|�d�d�t
�
��������fdd�}t
j|d	�}|�����|��|��jt���|��d
�|��jd�|��jtjj�|��tjjd�dS)
N�pthread_killc@r9)z,SocketWriterTest.test_write.<locals>.HandlercSs>|j�d�|j_|j��|j_dtjj	}|j�|�|j_
dS)N�write data
�)rCrDrP�sent1rArB�receivedr"r#�
SOCK_MAX_SIZE�sent2)r*Z	big_chunkr
r
rrF�sz3SocketWriterTest.test_write.<locals>.Handler.handleNrGr
r
r
rr��r@r�rcs���dSr:)r�)Zsignum�frame)�interruptedr
r�signal_handler�sz3SocketWriterTest.test_write.<locals>.signal_handlerc	s�t��jtjtj�}|�Q|�d��3}|��j�|���|�d�|�	d�	��t
j��jt
d�d�r7nq(t|�	���Wd�n1sHwYWd�dSWd�dS1s`wYdS)N�rb�client response
roT�)r)r3r\rqr�ZmakefilerrrLrBrsr�r�SIGUSR1r��float�len)rv�reader�r�Zmain_threadr�Z	received2Z	response1rPr
r�
run_client�s�

�P�z/SocketWriterTest.test_write.<locals>.run_client)rWr�r�ro)r"r#Z
get_attributerrir}r|r4r�rer]r�r��	get_identr^rar�rdrKr�r�r�r�r�)r*r�r�Zoriginalr�Z
backgroundr
r�r�
test_write�s*zSocketWriterTest.test_writeN)rrrr�r�r
r
r
rr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�MiscTestCasecCsRg}tt�D]}|�d�stt|�}t|dd�dkr|�|�q|�tj|�dS)N�_rri)r2ri�
startswith�getattrr6ZassertCountEqual�__all__)r*r�rVZ
mod_objectr
r
r�test_all�s


�zMiscTestCase.test_allcCshGdd�dtj�}|tdftj�}t�|jtj�}|�|j�|�	�|�
�|�|jd�|�
�dS)Nc@s eZdZdd�ZdZdd�ZdS)zSMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServercSsdS)NFr
r;r
r
r�verify_request�r�zbMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.verify_requestrcSs |jd7_tj�||�dS)Nr�)�shutdown_calledrir|r�)r*r<r
r
rr��szdMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.shutdown_requestN)rrrr�r�r�r
r
r
rr?�sr?rr�)rir|r4r}r3r\rqrrrL�closer�rKr�re)r*r?rPrvr
r
r�4test_shutdown_request_called_if_verify_request_false�s	zAMiscTestCase.test_shutdown_request_called_if_verify_request_falsec	Cs�Gdd�dtjtj�}|tdftj�}td�D]}t�|j��|�	�Wd�n1s.wYq|�
t|j�d�|�
�dS)z�
        In #37193, users reported a memory leak
        due to the saving of every request thread. Ensure that
        not all threads are kept forever.
        c@r)z2MiscTestCase.test_threads_reaped.<locals>.MyServerNrr
r
r
rr?�r�r?r�
N)rir�r|r4r}rbr3r�rLr�Z
assertLessr�Z_threadsre)r*r?rPrr
r
r�test_threads_reaped�s
��z MiscTestCase.test_threads_reapedN)rrrr�r�r�r
r
r
rr��s
r��__main__)5r��
contextlibr�r Zselectrr3r5r]ZunittestriZtest.supportr"rrrrrr#Zrequiresrtr4r
ryZ
skipUnlessr�rgr�rrZ
SHORT_TIMEOUTrrjr�rr�r�contextmanagerr%ZTestCaser&r�r|r�ZBaseRequestHandlerr�r�r�r�r�r�r�mainr
r
r
r�<module>sh
�
��
g,�M2�